题目(1):程序如下,如要使程序中的jmp指令执行后,cs:ip指向程序的第一条指令,在datasg段中应该定义哪些数据。
分析:要使jmp指令执行后cs:ip指向第一条指令,则cs值不变,而ip值应该为零。而jmp指令是从ds:[bx+1]处提取一个字的值给ip。所以应该在datasg段至少定义两个字,且他们的第二个字应该为零。
源代码:
调试过程:
题目2:程序如下,
源代码:
调试过程:
题目3:用debug查看内存,结果如下:
2000:1000 BE 00 06 00 00 00 ......
则此时,cpu执行下列指令:
后,(cs)=? ,(ip)=?
解答:jmp dword ptr 内存单元地址 这条指令执行后将内存单元地址的高地址字单元的值赋给cs,而把低地址字单元的值赋给ip。
所以在执行jmp dword ptr es:[1000h]完这条指令时,把es:[1000h+2h]这个字单元的值赋给cs,cs=0006。把es:[1000h】处的值赋给ip,即ip=00BE。