狂潮丶 发表于 2013-7-10 19:44:57

检测点3.1

为什么我3.1 (2)答案到了
1.mov ax,我调试出来的和书上的有区别。
2.(1)需要用e命令修改0:0 1f为书上的内容。那么第二个呢?


求3.1用debug调试的详细解答。

Dardy 发表于 2013-7-10 19:44:58

前面的问题没看懂,说下后面的问题。
在debug里,先设置内存和寄存器的值,然后用T命令一步一步执行,实际执行了以下代码:
mov        ax,6622h
jmp        0FF0h:0100h
mov        ax,2000h
mov        ds,ax
mov        ax,ds:
mov        ax,ds: ;整个过程中通过改变DS和CS的值,代码段和数据段实现了互换,两都没有本质区别;
;物理地址由段基址乘16再加偏移量表示,不同的基础加上不同的偏移量,可表示同一个物理地址,如1000h:0和0FF0h:100h
;同表示10000H;当前要执行的代码存放地址由CS:IP指出,CS存放代码所在段的基址,IP存放其相对于基址的偏移量。


下图列出了每执行一步,相关寄存器的变化:


下图跟据题意,设置寄存器和内存的值:


狂潮丶 发表于 2013-7-11 15:21:37

Dardy 发表于 2013-7-10 19:44 static/image/common/back.gif
前面的问题没看懂,说下后面的问题。
在debug里,先设置内存和寄存器的值,然后用T命令一步一步执行,实际 ...

{:5_91:}谢谢你的答案。
页: [1]
查看完整版本: 检测点3.1