用8086汇编语言写一个16进制转10进制的完整代码
时间: 2024-05-16 21:16:41 浏览: 99
以下是一个简单的8086汇编语言程序,可以将16进制数转换为10进制数:
```
; 16进制转10进制程序
org 100h
mov cx, 4 ; 16进制数位数
mov di, 0 ; 初始化结果为0
mov bx, 10 ; 初始化除数为10
input: ; 输入16进制数
mov ah, 1
int 21h
cmp al, 0Dh ; 判断是否输入结束
je output
cmp al, '0'
jb input
cmp al, '9'
ja hex
sub al, 30h ; 小写字母转为数字
jmp store
hex: ; 大写字母转为数字
cmp al, 'A'
jb input
cmp al, 'F'
ja input
sub al, 37h
store: ; 将数存入内存
mov ah, 0
mov [si], al
inc si
loop input
output: ; 从右向左依次计算每一位的十进制值
dec si
mov di, 1
mov al, [si]
sub al, 30h
mul di
mov di, 16
mul di
add [result], ax
dec si
mov di, 1
mov al, [si]
sub al, 30h
mul di
mov di, 1
add [result], ax
dec si
mov di, 1
mov al, [si]
sub al, 30h
mul di
mov di, 256
mul di
add [result], ax
dec si
mov di, 1
mov al, [si]
sub al, 30h
mul di
mov di, 4096
mul di
add [result], ax
mov ah, 09h ; 输出结果
mov dx, offset msg
int 21h
mov ah, 02h
mov dl, [result]
add dl, 30h
int 21h
mov dl, [result+1]
add dl, 30h
int 21h
mov dl, [result+2]
add dl, 30h
int 21h
mov dl, [result+3]
add dl, 30h
int 21h
mov ah, 4Ch ; 程序结束
int 21h
msg db '10进制数: $'
result dw 0
end
```
该程序将输入的16进制数存储在内存中,然后将其转换为10进制数并将结果输出。该程序可以通过DOSBox等模拟器运行。
阅读全文