此题有多个答案,但最终解答离不开shanguianti 的意见:“mov用在寄存器之间传送数据的指令是2个字节,用在寄存器和立即数之间是3个字节,用在寄存器和ES:[BX]这之间是3个字节。inc指令占用一个字节,loop s占用两个字节”
答案1:mov ax,cs (占2个字节)
mov cx,17
答案2:mov ax,code (占3个字节)
mov cx,18
答案3:mov ax,cs 或mov ax,code
把mov cx, 改成 sub cx,5(因为在载入程序时,cx保存程序的长度,减去5是为减去mov ax,4c00h和
int 21h的长度)
总结:
此题王爽老师的目的是:
1、理解CS和CODE的关联
2、CS保存程序的代码段,即“复制的是什么,从哪里到哪里”
3、熟记某些指令的长度,即“复制的是什么,有多少个字节”,具体参考shanguianti 的意见。
4、理解CX在载入程序后保存程序的长度。
5、理解数据和代码对CPU来说是没区别的,只要CS:IP指向的就是代码 |