3)下面的程序功能是将“mov ax,4c00h"之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。
assume cs:code
code segment
mov ax, code ;或mov ax, cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx, 18h ;或mov cx, 17h ;或sub cx,5
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end以上是实验的内容。
,我在来说一下我的理解,cs:ip指向程序的第一条,段地址在cs内,所以把cs的值附给ds,用bx里的内容作偏移地址,bx初始化是0,所以第一个地址是cs:bx。我们如何知道复制的内容最后一个地址是多少?我们就需要知道这个程序的长度。在这里我提出2个疑问,如果ip里面的值不是从0开始的话,哪如何办呢?如何知道这个程序程序地址是连续的? |