如何用汇编语言将十六进制数转化为十进制数输出?
3个回答
展开全部
假设AX=59H BX=0(16进制数)——(10进制=89)
这个程序最好写个子程序.
loop:
mov a,AX
sub a,1
mov AX,A
mov a,BX ;减C标志
Sbc a,0h
mov BX,A
snz c 判断BX带标志-0是否借位 借位就跳出循环 不借位就进行+1 daa模式凯瞎
jmp END
mov a,1 ;减得断表示16进制的数还不=0 所以继续加1 如果需要宴孙敏3个寄存器放数据的
add a,al ;后面加写寄存器和BL的ADC模式一样
daa al 十进制转换;
mov a,0
adc a,bl ; 带晌枝C标志加
daa bl 十进制转换;
jmp loop
END :
ret
这个程序最好写个子程序.
loop:
mov a,AX
sub a,1
mov AX,A
mov a,BX ;减C标志
Sbc a,0h
mov BX,A
snz c 判断BX带标志-0是否借位 借位就跳出循环 不借位就进行+1 daa模式凯瞎
jmp END
mov a,1 ;减得断表示16进制的数还不=0 所以继续加1 如果需要宴孙敏3个寄存器放数据的
add a,al ;后面加写寄存器和BL的ADC模式一样
daa al 十进制转换;
mov a,0
adc a,bl ; 带晌枝C标志加
daa bl 十进制转换;
jmp loop
END :
ret
推荐于2016-07-02
展开全部
采好芹衡用除 10 求余压栈,最后在逐一出栈进行显示,至于实现的原理,拿个实际数据单步走一边就能看明白了友做。
参考如下:
;display the unsigned integer value in AX
dec2asc proc
push ax
push dx
push cx
mov dx, -1 ; flag of ending
push dx ; flag to stack
mov cx, 10
l_div10:
xor dx, dx
div cx ; DX:AX / CX
push dx
test ax, ax
jne l_div10
mov cx, -1
mov ah, 2 ; display character in DL
l_disp:
首带 pop dx
cmp dx, cx
je l_ret
add dl, '0' ; one-digit value turns to character
int 21h ; display the digit
jmp l_disp
l_ret:
pop cx
pop dx
pop ax
ret
dec2asc endp
参考如下:
;display the unsigned integer value in AX
dec2asc proc
push ax
push dx
push cx
mov dx, -1 ; flag of ending
push dx ; flag to stack
mov cx, 10
l_div10:
xor dx, dx
div cx ; DX:AX / CX
push dx
test ax, ax
jne l_div10
mov cx, -1
mov ah, 2 ; display character in DL
l_disp:
首带 pop dx
cmp dx, cx
je l_ret
add dl, '0' ; one-digit value turns to character
int 21h ; display the digit
jmp l_disp
l_ret:
pop cx
pop dx
pop ax
ret
dec2asc endp
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询