下面的程序的功能是将“mov ax, 4c00h”之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。
assume cs:code
code segment
mov ax,--?
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,--?
s:mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
提示:
(1)复制的是什么?从哪里到哪里?
(2)复制的是什么?有多少个字节?你如何知道要复制的字节的数量?
具体方法:
1.先在第二个空那随便填一个数字,不要太大了
2.将程序编译链接,用Debug打开程序,U 一下,查找 mov ax,4C00H 的地址,这下你就知道那段需要被复制的代码实际有多长了吧?
3.将真正的长度填入第二个空
我想是因为大家写的程序不一样,所以才有的是17H有的是18H。
不同之处在这里
mov ax,cs
和
mov ax,code
第一个是2字节的,第二个是3字节的,你自己试试看。