主题:各位大师,我是初学者,有个问题想请教
帅DODO
[专家分:0] 发布于 2006-04-16 08:06:00
请问怎么用汇编实现从键盘接受两位十六进制数并将其转化为等值十进制数并显示,要求至少设计一个子程序~~~~
希望各位大师指点一下,哈~~~~
本人还没入门~~~~[em8]一定继续努力[em1]
回复列表 (共2个回复)
沙发
JerryUriel [专家分:30] 发布于 2006-04-16 10:40:00
DSEG SEGMENT
TAB1 DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H
DB 7 DUP(0),0AH,0BH,0CH,0DH,0EH,0FH
TAB2 DB '0123456789'
D100 DB 100
D10 DB 10
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV DS,AX
LEA BX,TAB1
MOV AH,01H
INT 21H
SUB AL,30H
XLAT
MOV CL,16
MUL CL
MOV CL,AL
MOV AH,01H
INT 21H
SUB AL,30H
XLAT
ADD AL,CL
XOR AH,AH
CALL DEGITAL
LEA BX,TAB2
MOV AL,DH
XLAT
MOV DL,AL
MOV AH,02H
INT 21H
MOV AL,CL
XLAT
MOV DL,AL
MOV AH,02H
INT 21H
MOV AL,CH
XLAT
MOV DL,AL
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
DEGITAL PROC NEAR
DIV D100
MOV DH,AL
MOV AL,AH
XOR AH,AH
DIV D10
MOV CX,AX
RET
DEGITAL ENDP
CSEG ENDS
END START
只是个初稿,正在修改中
板凳
JerryUriel [专家分:30] 发布于 2006-04-16 10:59:00
DSEG SEGMENT
TAB1 DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H
DB 7 DUP(0),0AH,0BH,0CH,0DH,0EH,0FH
TAB2 DB '0123456789'
D100 DB 100
D10 DB 10
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV DS,AX
LEA BX,TAB1
MOV AH,01H
INT 21H
SUB AL,30H
XLAT
MOV CL,16
MUL CL
MOV CL,AL
MOV AH,01H
INT 21H
SUB AL,30H
XLAT
ADD AL,CL
XOR AH,AH
PUSH AX
MOV DL,'='
MOV AH,02H
INT 21H
POP AX
CALL DEGITAL
LEA BX,TAB2
CMP DH,0
JE J1
MOV AL,DH
XLAT
CALL PUT
J1: CMP CL,0
JE J2
MOV AL,CL
XLAT
CALL PUT
J2: MOV AL,CH
XLAT
CALL PUT
MOV AH,4CH
INT 21H
DEGITAL PROC NEAR
DIV D100
MOV DH,AL
MOV AL,AH
XOR AH,AH
DIV D10
MOV CX,AX
RET
DEGITAL ENDP
PUT PROC NEAR
MOV DL,AL
MOV AH,02H
INT 21H
RET
PUT ENDP
CSEG ENDS
END START
结果比较友好的源程序
我来回复