程序调试出来了,通过实验,我的做法:
assume cs:coderat
coderat segment
mov ax,cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,24
s:mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
coderat ends
end
其中第一步肯定是
mov ax,cs
当然,楼主这么写
mov ax,ds
add ax,0010H
其实就等同于我的mov ax,cs
( 因为(cs)=(ds)+0010h )
而至于问题:“如何知道复制的字节数量”
我参考shanguianti 的意见:“mov用在寄存器之间传送数据的指令是2个字节,用在寄存器和立即数之间是3个字节,用在寄存器和ES:[BX]这之间是3个字节。inc指令占用一个字节,loop s占用两个字节”
同时我也很赞同nasaga 的意见:“如果改写成 sub cx,_____ "
那么我们就会更少的计算复制的字节数量 |