汇编两十进制数相加得到的结果若大于9显示十六进制数
时间: 2024-05-03 14:19:33 浏览: 87
汇编语言中,可以使用条件转移指令(如JZ、JNZ等)进行条件判断,实现根据结果大小的不同来选择不同的输出方式。
以下是一段示例代码,实现两个十进制数相加,如果结果大于9,则将结果转换为十六进制并输出:
```
MOV AX, 5 ; 第一个数
MOV BX, 7 ; 第二个数
ADD AX, BX ; 相加
CMP AX, 9 ; 判断是否大于9
JLE DECIMAL ; 如果不大于9,输出十进制结果
ADD AH, 06H ; 如果大于9,将高位加6
DAA ; 将结果调整为十六进制格式
JMP HEX ; 跳转到输出十六进制结果的代码
DECIMAL: ; 输出十进制结果
MOV AH, 02H ; 设置输出字符函数号
MOV DL, AH ; 将结果转换为ASCII码
ADD DL, 30H ; 加上30H得到十进制字符
INT 21H ; 输出字符
JMP END
HEX: ; 输出十六进制结果
MOV AH, 02H
MOV DL, AH
AND DL, 0FH ; 取低4位得到十六进制字符
CMP DL, 9 ; 如果是10~15,转换为A~F
JBE HEX_CHAR
ADD DL, 07H
HEX_CHAR:
ADD DL, 30H ; 加上30H得到十六进制字符
INT 21H
MOV DL, AH ; 取高4位重复上述过程
SHR DL, 4
AND DL, 0FH
CMP DL, 9
JBE HEX_CHAR
ADD DL, 07H
ADD DL, 30H
INT 21H
END:
```
这段代码中,首先将两个十进制数存入AX和BX寄存器中,然后使用ADD指令相加。接着,使用CMP指令比较结果是否大于9,如果不大于9,则跳转到DECIMAL标签处输出十进制结果;如果大于9,则使用ADD和DAA指令将结果调整为十六进制格式,并跳转到HEX标签处输出十六进制结果。在输出十六进制结果时,需要将结果的高4位和低4位分别转换为十六进制字符并输出。
阅读全文