汇编实验2


预备知识

1),2)

"D 1000:0"负责让用户看到1000:0开始的内存单元,该命令的实质是CPU执行了一段程序,这段程序负责把"1000"这个段地址送入某个段寄存器。这样CPU才能从段寄存器中读出"1000"。

那么问题来了,"1000"被放入了哪个寄存器呢?

SS不可以,它负责指向栈顶。

CS不可以,他负责指向代码段的段地址。

答案是DS。事实上,A,E,R,U指令对段寄存器的控制都是通过DS实现的。


从上图中我们可以发现D命令改变后DS的值似乎并未改变,是书上错了吗?不,事实上这据指令确实有修改ds,但是执行-d 1000:0其实也就是是执行一个小小的程序,可以看做是发生一个中断,ds在这个小程序中被改变,但指令执行完之后必然是会恢复为原来的值的

3)

Debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行

实验任务

1)

ax=58EA

ax=5CCA

bx=30F0

bx=6022


内存单元[num]的段地址为寄存器DS值,偏移地址为num

SP=00FE,修改的内存单元为220FE,其内容为5CCA

SP=00FC,修改的内存单元为220FC,其内容为6021

SP=00FA,修改的内存单元为220FE,其内容为6021

SP=00FC,修改的内存单元为22100其内容为5CCA


验证了push,pop操作每次控制两个字节(一个字)的说法。

SP=00FE,修改的内存单元为220FE,其内容为30F0

SP=00FC,修改的内存单元为220FC,其内容为2F31


注意高低字节单元存放的字节。

2)

中断问题(待补充)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容