assume cs:code
code segment
mov ax, code ;或mov ax, cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
sub cx,5
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
用这种方法,不用计算前面占了多少内存,你只需要知道后面两句话占了5byte就行。
assume cs:code
code segment
mov ax,0020h
mov es,ax
mov bx,0
S: mov al,cs:[bx]
mov es:[bx],al
inc bx
loop S
mov ax,4c00h
int 21h
code ends
end
cx值是不需要设的,debug时候默认是程序的长度。安全空间0:200h~~0:2ffh,也没有问题。这段代码意思就是:在20:0 ~ 20:16这块区域用代码段cs:0 ~ CS:16填充。也就是把代码段全部内容复制到20:0 ~ 20:16这块区域(包括了mov ax,4c00h ;int 21h 这2句话)你可以对比着看 |