ycg 发表于 2012-11-29 13:22:36

实验9的问题

   这是实验9小弟自己写的代码,但是运行后屏幕上不显示'welcome to masm!'。还望各位高手不吝赐教,在下感激不尽!

assume cs:code,ds:data
data segment
        db 'welcome to masm!'
       
data ends

code segment
start:        mov ax,data
                mov ds,ax
                mov ax,0b872h
                mov es,ax
                mov bx,0
                mov cx,16
                mov si,0
                mov di,1
               
        s:mov al,ds:
                mov es:,al
                mov al,02h
                mov es:,al
               
               
                mov al,ds:
                mov es:,al
                mov al,24h
               
                mov es:,al
               
                mov al,ds:
                mov es:,al
                mov ah,71h
               
                mov es:,al
               
                add bx,1
                add si,2
                add di,2
                loop s
               
       
        mov ax,4c00h
        int 21h
code ends
end start

lyoal 发表于 2012-11-29 13:22:37

assume cs:code,ds:data

data segment

      db 'welcome to masm!'

      
data ends

code segment
start:      mov ax,data

                mov ds,ax

                mov ax,0b872h

                mov es,ax

                mov bx,0                   ;索引行

                mov cx,16

                mov si,0                  ;索引原数据列

                mov di,0                  ;索引目的地址数据列,字符放在偶数列,颜色放在奇数列
               
               
      s:      mov al,ds:      ;将原数据传送给AL寄存器

                mov es:,al ;第一行,BX为0

                mov ah,02h

                mov es:,ah

               
                add bx,0a0h      ;第二行,BX+0A0H

                mov es:,al

                mov ah,24h

                mov es:,ah

               
                add bx,0a0h       ;第三行,BX+0A0H

                mov es:,al

                mov ah,71h
                mov es:,ah

                add si,1

                add di,2
               
                mov bx,0          ;为下一列循环准备

                loop s

      
      mov ax,4c00h

      int 21h

code ends

end start



;建议编写程序前,可以参考书上的提示,理清思路再编写,这样写起来跟着自己的思路就清晰多了
;我的思路可能跟楼主稍有点不一样,楼主的你的代码冗余代码太多,看的我有点儿头大。
;首先,BX来索引行,SI用来索引原数据列,DI用来索引目的数据列(其中偶数为字符,奇数为颜色),AH传送颜色
;再者,原数据的传送只需要一行代码即可,不必行行都传送一次,另外楼主的颜色和字符都只用了AL寄存器,太省了

;代码改动太大,请楼主参考一下吧,比较一下你的代码,希望对你有帮助。加油!

pediyzhi 发表于 2012-11-29 21:39:14

第三行的显示有点问题.你查下.另外显示不了的原因可以看我的帖子http://bbs.fishc.com/thread-24222-1-1.html
页: [1]
查看完整版本: 实验9的问题