汇编语言(王爽)实验2 用机器指令和汇编指令编程

关于预备知识的总结

  • 在D,A,E,U命令中提供好了一种符合CPU机理的格式即可以直接使用段寄存器名称加上偏移地址来访问内存。如:在这里插入图片描述
  • 在T命令执行任何关于修改栈段寄存器SS的指令的时候,其后的关于SP的修改指令会跟着直接执行。如课本所说:在这里插入图片描述
    仔细观察我们可以看到在执行完mov ss,ax 之后sp的数据直接发生改变,mov sp,100不见了,实际上是直接执行了。
    至于发生此现象的原因是因为中断机制,后面课本会学到。

实验内容

  1. 使用debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。
    源程序如下:
    在这里插入图片描述
    接着我们单步执行结果如下所示
    在这里插入图片描述
    这里执行mov ss,ax ,由下一步可以看到,sp直接发生改变而mov sp,0100这行代码没有显示在下一步执行。
    在这里插入图片描述
    这里执行push ax可以看到sp会 -2,执行pop ax 后sp会 +2
    在这里插入图片描述
    在这里插入图片描述
    以上就是实验的全部结果,分析实验结果我们对实验内容进行填空,如下:
mov ax,ffff
mov ds,ax
mov ax,2200
mov ss,ax
mov sp,0100
mov ax,[0] ;ax=C0EAH
add ax,[2] ;ax=C0FCH
mov bx,[4] ;bx=30F0H
add bx,[6] ;bx=6021H
push ax    ;sp=00FEH  修改的内存单元的地址是2200:FE到FF内容为:C0FCH
push bx    ;sp=00FCH  修改的内存单元的地址是2200:FC到FD内容为:6021H
pop ax     ;sp=00FEH  ax=6021H  
pop bx     ;sp=0100H  bx=C0FCH
push [4]   ;sp=00FEH  修改的内存单元的地址是2200:FE到FF内容为:30F0H
push [6]   ;sp=00FCH  修改的内存单元的地址是2200:FC到FD内容为:2F31H
  1. 仔细观察3.19中的实验过程,然后分析:为什么2000:0-2000:f中的内容会发生改变?
    在这里插入图片描述
    可以看到,此实验是将2000:0~2000:f当作栈来使用,当CPU去执行其他命令时,在这个栈中会暂时存放cs:ip的地址,还会存放es的数据,至于具体为什么,我还不了解,我的猜测是这个栈里还会存放一些其他寄存器的值,比如标志寄存器,但具体是什么相信随着继续学习,会了解的越来越多。
  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值