【问题标题】:Converting character to hex in assembler在汇编程序中将字符转换为十六进制
【发布时间】:2015-03-06 02:26:36
【问题描述】:

所以现在我正在从键盘读取单个字符并显示其十六进制值。目前我相信我得到了正确的十六进制值,但它没有正确显示。例如,“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

【问题讨论】:

  • "'k' 是十六进制的 6F"。不,“k”是十六进制的 6B。

标签: assembly hex character base data-conversion


【解决方案1】:

由于字符“A”到“F”不会紧跟“9”,因此您必须对此进行调整。

; 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

【讨论】:

  • 正是我想要的,非常感谢!
猜你喜欢
  • 2012-06-02
  • 2012-04-02
  • 2023-01-31
  • 2022-11-14
  • 2015-06-02
  • 2016-08-21
  • 2019-05-16
  • 2014-03-19
  • 2018-01-31
相关资源
最近更新 更多