目录 上一页 下一页 下一章

第5章 子程序和串处理 -81-






main
hexout


hexloop:



















hexout
code

call
cmp
jnz
mov
int
endp
proc
push
mov

push
mov
rol
push
and
xlat
mov
mov
int
pop
pop
loop
mov
mov
int
mov
int
pop
ret
endp
ends
end
hexout
al,ESCKEY
getkey
ax,4c00h
21h

near
ax
cx,2

cx
cl,4
al,cl
ax
al,0fh
ascii
dl,al
ah,2
21h
ax
cx
hexloop
dl,CR
ah,2
21h
dl,LF
21h
ax



main
;调用HEXOUT子过程
;是ESC键吗?
;不是ESC键,返回GETKEY处继续
;选择DOS API的4CH功能
;结束进程

;HEXOUT子过程
;保存AX寄存器
;显示2位十六进制数

;保存CX寄存器
;CL寄存器置入循环左移位数
;循环左移AL,将高4位与低4位交换
;暂存AX寄存器以备后面处理低4位
;屏蔽低4位,保留高4位
;取高4位对应十六进制数字的ASCII码
;将ASCII码送入DL寄存器
;选择DOS API的02功能
;输出DL寄存器中的字符
;取回AX寄存器
;取回CX寄存器
;处理低4位
;DL寄存器送入回车符
;选择DOS API的02功能
;显示回车符
;DL寄存器送入换行符
;显示换行符
;恢复AX寄存器的原值
;子过程返回



  先来讨论程序中出现的一个新指令--XLAT:
助记符:XLAT(Translate)
用 途:换码指令,将AL寄存器中的数据与存储器中数据进行交换
格 式:XLAT
    XLAT ADDR
执 行:AL中的数据被位于DS:[BX+AL]处的数据替代
  CPU执行此指令时会把AL中的数作为偏移量从BX指向的表中取出一字节数据并以此取代AL中的数据。这条指令有些绕,应用起来也有些麻烦:

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章