汇编实验2


预备知识

1),2)

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

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

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

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

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


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

3)

汇编实验2_第2张图片
Debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行

实验任务

1)

ax=58EA

ax=5CCA

bx=30F0

bx=6022


汇编实验2_第3张图片
内存单元[num]的段地址为寄存器DS值,偏移地址为num

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

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

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

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


汇编实验2_第4张图片
验证了push,pop操作每次控制两个字节(一个字)的说法。

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

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


汇编实验2_第5张图片
注意高低字节单元存放的字节。

2)

中断问题(待补充)

你可能感兴趣的:(汇编实验2)