汇编网首页登录博客注册
flash_ps的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
文章收藏
友情链接

[2008-07-02 10:34] 实验十三(1)

data ends
code segment
start:
        mov ax,cs
        mov ds,ax
        mov si,offset s

        mov ax,0
        mov es,ax
        mov di,200h
        
        mov cx,offset s2-offset s
        cld
        rep movsb  ;以上是设置ds:si与es:di后进行复制

        mov word ptr es:[4*7ch],200h  ;设置7ch的入口地址
        mov word ptr es:[4*7ch+2],0
        
        mov dh,10                ;行号
        mov dl,10                ;列号
        mov cl,2                ;颜色
        mov ax,data
        mov ds,ax                     ;ds:si字符串首地址
        mov si,0
        int 7ch
        mov ax,4c00h
        int 21h


s:        mov ax,0b800h
        mov es,ax
        mov bx,10*160+10*2    ;算出显示地址
        mov cx,0
s0:        mov cl,ds:[si]
        jcxz s1
        mov es:[bx],cl
        mov es:[bx+1],10000010b
        add bx,2
        inc si
        jmp s0
s1:        iret
s2:        nop        

code ends
end start

说明:本程序本不规范。因为调用者int 7ch者并不知7ch号具体内容,只要求知道它的用途与相应的接口(如dh,dl,cl分别代表什么)就可了。本人偷懒些,不写这么多了。
对于cl(颜色)接口:如[cl=1(红色)cl=2(蓝色)cl=3(绿色)] 我们不想改变7ch号的代码(子程序也一样),但又能实现(用C语言描述cl只取 1--3)
if(cl=1)  color=红;
else if(cl=2)  color=蓝色;
else color=绿;

在汇编中实现上面不是很难,但颜色并不是仅有这几种,要实现的颜色越多,程序越难。不知大家有什么好的办法解决。
评论次数(2)  |  浏览次数(578)  |  类型(汇编作业) |  收藏此文  | 

[  xiaochong   发表于  2008-07-02 19:11  ]

看了博主的程序,也运行了一下,很显然博主的程序并不能执行,不但少了
assume cs:code

data segment
  db 'Welcome to masm',0

而且连  mov es:[bx+1], 10000010b 这句代码没有指定是否为字节,很显然,博主的意思是要传进一个字节的,但这样怎么能运行呢?起码也要这样吧 
mov byte ptr es:[bx+1], 10000010b 

但颜色并不是仅有这几种,要实现的颜色越多,程序越难。
---------------------
看到博主有这样的疑问,很明显没有认真看题目的要求啊,题目中已经说了,用cl来传递颜色值,而且博主也没有用dh,dl来传递行号,与列号,反而传递的是,
mov ax,data 
mov ds,ax 

ax来传递的为数据段的地址,

博主的这种学习态度是不值得学习的,很不认为,对自己要求也不严格,而且没有在计算机上验证自己的程序,这样对理解汇编语言是很不利的,希望博主能进一步的改正,,,

[  flash_ps   发表于  2008-07-02 22:54  ]

前面部分可能是复制只不留意造成的。
-------------------
但而且连  mov es:[bx+1], 10000010b 这句代码没有指定是否为字节,很显然,博主的意思是要传进一个字节的,但这样怎么能运行呢?起码也要这样吧  
------------------
认该没错吧.这个10000010b不是也经可以说明是字了吗. 且我的编释器都可以通过运行 

mov byte ptr es:[bx+1], 10000010b

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码