鱼C论坛

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

实验9的问题

[复制链接]
发表于 2012-11-29 13:22:36 | 显示全部楼层 |阅读模式
2鱼币
   这是实验9小弟自己写的代码,但是运行后屏幕上不显示'welcome to masm!'。还望各位高手不吝赐教,在下感激不尽!

  1. assume cs:code,ds:data
  2. data segment
  3.         db 'welcome to masm!'
  4.        
  5. data ends

  6. code segment
  7. start:        mov ax,data
  8.                 mov ds,ax
  9.                 mov ax,0b872h
  10.                 mov es,ax
  11.                 mov bx,0
  12.                 mov cx,16
  13.                 mov si,0
  14.                 mov di,1
  15.                
  16.         s:  mov al,ds:[bx]
  17.                 mov es:[si],al
  18.                 mov al,02h
  19.                 mov es:[di],al
  20.                
  21.                
  22.                 mov al,ds:[bx]
  23.                 mov es:[si+0a0h],al
  24.                 mov al,24h
  25.                
  26.                 mov es:[di+0a0h],al
  27.                
  28.                 mov al,ds:[bx]
  29.                 mov es:[si+140h],al
  30.                 mov ah,71h
  31.                
  32.                 mov es:[di+140h],al
  33.                
  34.                 add bx,1
  35.                 add si,2
  36.                 add di,2
  37.                 loop s
  38.                
  39.        
  40.         mov ax,4c00h
  41.         int 21h
  42. code ends
  43. 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 ;索引原数据列 ...
小甲鱼最新课程 -> https://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寄存器,太省了

;代码改动太大,请楼主参考一下吧,比较一下你的代码,希望对你有帮助。加油!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-6 09:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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