|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:code,ds:data
data 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,[si]
mov es:[di],al ;将单个字符由data段,移到目标即es:0000处
mov byte ptr es:[di+1],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都没问题的......
本帖最后由 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,[si]
mov es:[di],al ;将单个字符由data段,移到目标即es:0000处
mov byte ptr es:[di+1],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
|
|