21,459
社区成员
发帖
与我相关
我的任务
分享
;将字符串'welcome to masm!'复制到他后面的数据区中
assume cs:codesg, ds:datasg
datasg segment
db 'welcome to masm!'
;db '................'
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov si,0
mov cx,8
s:mov ax,0[si]
mov 32[si],ax ;这儿可以直接写32 为什么结果显示源字符串都改变啦啊 ?? 而且目标字符串也没有完全显示正确?
add si,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
assume cs:codesg, ds:datasg
datasg segment
db 'welcome to masm!'
;db '................' ;这里应该是目标区域吧?为什么要注释掉?
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov si,0
mov cx,8
s:mov ax,0[si]
mov 32[si],ax
;这儿可以直接写32 为什么结果显示源字符串都改变啦啊 ?? 而且目标字符串也没有完全显示正确?
;此时ds:32[si]所指的单元恰好是下一句add si,2,所以第一个字符把代码修改了,往下执行的过程就改变了。
add si,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start