CRLF MACRO
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
ENDM
DATA SEGMENT
;DATA
DATA1 DB 5 DUP(?)
DATA2 DB 5 DUP(?)
;DATA1 DB '12345'
;DATA2 DB '12345'
RESULT DB 11 DUP(?)
;TIPS MESSAGE
MINPUT DB 'Please input a number (5bitDEC):',0AH,0DH,'$'
MRESULT DB 'The Result is :',0AH,0DH,'$'
DATA ENDS
STACK SEGMENT
STA DB 50 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,0032H
;INPUT
MOV DX,OFFSET MINPUT
MOV AH,09H
INT 21H
MOV SI,OFFSET DATA1
;ADD SI,0004H
MOV CX,5
IN1:
MOV AH,01H
INT 21H
MOV [SI],AL
INC SI
LOOP IN1
CRLF
;INPUT
MOV DX,OFFSET MINPUT
MOV AH,09H
INT 21H
CRLF
MOV SI,OFFSET DATA2
;ADD SI,0004H
MOV CX,5
IN2:
MOV AH,01H
INT 21H
MOV [SI],AL
INC SI
LOOP IN2
;Mul
MOV DX,00H;记录相乘了N次
MOV SI,OFFSET DATA2
ADD SI,0004H
MUL2:
MOV BL,[SI]
AND BL,0FH
MOV DI,OFFSET DATA1
ADD DI,0004H
MOV CX,5
PUSH SI
MOV SI,OFFSET RESULT
ADD SI,DX
MUL1:
MOV AL,[DI]
AND AL,0FH
DEC DI
MUL BL
AAM
MOV BH,AH;保存乘法进位
XOR AH,AH
;------------------加法调整--------------------;
;积的低位处理
ADD AL,[SI]
AAA
MOV [SI],AL
;积的进位处理
MOV AL,AH
XOR AH,AH
ADD AL,BH
AAA
PUSH BX
MOV BX,00H
MADD:
INC BX
ADD AL,[SI+BX]
AAA
MOV [SI+BX],AL
MOV AL,AH
XOR AH,AH
CMP BX,5
JNE MADD
POP BX
;------------------加法调整--------------------;
INC SI
LOOP MUL1
POP SI
DEC SI
INC DX
CMP DX,5
JNE MUL2
;show
CRLF
;INPUT
MOV DX,OFFSET MRESULT
MOV AH,09H
INT 21H
CRLF
MOV SI,OFFSET RESULT
MOV CX,11
ADD SI,10
CHECK:
MOV DL,[SI]
CMP DL,0
DEC SI
DEC CX
JE CHECK
SHOW:
MOV DL,[SI]
DEC SI
ADD DL,30H
MOV AH,02H
INT 21H
LOOP SHOW
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START