代码如下,我也是刚开始接触汇编。
CODE SEGMENT
ASSUME CS:CODE
ORG 100H
START :
;-把四位十进制数读进
xor ax,ax
xor bx,bx
mov CX,8 ;!CX和输入字符个数关系为二倍
AA: mov ah,1
int 21h
sub al,30h ;字符向ASCII转化
;此段为实现将BX乘10
sal bx,1
mov dx,bx
sal bx,1
sal bx,1
add bx,dx
;实现BX=(bx*10+ax)的递归调用
and ax,00ffh
add bx,ax
dec CX
loop AA
pp proc
mov cl,4
;--输出最高位的六进制数
mov al,bh
sar al,cl
call pp1
;--输出次高位的六进制数
mov al,bh
call pp1
;--输出次低位的六进制数
mov al,bl
sar al,cl
;--输出最低位的六进制数
call pp1
mov al,bl
call pp1
RET
pp endp
;----子过程输入一个十六进制数
pp1 proc
and al,0fh
cmp al,10
jb xx
add al,7
xx: add al,30h
mov dl,al
MOV AH,2
int 21h
RET
pp1 endp
;输出时另解,不用子程序
;---输出四位六进制数
mov al,bh
mov cl,4
shr al,cl
and al,0fh
cmp al,10
jb zz
add al,7h
zz: add al,30h
mov dl,al
mov ah,2
int 21h
;
mov al,bh
and al,0fh
cmp al,10
jb xz
add al,7
xz: add al,30h
mov dl,al
mov ah,2
int 21h
;--
mov al,bl
mov cl,4
shr al,cl
and al,0fh
cmp al,10
jb xy
add al,7H
xy: ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
;------
MOV AL,BL
AND AL,0FH
CMP AL,10
JB XX
add al,7H
XX: add al,30h
mov dl,al
mov ah,2
int 21h
;--系统退出
mov ah,4ch
int 21h
CODE ENDS
END START
本文介绍了一个使用汇编语言将十进制数转换为十六进制数的示例程序。程序通过递归方式实现了数字的乘法运算,并通过位移指令完成了十六进制数的输出。此外,还提供了两种不同的输出十六进制数的方法。
2989

被折叠的 条评论
为什么被折叠?



