额,或许是逻辑错误
assume cs:code,ds:datadata segment
db 'Welcome to masm!'
data ends
code segment
start:
mov ax,data
mov ds,ax ;将ds视作数据段
mov si,0 ;索引数据'Welcome to masm!'的偏移地址设为0
mov di,0 ;数据所应该放置的位置的偏移地址设为0
mov cx,16 ;循环16次
mov ax,0b800h
mov es,ax ;将es视作目标处的段地址,并将它的值赋为b800h
r: mov al,
mov es:,al ;将单个字符由data段,移到目标即es:0000处
mov byte ptr es:,00000010b ;将控制字符的属性也移到es:0001处
inc si ;si递增1
add di,2 ;di递增2
loop r ;循环16次
mov ax,4c00h
int 21h
code ends
end start
想询问各位大佬,为什么'Welcome to masm!'写不进es:0000处,编译链接debug都没问题的......{:5_100:} 本帖最后由 jackz007 于 2019-3-5 20:05 编辑
代码没有问题,只要加上清屏或等待键盘输入便可以看到效果:
assume cs:code,ds:data
data segment
db 'Welcome to masm!'
data ends
code segment
start:
mov ah,6h ;功能号
mov al,0
mov ch,0 ;左上角行号
mov cl,0 ;左上角列号
mov dh,24 ;右下角行号
mov dl,79 ;右下角列号
int 10h ;清屏
mov ax,data
mov ds,ax ;将ds视作数据段
mov si,0 ;索引数据'Welcome to masm!'的偏移地址设为0
mov di,0 ;数据所应该放置的位置的偏移地址设为0
mov cx,16 ;循环16次
mov ax,0b800h
mov es,ax ;将es视作目标处的段地址,并将它的值赋为b800h
r: mov al,
mov es:,al ;将单个字符由data段,移到目标即es:0000处
mov byte ptr es:,00000010b ;将控制字符的属性也移到es:0001处
inc si ;si递增1
add di,2 ;di递增2
loop r ;循环16次
xor ah,ah
int 16h ;等待键盘输入
mov ax,4c00h
int 21h
code ends
end start 感谢大佬{:5_109:}
页:
[1]