1、将下面程序保存为t1.asm文件,将其生成可执行文件t1.exe。

assume cs:codeseg
codeseg segment

       mov ax,2000H
       mov ss,ax
       mov sp,0
       add sp,10
       pop ax
       pop bx
       push ax
       push bx
       pop ax
       pop bx
       
       mov ax,4c00H
       int 21H
codeseg ends
end

2、用debug跟踪t1.exe的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容。

3、PSP的头两个字节是CD20,用Debug加载t1.exe查看PSP的内容。

 

1、

汇编语言 第四章 实验

2、

       mov ax,2000H      (ax:2000H)
       mov ss,ax             (ss:2000H)
       mov sp,0              (sp:0,栈顶:2000)
       add sp,10             (sp:000A————这里将10看作10进制了,栈顶:0)
       pop ax                  (ax:0000,sp:000C,栈顶内容还是0)
       pop bx                  (bx:0000,sp:000E,栈顶内容还是0)
       push ax                (sp:000C,栈顶内容还是0)
       push bx                (sp:000A,栈顶内容还是0)
       pop ax                 (sp:000C,栈顶内容还是0)
       pop bx                 (sp:000E,栈顶内容还是0)

3、加载过程序后,DS指向程序的内存,CS指向程序的指令,两者差16,算上偏移地址,差256,中间应该就是PSP,所以PSP的起始地址应该是DS:0

汇编语言 第四章 实验

相关文章:

  • 2021-04-09
  • 2022-12-23
  • 2022-01-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-04
  • 2022-12-23
猜你喜欢
  • 2021-04-10
  • 2021-04-24
  • 2021-05-10
  • 2021-04-23
  • 2021-08-10
  • 2021-10-11
  • 2021-11-08
相关资源
相似解决方案