在汇编器中将字符转换为十六进制
Converting character to hex in assembler
所以现在我正在努力从键盘读取单个字符并显示其十六进制值。目前我相信我得到了正确的十六进制值,但它没有正确显示。例如,'k' 是十六进制的 6F,但它显示为“6;”。我知道必须在我的 DIS16 程序中进行更正,但我不确定何时以及该做什么。如果有人可以提供帮助,我将不胜感激。
DIS16 PROC
mov cx, 0
mov bx, 16
numdiv:
mov dx, 0
div bx
push dx
add cx, 1
cmp ax, 0
jne numdiv
dispnum:
pop dx
add dl, 30h
mov ah, 02h
int 21h
loop dispnum
RET
DIS16 ENDP
由于字符 'A' 到 'F' 没有紧跟在 '9' 之后,您必须为此进行调整。
</p>
<pre><code>; as you have it
pop dx
add dl, 30h
cmp dl, '9'
jbe skip
add dl, 7 ; bump up to 'A' - 'F'
skip:
; print it... as you were
所以现在我正在努力从键盘读取单个字符并显示其十六进制值。目前我相信我得到了正确的十六进制值,但它没有正确显示。例如,'k' 是十六进制的 6F,但它显示为“6;”。我知道必须在我的 DIS16 程序中进行更正,但我不确定何时以及该做什么。如果有人可以提供帮助,我将不胜感激。
DIS16 PROC
mov cx, 0
mov bx, 16
numdiv:
mov dx, 0
div bx
push dx
add cx, 1
cmp ax, 0
jne numdiv
dispnum:
pop dx
add dl, 30h
mov ah, 02h
int 21h
loop dispnum
RET
DIS16 ENDP
由于字符 'A' 到 'F' 没有紧跟在 '9' 之后,您必须为此进行调整。
</p>
<pre><code>; as you have it
pop dx
add dl, 30h
cmp dl, '9'
jbe skip
add dl, 7 ; bump up to 'A' - 'F'
skip:
; print it... as you were