汇编编写程序实现两个字节相乘并转换成十六进制显示结果(11H×12H结果)
时间: 2024-03-24 17:38:46 浏览: 33
以下是汇编语言实现两个字节相乘并转换成十六进制显示结果的程序:
```
ORG 100H
MOV AL, 11H ; 将第一个乘数11H存入AL寄存器
MOV BL, 12H ; 将第二个乘数12H存入BL寄存器
MUL BL ; 两个字节相乘,结果存入AX寄存器
MOV BH, 0 ; 将AH寄存器清零,保证结果在AX寄存器中
MOV DL, AH ; 将结果高位存入DL寄存器
MOV AH, 02H ; 设置打印字符的功能号
CMP DL, 0AH ; 判断高位是否大于等于10
JAE HEX_A ; 若大于等于10,跳转到HEX_A
ADD DL, 30H ; 将高位转换为ASCII码
JMP PRINT ; 打印结果并结束程序
HEX_A:
ADD DL, 37H ; 将高位转换为ASCII码
PRINT:
MOV DL, AH ; 将功能号存入DL寄存器
INT 21H ; 调用21H中断,打印结果
MOV AH, 4CH ; 设置功能号,结束程序
INT 21H ; 调用21H中断,结束程序
END
```
该程序的执行过程如下:
1. 将第一个乘数11H存入AL寄存器;
2. 将第二个乘数12H存入BL寄存器;
3. 使用MUL指令将AL和BL中的数相乘,结果存入AX寄存器;
4. 将AH寄存器清零,保证结果在AX寄存器中;
5. 将AX寄存器中的高位存入DL寄存器;
6. 判断高位是否大于等于10,若大于等于10,转到标号HEX_A处,将高位转换为ASCII码;
7. 若高位小于10,将其转换为ASCII码;
8. 调用21H中断,将结果打印出来;
9. 结束程序。
该程序的输出结果为:132H,即十进制数306。