|  | 
 
| 
assume cs:code,ds:data
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 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
 | 
 |