书本问题7.2是要求用si和di实现将字符串'welcome to masm!'复制到它后面的数据区中。源程序是:
assume cs:code,ds:data
data segment
db 'welcome to masm!'
db '................'
data ends
code segment
start: mov ax,data
mov ds,ax
mov si,0
mov di,16
mov cx,8
s: mov ax,[si]
mov [di],ax
add si,2
add di,2
loop s
mov ax,4c00h
int 21h
code ends
end start
我将程序写成:
assume cs:code,ds:data
data segment
db 'welcome to masm!'
db '................'
data ends
code segment
start: mov ax,data
mov ds,ax
mov si,0
mov di,16
mov cx,16
s: mov al,[si] ;这里应该是ax
mov [di],al ;这里应该是ax
inc si
inc di
loop s
mov ax,4c00h
int 21h
code ends
end start
不是说数据传送或运算时指令的两个操作对象的位数应该一致吗,为什么我这个错误的代码可以通过编译,且用debug 调试结果也是正确的呢?? |