用8086汇编语言 给定一个16进制转10进制的完整代码
时间: 2024-05-04 11:19:49 浏览: 16
以下是一个将16进制数转换为10进制数的8086汇编代码:
```
org 100h
section .data
hex_num db '3F8h' ;16进制数
decimal_num dw 0 ;10进制数
section .text
;设置寄存器
mov ax, 0
mov bx, 10 ;将16进制数转换为10进制数
mov si, hex_num
mov di, decimal_num
hex_to_dec:
mov cl, [si] ;将16进制数的每个字符取出
cmp cl, '0'
jl convert ;如果是字母,则跳转到convert标签继续执行
cmp cl, '9'
jle add_num ;如果是数字,则跳转到add_num标签继续执行
sub cl, 'A' - 10 ;如果是字母,则将A-F转换为10-15
jmp convert
add_num:
sub cl, '0' ;将字符0-9转换为数字0-9
jmp convert
convert:
mov dx, ax
mul bx
add ax, cx
mov cx, dx
inc si
cmp byte [si], 0
jne hex_to_dec
;在屏幕上显示结果
mov ah, 02h
mov dl, ' '
int 21h
mov ax, decimal_num
call display_num
;结束程序
mov ah, 4ch
int 21h
display_num proc near
cmp ax, 0
jge positive
neg ax
mov dl, '-'
mov ah, 02h
int 21h
positive:
cmp ax, 10
jl print_digit
mov bx, 10
div bx
call display_num
mov ax, dx
print_digit:
add ax, '0'
mov dl, al
mov ah, 02h
int 21h
ret
endp
```
这个代码将16进制数`3F8h`转换为10进制数。如果你想转换其他的16进制数,可以修改`hex_num`中的值。