skw 发表于 2014-8-30 00:33:29

关于以十六进制形式在屏幕中显示给定的byte型数据?

;请问下面两段程序可以这样改吗?
assume cs:code

code segment
start:mov al,0eh

      call wu
               
                mov ax,4c00h
                int 21h
       
;用al传递要显示的数据

wu:   jmp short s

      table db '0123456789ABCDEF'      ,字符表
               
s:      push bx
      push es
               
                mov ah,al
                shr ah,1
                shr ah,1
                shr ah,1
                shr ah,1            ;右移四得高四位值
                and al,00001111b      ;得低四位值
                mov bl,ah
                mov bh,0         
                mov ah,table   ; 段地址在cs中 指向字符串中的‘0’使得ah=30h(0的ASCII值是30h)
               
                mov bx,0b800h
                mov es,bx
                mov es:,ah   
               
                mov bl,al             ;bl=0eh
                mov bh,0
                mov al,table      ; 段地址在cs中 指向字符串中‘e’
                mov es:,al
               
                pop es
                pop bx
                ret
               
code ends
end start
问可以把上面绿色的代码改成下面的红色的代码吗?
assume cs:code

code segment
start:mov al,0eh

      call wu
               
                mov ax,4c00h
                int 21h
       
;用al传递要显示的数据

wu:   jmp short s

      table db '0123456789ABCDEF'
               
s:      push bx
      push es
               
                mov ah,0
                mov bl,ah
                mov bh,0          
                mov ah,table   
               
                mov bx,0b800h
                mov es,bx
                mov es:,ah   
               
                mov bl,al             ;bl=0eh
                mov bh,0
                mov al,table      
                mov es:,al
               
                pop es
                pop bx
                ret
               
code ends
end start

小靚同学Leon 发表于 2014-8-30 12:55:05

这个你自己可以调试的哦

skw 发表于 2014-8-31 22:22:52

小靚同学Leon 发表于 2014-8-30 12:55
这个你自己可以调试的哦

自己调试可以实现,但书上那样写有什么用意吗?

小靚同学Leon 发表于 2014-9-1 13:12:50

skw 发表于 2014-8-31 22:22
自己调试可以实现,但书上那样写有什么用意吗?

1. 红色跟绿色部分效果是一样的。
2. 是不是为了体现shr指令的作用?

skw 发表于 2014-9-1 13:53:29

小靚同学Leon 发表于 2014-9-1 13:12
1. 红色跟绿色部分效果是一样的。
2. 是不是为了体现shr指令的作用?

呵呵!!应该是向你说的吧!谢谢

gyixue 发表于 2014-9-1 21:57:07

绿色的部分和红色的部分结果不一样啊

gyixue 发表于 2014-9-1 21:59:16

红色部分的结果是BX被清零   绿色的部分BX等于al高四位
页: [1]
查看完整版本: 关于以十六进制形式在屏幕中显示给定的byte型数据?