编制一个子程序把一个16位二进制数用十六进制形式在屏幕上显示出来,采用WORDTEMP变量传递这个16位二进制数
时间: 2023-06-12 17:03:57 浏览: 227
下面是一个使用WORDTEMP变量将16位二进制数转换成十六进制形式并在屏幕上显示的子程序:
```
; 将16位二进制数转换成十六进制形式并在屏幕上显示
; WORDTEMP - 16位二进制数
BIN2HEX PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV CX, 4 ; 循环4次(每次处理4位二进制数)
; 循环处理每个4位二进制数
BIN2HEX_LOOP:
SHR WORDTEMP, 4 ; 将WORDTEMP向右移动4位,获取当前4位二进制数
AND WORDTEMP, 000Fh ; 获取当前4位二进制数的值(0-15)
CMP WORDTEMP, 10 ; 如果当前值大于等于10,需要转换成A-F的十六进制字符
JL BIN2HEX_SKIP_CONVERT
ADD WORDTEMP, 7 ; 将10-15转换成A-F的ASCII码值
; 跳过判断语句
BIN2HEX_SKIP_CONVERT:
ADD WORDTEMP, 30h ; 将值转换成对应的ASCII码字符
MOV DL, WORDTEMP ; 保存字符到DL寄存器
MOV AH, 02h ; 调用DOS的int21h功能2,显示字符
INT 21h
LOOP BIN2HEX_LOOP ; 继续循环处理下一个4位二进制数
POP DX
POP CX
POP BX
POP AX
RET
BIN2HEX ENDP
```
调用该子程序的代码如下:
```
MOV WORDTEMP, 1010101010101010b ; 设置16位二进制数
CALL BIN2HEX ; 调用子程序将二进制数转换成十六进制并显示在屏幕上
```
这将在屏幕上显示出 `AAAAh`。
阅读全文