实验二

1.预备知识:Debug的使用

Debug在执行“d 1000:0”时,会将段地址送入ds中,Debug的命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行

2.实验任务

 (1)使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。

   mov  ax , ffff

   mov  ds , ax

   mov  ax , 2200

   mov  ss , ax

   mov  sp , 0100

   mov  ax , [0]                       ;ax=3130

   add  ax , [2]                        ;ax=6462

   mov  bx , [4]                       ;bx=3534

   add  bx , [6]                        ;bx=6C6A

   push  ax                             ;sp=00FEH  ;修改的内存单元的地址是2200:00FE内容为6462

   push  bx                             ;sp=00FCH  ;修改的内存单元的地址是2200:00FC内容为6C6A

   pop  ax                               ;sp=00FEH  ;ax=6C6A

   pop  bx                               ;sp=0100H  ;bx=6462

   push  [4]                             ;sp=00FE    ;修改的内存单元的地址是2200:00FE内容为3534

   push  [6]                             ;sp=00FC    ;修改的内存单元的地址是2200:00FC内容为3736

   具体的操作步骤见下图:

用r和t命令分别执行

(2)为什么2000:0~2000:f中内容会改变?

在用T命令单步执行mov  ax ,2000后,显示出当前CPU各个寄存器的状态和下一步要执行的指令:mov  ss,ax;在用T命令执行mov ss,ax的时候,

下一条指令mov sp,10也紧接着执行了。他是修改栈段寄存器ss的指令。一个T命令执行两条指令,mov ss,ax和mov sp,10.而mov sp,10是让安排

2000:0000——2000:000F为栈空间,初始化栈顶。所以2000:0000——2000:000f里面数据会变。

转载于:https://www.cnblogs.com/XQskm/p/9892553.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值