鱼C论坛

 找回密码
 立即注册
查看: 1788|回复: 2

实验9的问题

[复制链接]
发表于 2012-11-29 13:22:36 | 显示全部楼层 |阅读模式
2鱼币
   这是实验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:[bx]
                mov es:[si],al
                mov al,02h
                mov es:[di],al
                
                
                mov al,ds:[bx]
                mov es:[si+0a0h],al
                mov al,24h
                
                mov es:[di+0a0h],al
                
                mov al,ds:[bx]
                mov es:[si+140h],al
                mov ah,71h
                
                mov es:[di+140h],al
                
                add bx,1
                add si,2
                add di,2
                loop s
                
        
        mov ax,4c00h
        int 21h
code ends
end start

最佳答案

查看完整内容

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 ;索引原数据列 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 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:[si]        ;将原数据传送给AL寄存器

                mov es:[bx+di],al ;第一行,BX为0

                mov ah,02h

                mov es:[bx+di+1],ah

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

                mov es:[bx+di],al

                mov ah,24h

                mov es:[bx+di+1],ah

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

                mov es:[bx+di],al

                mov ah,71h
                mov es:[bx+di+1],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寄存器,太省了

;代码改动太大,请楼主参考一下吧,比较一下你的代码,希望对你有帮助。加油!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-11-29 21:39:14 | 显示全部楼层
第三行的显示有点问题.你查下.另外显示不了的原因可以看我的帖子http://bbs.fishc.com/thread-24222-1-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 00:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表