汇编实现十进制转十六进制
时间: 2023-06-12 16:04:56 浏览: 114
下面是汇编实现十进制转十六进制的代码,假设十进制数存储在 AX 中,十六进制数存储在 BX 中:
```
MOV BX, 0 ; 初始化十六进制数为 0
MOV CX, 0 ; 初始化计数器为 0
LoopStart:
MOV DX, 0 ; 初始化余数为 0
DIV BYTE [Decimal] ; 除以 16,余数存储在 DX 中
ADD DL, 30H ; 将余数转换为 ASCII 码
CMP DL, 3AH ; 如果余数大于等于 10,则需要加上 7
JAE AddSeven
JMP NotAddSeven
AddSeven:
ADD DL, 7
NotAddSeven:
MOV [Hex], DL ; 将余数存储到十六进制数中
INC CX ; 计数器加 1
CMP AX, 0 ; 如果 AX 中的数已经被转换完了,就跳出循环
JE LoopEnd
MOV AL, AH ; 将商存储到 AL 中,继续循环
JMP LoopStart
LoopEnd:
MOV AH, 02H ; 调用 DOS 中断 21H 输出十六进制数
MOV DL, '0'
INT 21H
MOV DL, 'X'
INT 21H
DEC CX
LoopPrint:
MOV DL, [Hex + CX - 1] ; 从高位到低位输出十六进制数
INT 21H
DEC CX
CMP CX, 0
JNE LoopPrint
```
其中,[Decimal] 和 [Hex] 是存储十进制数和十六进制数的内存地址。
阅读全文