. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验9我想多显示一行就加了一段代码s4,可是运行完了还是显示三行的  [待解决] 回复[ 1次 ]   点击[ 207次 ]  
etangyushan
[帖 主]   [ 发表时间:2012-08-15 00:54 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-08-14 12:33
代码如下:
assume cs:code

data segment
                db 'welcome to masm!'
data ends

code segment

        start:   mov ax,data    
                         mov ds,ax         ;使标号data与ds连接
                         mov ax,0b800h
                         mov es,ax         ;把显存地址放入es
                         mov si,0          ;偏移地址置为0
                         mov di,10*160+80  ;由一行80个字符站160字节,可设第十行的第八十个字节,即为中间
                         mov cx,16         ;设置循环次数,根据data段的数据长度。
                         
           s1:   mov al,ds:[si]    ;把data段里的字符放入低地址
                         mov ah,00000010b  ;前景色为绿色,即字体为绿色
                                           ;由字符显示规则: 7     6 5 4     3      2 1 0
                                           ;                 BL    R G B     I      R G B
                               ;                 闪烁        背景           高亮         前景
                                                                                                 
                 mov es:[di],ax    ;把低地址和高地址合起来的数值放入显存,前面已经定义了es为存放显存地址的寄存器
                         inc si            ;偏移地址向后移动1个字节
             inc di            ;显存地址向后移动一个字节
                         inc di            ;要移动两个字节,做两次inc
                         loop s1           ;设置循环
                         
                         mov si,0          ;si置0
                         mov di,11*160+80  ;十一行的中间位置
                         mov cx,16         ;设置循环量
        
           s2:   mov al,ds:[si]
                 mov ah,00100100b  ;绿底红色
                         mov es:[di],ax    ;放入显存
                         inc si            ;偏移地址移动1
                         inc di            ;显存偏移地址移动
                         inc di            ;显存偏移地址移动
                         loop s2           ;设置循环变量
                                           
                                                           ;初始化存放偏移地址的寄存器
                         mov si,0          ;si置0
                         mov di,12*160+80  ;第十二行
                         mov cx,16
                         
           s3:   
                         mov al,ds:[si]
                 mov ah,10111100b
                         mov es:[di],ax
                         inc si
                         inc di
                         inc di
                         loop s3
                 
                         mov si,0
                         mov di,9*160+80
                         mov cx,16
                         
           s4:   mov al,ds:[si]
                         mov ah,01110001b
                         mov es:[di],ax
                         inc si
                         inc di
                         inc di
                         loop s4
                         
                         mov ax,4c00h
                         int 21h           ;查看完整的显示输入"-g 4c"
                         
code ends 

end start
fpamc
[第1楼]   [ 回复时间:2012-08-15 06:31 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36
你先打开cmd。然后挂载到文件所在文件夹。
然后cls清下屏。然后输入文件名回车。
(试下哈。)
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved