. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验九字符串显示问题  [已解决] 回复[ 3次 ]   点击[ 316次 ]  
minghunjason
[帖 主]   [ 发表时间:2009-08-26 16:57 ]   [引用]   [回复]   [ top ] 
荣誉值:14
信誉值:2
注册日期:2009-08-13 10:23
实验九我好像还没搞懂什么意思!到底题目是要求我们将‘welcome to masm!’这句话分三次用不同的颜色全部显示出来,还是将其中的单词分别用不同的颜色显示?还有就是字符串是不是要求要一次性全部显示在一行,我的程序每次屏幕上只能显示一个字符,用t单步执行,跟着屏幕一起上翻,狂晕!还请各位高手帮忙解惑,感激不尽。下面附上程序
ssume cs:code,ds:date
data segment
  db 'welcome to masm!'
data ends 

code segment
  start:mov ax,47224
        mov es,ax
        mov ax,data
        mov ds,ax
        mov bx,64
        mov si,0
        mov cx,7
        
     s: mov al,ds:[si]
        mov ah,01000010b
        mov word ptr es:[bx],ax 
        add bx,2
        inc si
        dec cx                  ;显示welcome
        jcxz s1
        jmp short s
          
     s1:mov ah,11000010b
        mov cx,2
      s0:
        mov al,ds:[si]      
        mov word ptr es:[bx],ax ; 显示to
        inc si
        add bx,2
        jcxz s3
        loop s0

     s3:mov ah,01110001b
        mov cx,7
      s01:
        mov al,ds:[si]
        mov word ptr es:[bx],ax  显示masm!
        inc si
        add bx,2
        loop s01
        mov ax,4c00h
        int 21h

code ends
end start
minghunjason
[第1楼]   [ 回复时间:2009-08-26 17:00 ]   [引用]   [回复]   [ top ] 
荣誉值:14
信誉值:2
注册日期:2009-08-13 10:23
不好意思程序复制出现点错误
assume cs:code,ds:data
data segment 
  db 'welcome to masm!' 
data ends  

code segment 
  start:mov ax,47224 
        mov es,ax 
        mov ax,data 
        mov ds,ax 
        mov bx,64 
        mov si,0 
        mov cx,7 
         
     s: mov al,ds:[si] 
        mov ah,01000010b 
        mov word ptr es:[bx],ax  
        add bx,2 
        inc si 
        dec cx                  ;显示welcome 
        jcxz s1 
        jmp short s 
           
     s1:mov ah,11000010b 
        mov cx,2 
      s0: 
        mov al,ds:[si]       
        mov word ptr es:[bx],ax ; 显示to 
        inc si 
        add bx,2 
        jcxz s3 
        loop s0 

     s3:mov ah,01110001b 
        mov cx,7 
      s01: 
        mov al,ds:[si] 
        mov word ptr es:[bx],ax  ;显示masm! 
        inc si 
        add bx,2 
        loop s01 
        mov ax,4c00h 
        int 21h 

code ends 
end start
minghunjason
[第2楼]   [ 回复时间:2009-08-26 17:41 ]   [引用]   [回复]   [ top ] 
荣誉值:14
信誉值:2
注册日期:2009-08-13 10:23
原来可以用g命令显示全行,改进后的程序
assume cs:code,ds:data
data segment
  db 'welcome to masm!'
data ends 

code segment
  start:mov ax,47224
        mov es,ax
        mov ax,data
        mov ds,ax
        mov bx,64
        mov si,0
        mov cx,7
        
     s: mov al,ds:[si]
        mov ah,01000010b
        mov word ptr es:[bx],ax
        add bx,2
        inc si
        dec cx
        jcxz s1
        jmp short s
          
     s1:mov ah,11000010b
        mov cx,2
      s0:
        mov al,ds:[si+1]
        mov word ptr es:[bx+2],ax
        inc si
        add bx,2
        jcxz s3
        loop s0

     s3:mov ah,01110001b
        mov cx,5
      s01:
        mov al,ds:[si+2]
        mov word ptr es:[bx+4],ax
        inc si
        add bx,2
        loop s01
        mov ax,4c00h
        int 21h

code ends
end start
minghunjason
[第3楼]   [ 回复时间:2009-08-28 09:47 ]   [引用]   [回复]   [ top ] 
荣誉值:14
信誉值:2
注册日期:2009-08-13 10:23
此贴由 贴主 于 [ 2009-08-28 09:47 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved