just_so_so 发表于 2011-12-3 18:57:23

王爽【汇编语言】第9章实验9 有点不懂请教大家

我检查了很多遍代码可是感觉不知道错哪在屏幕上就一次显示出3个'welcome to masm!'    后来打开就没出现过请教下是为什么?


assume cs:codesg

data segment
   db 'welcome to masm!'
data ends

codesg segment

   start:mov ax,0b800h
            mov ds,ax      ;使ds对准显存缓冲区段
          mov ax,data      
            mov es,ax      ;使es对准data段
                       
          mov bx,640h       ;640h表示在显示缓冲区的第10行的偏移
          sub si,si         ;si清零
          sub di,di         ;di清零
          mov ah,02h      ;将绿色字体的偏移放入ax的高8位
          mov cx,16         ;cx=16表示loop循环16次   
s0:         mov al,es:       ;data段中的字符放入ax的低8位
          mov ,ax   ;64表示第64列di表示相对的偏移从0开始增加直到15
               inc si                     ;si每次加1 以便取出data中的数据
          add di,2                ;di每次加2 以便将AX中的数据每次以2字节写入显存缓冲区
          loop s0
                       
        add bx,0a0H       ;bx加上a0h表示向下一行下数据
        sub si,si
        sub di,di      
        mov ah,24h      ;将绿底红色的字体属性放入ax的高八位
        mov cx,16            
s1:        mov al,es:
                mov ,ax
        inc si
        add di,2
        loop s1
                       
        add bx,0a0H
       sub si,si
        sub di,di      
        mov ah,71h      ;将白底蓝色的字体属性放入ax的高八位
        mov cx,16            
s2:        mov al,es:
                mov ,ax
        inc si
        add di,2
        loop s2
                       
codesg ends
end start
                       
                       

cfer 发表于 2011-12-3 20:22:51

楼主最好在codesg ends上面加上mov ax, 4c00h,int 21h,其他就没有什么错误了。还有要看在屏幕上显示的东西时最好用emu8086,别用系统自带的cmd。

api 发表于 2011-12-3 20:35:39

少个中断指令,还有楼主最好把要复制的数据放在ds段,配合movsb指令

just_so_so 发表于 2011-12-3 22:17:31

cfer 发表于 2011-12-3 20:22 static/image/common/back.gif
楼主最好在codesg ends上面加上mov ax, 4c00h,int 21h,其他就没有什么错误了。还有要看在屏幕上显示的东西 ...

谢谢这个确实忘写了还是太粗心啊

just_so_so 发表于 2011-12-3 22:18:56

api 发表于 2011-12-3 20:35 static/image/common/back.gif
少个中断指令,还有楼主最好把要复制的数据放在ds段,配合movsb指令

额多些提醒不过中断什么的还没学。。

zzmatrix 发表于 2011-12-3 22:35:12

本帖最后由 zzmatrix 于 2011-12-3 22:35 编辑

因为系统的cmd不是纯dos系统,如果你坚持用cmd的话,建议你按alt+enter把它全屏化了运行。试试。
页: [1]
查看完整版本: 王爽【汇编语言】第9章实验9 有点不懂请教大家