主题:求高手解答,自编的求A的B次方程序,为什么总是输出2340
MESBOX MACRO MSG
LEA DX,MSG
MOV AH,09H
INT 21H
ENDM
0000 DATA SEGMENT
0000 000A[ STR DB 10 DUP(?)
??
]
000A 49 4E 50 55 54 20 4E MEG1 DB 'INPUT NUMBER A',0DH,0A
H,'$'
55 4D 42 45 52 20 41
0D 0A 24
001B 49 4E 50 55 54 20 4E MEG2 DB 'INPUT NUMBER B',0DH,0A
H,'$'
55 4D 42 45 52 20 42
0D 0A 24
002C 54 48 45 20 52 45 53 MEG3 DB 'THE RESULT IS:$'
55 4C 54 20 49 53 3A
24
003B DATA ENDS
0000 CODE SEGMENT
ASSUME CS:CODE,DS:DATA
0000 MAIN PROC FAR
0000 2B C0 SUB AX,AX
0002 B8 ---- R MOV AX,DATA
0005 8E D8 MOV DS,AX
MESBOX MEG1
0007 8D 16 000A R 1 LEA DX,MEG1
000B B4 09 1 MOV AH,09H
000D CD 21 1 INT 21H
000F E8 0042 R CALL CIN
0012 33 C9 XOR CX,CX
0014 8B CB MOV CX,BX
0016 BB 0000 MOV BX,0
0019 E8 005E R CALL CRLF
MESBOX MEG2
001C 8D 16 001B R 1 LEA DX,MEG2
0020 B4 09 1 MOV AH,09H
0022 CD 21 1 INT 21H
0024 E8 0042 R CALL CIN
0027 E8 005E R CALL CRLF
002A 33 C0 XOR AX,AX
002C E8 006B R CALL FACT
MESBOX MEG3
002F 8D 16 002C R 1 LEA DX,MEG3
0033 B4 09 1 MOV AH,09H
0035 CD 21 1 INT 21H
0037 E8 0080 R CALL COUT
003A B4 01 MOV AH,01H
003C CD 21 INT 21H
003E B4 4C MOV AH,4CH
0040 CD 21 INT 21H
Microsoft (R) Macro Assembler Version 5.00 11/29/11 16:39:44
Page 1-2
0042 MAIN ENDP
0042 CIN PROC NEAR
0042 BB 0000 MOV BX,0
0045 B4 01 NEWNUM: MOV AH,1
0047 CD 21 INT 21H
0049 2C 30 SUB AL,30H
004B 7C 10 JL EXIT
004D 3C 09 CMP AL,9
004F 7F 0C JG EXIT
0051 98 CBW
0052 93 XCHG AX,BX
0053 B9 000A MOV CX,10
0056 F7 E1 MUL CX
0058 93 XCHG AX,BX
0059 03 D8 ADD BX,AX
005B EB E8 JMP NEWNUM
005D C3 EXIT: RET
005E CIN ENDP
005E CRLF PROC NEAR
005E B2 0D MOV DL,0DH
0060 B4 02 MOV AH,02H
0062 CD 21 INT 21H
0064 B2 0A MOV DL,0AH
0066 B4 02 MOV AH,02H
0068 CD 21 INT 21H
006A C3 RET
006B CRLF ENDP
006B FACT PROC
006B 83 FB 00 CMP BX,0
006E 75 04 JNE NEXT
0070 B8 0001 MOV AX,1
0073 C3 RET
0074 B8 0001 NEXT: MOV AX,1
0077 F7 E1 LP: MUL CX
0079 4B DEC BX
007A 83 FB 00 CMP BX,0
007D 7F F8 JG LP
007F C3 RET
0080 FACT ENDP
0080 COUT PROC
0080 33 C9 XOR CX,CX
0082 B9 000A MOV CX,10
0085 2B DB SUB BX,BX
0087 BB 0001 MOV BX,1
008A BA 0000 LP1: MOV DX,0
008D F7 F1 DIV CX
008F 80 C2 30 ADD DL,30H
0092 88 97 0000 R MOV STR[BX],DL
0096 43 INC BX
0097 3D 0000 CMP AX,0
009A 7F EE JG LP1
009C 33 C9 XOR CX,CX
009E 8B CB MOV CX,BX
Microsoft (R) Macro Assembler Version 5.00 11/29/11 16:39:44
Page 1-3
00A0 B4 02 MOV AH,02H
00A2 33 D2 XOR DX,DX
00A4 8A 97 0000 R LP2: MOV DL,STR[BX]
00A8 4B DEC BX
00A9 CD 21 INT 21H
00AB E2 F7 LOOP LP2
00AD C3 RET
00AE COUT ENDP
00AE CODE ENDS
END MAIN
Microsoft (R) Macro Assembler Version 5.00 11/29/11 16:39:44
Symbols-1