. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验9,B800的值  [待解决] 回复[ 1次 ]   点击[ 289次 ]  
l13127131w
[帖 主]   [ 发表时间:2016-03-20 13:26 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2016-03-20 13:03
不明白为什么要-g,才能看到data段的值传入了b800段。
不应该是执行完mov es:[si+720H],al后,data段的"w"传入后,-d就应该马上可以查看的到吗???


assume cs:code

data segment

                  db 'welcome to masm!'        ;十六进制为77 65 6C 63 6F 6D 65 20-74 6F 20 6D 61 73 6D 21

data ends

code segment

start:   
                  mov ax,data
                  
                  mov ds,ax                    ;数据段段地址给ds   welcome to masm!   (数据段地址0770H给ds)
                  
                  mov ax,0B800H
                  
                  mov es,ax                    ;显存段地址ds                          (显存段地址B800H给es)
                  
                  mov cx,10H                   ;循环16次                              (每次给一个值,一个颜色。三排一起给)
                  
                  mov si,0H                    ;定义显存段偏移值
                  
                  mov di,0H                    ;定义数据段偏移值         
                  
s:                
                  mov al,ds:[di]               ;定义数据段的第一个字符给al            (将"w"十六进制77H给al)  ax变成B877H

                  inc di                       ;做好准备,为下次取数据段值
                  
                  mov es:[si+720H],al          ;将值al给显存(720H第一排)5 5 5 5 5,一行160字节五行800字节,三行welcome的话第一行就在12行(行中间),第12行分成 50列 14列 32列 14列 50列,第65列就是中间(列中间),但是汇编应该从0开始,所以是800+800+160+64=720H
                  
                  mov es:[si+7c0H],al          ;将值al给显存(7c0H第二排)
                  
                  mov es:[si+860H],al          ;将值al给显存(860H第二排)                                                  
                  
                  inc si                       ;si+1,目的是跳到该值得颜色处
                  
                  mov al,2h
                  
                  mov es:[si+720H],al          ;将绿色给显存
                  
                  mov al,14h
                  
                  mov es:[si+7c0H],al          ;将绿底红色给显存
                  
                  mov al,71h
                  
                  mov es:[si+860H],al          ;将白底蓝色给显存
                  
                  inc si                       ;si+1,目的是接着跳,跳到到下一个值(值、颜色、值、颜色。。。)
                  
                  loop s
                  
                  mov ax,4c00h

                  int 21h
code ends

end start
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved