编写一个过程,将 8位无符号二进制数值显示为十进制格式。用AL 传递该二进制数值,其输人 范围限制为十进制 0~ 99。能从本书的链接库中调用的过程只有 WriteChar。过程应包含约8条指令。调用示例如下: mov al,65 call showDecimal8 ;范围限制:0~99
时间: 2024-03-12 13:43:44 浏览: 58
无符号数二进制转十进制
好的,我明白了你的问题。下面是符合要求的过程 showDecimal8 的汇编代码:
```
showDecimal8 PROC
push ax ; 保护寄存器
push bx
push cx
push dx
mov bl, al ; 保存 AL 的值
mov cx, 10 ; 设置除数为 10
xor dx, dx ; 清空 DX
div cx ; 将 AL 除以 10,商在 AH,余数在 AL
add al, '0' ; 将余数转换为 ASCII 码
mov dl, al ; 将余数存入 DL
mov ah, 0eh ; 调用 DOS 的 0eh 功能,显示 DL 中的字符
int 10h
mov al, ah ; 将商存入 AL
xor ah, ah ; 清空 AH
div cx ; 将 AL 除以 10,商在 AH,余数在 AL
add al, '0' ; 将余数转换为 ASCII 码
mov dl, al ; 将余数存入 DL
mov ah, 0eh ; 调用 DOS 的 0eh 功能,显示 DL 中的字符
int 10h
pop dx ; 恢复寄存器
pop cx
pop bx
pop ax
ret ; 返回
showDecimal8 ENDP
```
这个过程使用了除法运算将二进制数值转换成十进制数值,并使用 DOS 的 0eh 功能将其显示出来。需要注意的是,这个过程只适用于二进制数值范围在 0~99 之间的情况。如果输入的二进制数值超出了这个范围,结果可能会出错。
阅读全文