汇编语言程序代码:请使用StdIn功能从键盘输入一个多位的十进制整数,然后以十六进制的方式输出该整数。 扩展要求:对输入的整数是否合法进行检查,如果有0~9以外的字符则提示输入非法。
时间: 2024-05-22 18:15:04 浏览: 88
非常感谢您的提问。以下是回答:
汇编语言程序代码如下:
; 输入整数,假设最多为 10 位
mov bx, 0 ; 存储输入的整数
mov cx, 10 ; 最大输入位数
mov ah, 1 ; 阻塞读取键盘输入字符
mov dl, 0 ; 用于存储输入的字符
input:
int 21h ; 读取字符
cmp dl, 0Dh ; 是否回车
jz output ; 如果是,则跳转到输出
cmp dl, '0' ; 检查是否是数字字符
jb error ; 如果不是,则跳转到错误处理
cmp dl, '9'
ja error
mov al, dl ; 将字符转换为数字
sub al, '0'
mov dx, ax ; 将数字存储到 dx 寄存器
shl bx, 1 ; 将 bx 左移一位,为下一位数腾出位置
shl bx, 1
add bx, dx ; 将本位数加入到整数 bx 中
loop input ; 循环输入下一位数
output:
mov cx, 4 ; 输出十六进制数,最多 4 位,不足前置 0 补齐
mov dl, '0' ; 先输出多余的 0
push cx ; 保存循环次数
sub cx, 1 ; 剩下循环次数
jz done ; 如果完成输出,则跳转到结束
hex_output:
shr bx, cl ; 将整数右移,截断低位
and bx, 0Fh ; 取低 4 位
cmp bx, 0Ah ; 如果是 10 以上的数,则需要输出字母
jc hex_digit ; 符号为以下,则无需转换为字母
add bx, 7h ; 加上 'A' - 10 = 7h
hex_digit:
add dl, bl ; 将数字或字母加入到输出字符串中
int 21h ; 输出字符
sub dl, bl ; 恢复 dl 寄存器的值
sub cx, 1 ; 减少循环次数
jnz hex_output ; 继续循环,输出下一位数
done:
pop cx ; 恢复循环次数
xor bh, bh ; bh 寄存器用于存储错误代码
ret ; 返回,完成
error:
mov bh, 1 ; 错误代码 1 表示输入非法
ret ; 返回,完成
当输入非法时,程序将输出错误代码并返回。如果输入合法,则以十六进制的形式输出整数。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)