汇编语言中如何将十六进制数结果转换成十进制字符输出?

汇编语言内都是以十六进制的形式将数据存入内存单元的吧,如果我在程序中定义:
A DB 5D
B DB 10D
........
MOV AL,A
........
ADD AL, B
........
程序执行完后结果应该是15D,以十六进制数0FH存在AL中吧,问题是我要能够以15的形式在屏幕上输出,该怎么办呢?

第1个回答  2012-10-16
data segment
num dw 0
decasc db 6 dup('0')
ends
stack segment para stack
dw 128 dup(0)
ends
code segment
start:
mov ax, data
mov ds, ax
mov bx,num
and bx,bx
jns next1 ;判断正负
mov decasc,'-'
neg bx ;是负数,则求其相反数
next1:mov si,5 ;将二进制数转换成十进制数的ASCII码
mov ax,bx
mov cx,5
mov di,10
next2:xor dx,dx
div di
or dl,30h
mov decasc[si],dl
dec si
loop next2
mov cx,5
mov si,0
mov dl,decasc[si]
cmp dl,'-' ;若是负数,则显示负号,正数不显示符号
jne next3
mov ah,02h
int 21h
next3: ;跳过前导0
inc si
mov dl,decasc[si]
cmp dl,'0'
jne next4
loop next3

next4:mov ah,02h ;显示有效数字,若BX为0,则只显示0
int 21h
inc si
mov dl,decasc[si]
jcxz next5
loop next4
next5:

mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start
第2个回答  2012-10-15
那样的话就只能够换算了,直接换算成10进制的数值填写到内存里面让后输出就可以追问

汇编中有将十六进制转换为十进制的指令或者方法吗?

追答

手动换算,自己写

相似回答