100分,求简单汇编问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 13:58:04
读入一个小于等于四位的十进制数把它转换为十六进制数,并显示出来,程序如下:

CSEG SEGMENT
ASSUME cs:CSEG
MOV bx,0
MOV cx,4
a4: MOV ah,1
INT 21h
CMP al,' '
JNZ a2
JMP a3
a2: PUSH ax
MOV ax,bx
MOV dx,10
MUL dx
MOV bx,ax
POP ax
SUB al,30h
a1: MOV ah,0
ADD bx,ax
LOOP a4
a3: MOV dl,'('
MOV ah,2
INT 21h
MOV dl,31h
INT 21h
MOV dl,30h
INT 21h
MOV dl,')'
INT 21h
MOV dl,'='
INT 21h
MOV cx,4
a6: PUSH cx
MOV cl,4
ROL bx,cl
MOV dl,bl
AND dl,0fh
ADD dl,30h
CMP dl,3ah
JB a5
ADD dl,7
a5: MOV ah,2
INT 21h
POP cx
LOOP a6
MOV dl,'('
MOV ah,2
INT 21h
MOV dl,31h
INT 21h
MOV dl,36h
INT 21h
MOV dl,')'
INT 21h
MOV ah,1
INT 21h<

主要是算法问题,你把逻辑弄明白了也就差不多了。
DOS中断读入4个ASCII码 要转换成十进制数,然后再转成十六进制数。

此问题将以“已关闭”告终。

这些程序我正好用到,帮了我的大忙,谢谢楼主!