实验五

Posted nanjinghuangsheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验五相关的知识,希望对你有一定的参考价值。

c教材 133 实验 5

将下面程序编译,连接,用DEBUG加载.跟踪

assume cs:code, ds:data, ss:stack
data segment
  dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h
data ends

stack segment
  dw 0, 0, 0, 0, 0, 0, 0, 0
stack ends

code segment
start:  mov ax,stack
        mov ss, ax
        mov sp,16
        
        mov ax, data
        mov ds, ax
        
        push ds:[0]
        push ds:[2]
        pop ds:[2]
        pop ds:[0]
        
        mov ax,4c00h
        int 21h

code ends
end start
技术分享图片

 


1 CPU执行程序,程序返回前DATA段的数据是多少?0123h ,0456h技术分享图片

 

2.CPU执行程序,程序返回前,CS=SS+1h;CS=DS+2h;SS=CS-1h;SS=ds+2h;ds=cs-2h;ds=ss-1;技术分享图片

 

3程序加载完后,CODE段地址X,则DATA段位X-2,,STACK段X-1;

(2)assume cs:code, ds:data, ss:stack
data segment
  dw 0123h, 0456h
data ends

stack segment
  dw 0, 0
stack ends

code segment
start:  mov ax,stack
        mov ss, ax
        mov sp,16
        
        mov ax, data
        mov ds, ax
        
        push ds:[0]
        push ds:[2]
        pop ds:[2]
        pop ds:[0]
        
        mov ax,4c00h
        int 21h

code ends
end start
1 CPU执行程序,程序返回前DATA段的数据是多少?  0123;0456 技术分享图片

.2CPU执行程序,程序返回前,CS=SS+1h;CS=DS+2h;SS=CS-1h;SS=ds+2h;ds=cs-2h;ds=ss-1;技术分享图片

3。程序加载完后,CODE段地址X,则DATA段位X-2,,STACK段X-1;

 4。对于name segment

name ends

如果段中的数据占N个字节,则程序加载后该段实际占有的空间为:如果N〉16x(x为正整数);则分配空间为X*16个字节空间

(3)assume cs:code, ds:data, ss:stack

code segment
start:  mov ax,stack
        mov ss, ax
        mov sp,16
        
        mov ax, data
        mov ds, ax
        
        push ds:[0]
        push ds:[2]
        pop ds:[2]
        pop ds:[0]
        
        mov ax,4c00h
        int 21h

code ends
data segment
  dw 0123h, 0456h
data ends

stack segment
  dw 0, 0,0,0
stack ends
end start
1 CPU执行程序,程序返回前DATA段的数据是多少?  0123;0456 技术分享图片

 

.2CPU执行程序,程序返回前,CS=SS-4h;CS=DS-3h;SS=CS+4h;SS=ds+1h;ds=cs+3h;ds=ss-1;技术分享图片

 

3。程序加载完后,CODE段地址X,则DATA段位X+3,,STACK段X+4;

 4如果END START改为end

那个可以执行?

技术分享图片

CODE段可以执行;如果将DATA,STACK段放在前面将不会一开始 执行CODE段;

 (5)

assume cs:code
a segment
  db 1,2,3,4,5,6,7,8
a ends

b segment
  db 1,2,3,4,5,6,7,8
b ends

c segment   
  db 0,0,0,0,0,0,0,0
c ends        
code segment
start:
       mov cx,8
       mov bx,0
      
      q: mov ax,a
         mov ds,ax
     mov dl,[bx]
    mov ax,b
        mov ds,ax
        add dl,[bx]
        mov ax,c
        mov ds,ax
        mov [bx],dl
        add bl,1
       loop q
     
      
code ends
end start

技术分享图片

不用栈 直接多次用DS将值赋予 C

(6)

assume cs:code
a segment
  dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends

b segment
  dw  0,0,0,0,0,0,0,0
b ends

code segment
start:
       mov ax,a
       mov ds,ax
       mov ax,b
       mov ss,ax
       mov sp,8
    mov cx,4
       mov bx,0
      s:
         add bx,2
         mov dl,[bx]
         sub bx,2
         mov al,[bx]
         mov dh,al
         add bx,4
         push dx
         loop s
       
code ends
end start

开始时:sp=8

技术分享图片

sp=16

 技术分享图片

结束时:sp=8

技术分享图片

SP=16

技术分享图片

 


技术分享图片

 

实验总结: 在这次实验中我多次将AX,BX,CX,DX,当成段寄存器使用编译无法进行,在实验6

前9个都是16位进制而不是10进制,但是在结果我发现将SP改为16和8时D命令出现不同 B栈在不同的SP下0的位置发生改变==;

 

 




















































































































































以上是关于实验五的主要内容,如果未能解决你的问题,请参考以下文章

2018-2019-2 20175306实验五《网络编程与安全》实验报告

计算机系统 实验五 Cache实验

2017-2018-2 20165209 实验五《网络编程与安全》实验报告

区块链技术与应用实验报告(实验五)

区块链技术与应用实验报告(实验五)

区块链技术与应用实验报告(实验五)