. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
主题 : :  请问我的实验9程序哪错了,改了一个下午也没改好,显示老是不正常  [待解决] 回复[ 17次 ]   点击[ 530次 ]  
kingsgg
[帖 主] [ 发表时间:2012-03-17 23:06 ] 
荣誉值:4
信誉值:6
注册日期:2012-02-25 16:01
assume cs:code
data segment
      db 'welcome to masm!'
      dw 3 dup (0)
data ends
code segment
start:
      mov ax,data
      mov ds,ax
      mov ss,ax
      mov sp,16h
      mov ax,0b800h
      mov es,ax
      mov bx,0
      mov bp,0
      mov si,6e0h
      mov cx,16
    s:push cx
      mov al,ds:[bx]
      mov ah,02h
      mov es:[si+bp],ax
      add bp,2
      inc bx
      loop s
    
    s0:pop cx
      push cx
      mov bx,0
      mov bp,0
      mov al,ds:[bx]
      mov ah,24h
      mov es:[si+0a0h+bp],ax
      add bp,2
      inc bx
      loop s0

   s1:pop cx
      mov bx,0
      mov bp,0
      mov al,ds:[bx]
      mov ah,71h
      mov es:[si+140h+bp],ax
      add bp,2
      inc bx
      loop s1

      mov ax,4c00h
      int 21h
code ends
end start

编译完后运行,在屏幕中间右边只显示出'welcome'这几个字,然后就是几个小方块,第二行就只有一个绿底的小方块,第三行也是一个白底的小方块.请大大们帮下忙,我到底哪出错了,我的系统是深度技术ghostxp_sp3极速纯净版_2011.12,感激不尽!!
kingsgg
[第9楼] [ 回复时间:2012-03-19 13:31 ] 
荣誉值:4
信誉值:6
注册日期:2012-02-25 16:01
我新写的程序,显示正常了,并且代码较少
assume cs:code  
data segment  
      db 'welcome to masm!'  
data ends 
code segment  
start:  
      mov ax,data  
      mov ds,ax               ;定义data段,这个也不用说了吧
       mov ax,0b800h             ;定义显示段
       mov es,ax  
      mov bx,0  
      mov bp,0  
      mov si,7C0h                ;以上定义好需要用的寄存器
       mov cx,16     
    s: mov al,ds:[bx]              ;放入DATA段的字节到AL
      mov es:[si+bp],al           
       mov es:[si+0a0h+bp],al  
       mov es:[si+140h+bp],al 
      mov ah,02h                   ;放入颜色到AH
       mov es:[si+1+bp],ah 
      mov ah,24h          ;将第二个颜色放入AH
      mov es:[si+0a1h+bp],ah
      mov ah,71h               ;将第三个颜色放入AH
      mov es:[si+141h+bp],ah
      inc bx
      add bp,2
      loop s  

      mov ax,4c00h  
      int 21h  
code ends  
end start 

这个显示成功,并且没用到栈,只用一个循环.
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved