第一次用汇编写乘法...5x5十进制乘法

来源:互联网 发布:去叙利亚女生知乎 编辑:程序博客网 时间:2024/05/14 00:18

 

 

 

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

 

 

 

原创粉丝点击