汇编语言:分支程序设计从键盘输入一个十进制正整数 N(10≤N≤99),将其转换成为十六进制数,转换的结果显示在屏幕上。(键盘输入的内容都是 ASCII 的形式)
时间: 2023-06-17 07:03:07 浏览: 32
下面是汇编语言的分支程序设计,实现将输入的十进制正整数 N 转换成十六进制数并显示在屏幕上:
```assembly
.model small
.stack 100h
.data
prompt db 'Please enter a decimal number between 10 and 99: $'
output db 13,10,'The hexadecimal equivalent is: $'
result db 2 dup('$')
.code
main proc
mov ax, @data
mov ds, ax
; 显示提示信息,获取输入
mov ah, 9
lea dx, prompt
int 21h
mov ah, 1
int 21h ; 读取输入的十进制数字符
; 转换十进制数为十六进制数
sub al, 30h ; 将字符转换为数字
mov bl, al ; 保存十进制数的低 4 位
shr al, 1 ; 将十进制数的高 4 位右移 1 位
shr al, 1
shr al, 1
add al, 30h ; 将数字转换为字符形式
cmp al, 39h
jle skip ; 如果是单个字符则跳过
add al, 7 ; 大于 9 的数字要加上 A 到 F 的偏移量
skip:
mov result, al
mov al, bl
and al, 0fh ; 取低 4 位的十进制数
add al, 30h ; 将数字转换为字符形式
cmp al, 39h
jle skip2 ; 如果是单个字符则跳过
add al, 7 ; 大于 9 的数字要加上 A 到 F 的偏移量
skip2:
mov result+1, al
; 显示结果
mov ah, 9
lea dx, output
int 21h
mov ah, 9
lea dx, result
int 21h
mov ah, 4ch
int 21h
main endp
end main
```
注意,上述程序中的转换方法是将十进制数的高 4 位右移 3 位,再加上字符 '0',如果结果大于字符 '9',则需要加上 'A' 到 'F' 的偏移量。这里使用了分支语句(条件跳转指令)来判断是否需要添加偏移量。