帮我读读这个程序! 高手来看 就这么多分了!
nmywg 2004-01-02 05:05:42 我有点不懂.希望那位高手把代码给我加个注释.越详细越好!!
STACK SEGMENT PARA STACK'STACK'
DW 256 DUP(0)
STACK ENDS
DATA SEGMENT
STRING0 DB 0AH,0DH,'DO YOU WANT TO INPUT DATA?(y/n)','$'
STRING1 DB 0AH,0DH,'PLEASE INPUT YOUR DATA.','$'
STRING2 DB 0AH,0DH,'A=','$'
DB 0AH,0DH,'B=','$'
DB 0AH,0DH,'C=','$'
DB 0AH,0DH,'D=','$'
DB 0AH,0DH,'E=','$'
STRING3 DB 0AH,0DH,'Y=A*B+C/D-E','$'
BUF1 DB 10,0,8 DUP(0)
BUF2 DB 10,0,8 DUP(0)
BUF3 DB 10,0,8 DUP(0)
BUF4 DB 10,0,8 DUP(0)
BUF5 DB 10,0,8 DUP(0)
BUFR DW 10 DUP(0)
DATA1 DW 5 DUP(0)
DATA2 DW 5 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START PROC FAR
BEGIN: MOV AX,DATA
MOV DS,AX
MOV AX,SS
MOV SS,AX
A2: LEA DX,STRING0
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
and al,0dfh
CMP AL,'Y'
JNE DONE
LEA DX,STRING1
MOV AH,09H
INT 21H
LEA DX,STRING3
MOV AH,09H
INT 21H
MOV CX,5
LEA BX,STRING2
LEA DI,BUF1
A0: MOV DX,BX
MOV AH,09H
INT 21H
MOV AH,0AH
MOV DX,DI
INT 21H
ADD BX,5
ADD DI,10
LOOP A0
MOV CX,5
LEA SI,BUF1
LEA DI,BUFR
A1: CALL INZH
ADD SI,10
ADD DI,2
LOOP A1
LEA DI,BUFR
LEA SI,DATA1
CALL JIS
JMP A2
DONE: MOV AH,4CH
INT 21H
RET
START ENDP
INZH PROC NEAR
PUSH SI
PUSH DX
PUSH CX
PUSH AX
MOV DX,0
MOV CX,0
MOV AX,0
MOV CL,[SI+1]
ZH0: MOV AL,[SI+2]
INC SI
SUB AL,30H
PUSH CX
PUSH AX
MOV AX,DX
MOV CL,10
MUL CL
MOV DX,AX
POP AX
ADD DX,AX
POP CX
LOOP ZH0
MOV [DI],DX
POP AX
POP CX
POP DX
POP SI
RET
INZH ENDP
JIS PROC NEAR
PUSH DI
PUSH SI
PUSH AX
PUSH BX
PUSH DX
MOV AX,[DI]
MOV BX,[DI+2]
MUL BX
MOV [SI],AX
mov dx,0
MOV AX,[DI+4]
MOV BX,[DI+6]
DIV BX
ADD [SI],AX
MOV BX,[DI+8]
MOV STRING3+13,'='
MOV AX,[SI]
SUB AX,BX
JL JIS1
MOV [SI],AX
MOV STRING3+14,' '
CALL OUTZH
JMP JIS2
JIS1: MOV DATA2,AX
NEG AX
MOV STRING3+14,'-'
CALL OUTZH
JIS2: POP DX
POP BX
POP AX
POP SI
POP DI
ret
JIS ENDP
OUTZH PROC NEAR
PUSH DX
PUSH CX
PUSH BX
PUSH SI
MOV CX,5
LEA SI,STRING3
ADD SI,19 ;20
mov byte ptr [si+1],24h
MOV DX,0
MOV BX,10
OUTZH1:
mov dx,0
DIV BX
XCHG AX,DX
ADD AX,30H
MOV [SI],Al ;aX
DEC SI
MOV AX,DX
LOOP OUTZH1
; MOV STRING3+21
MOV AH,09
LEA DX,STRING3
INT 21H
POP SI
POP BX
POP CX
POP DX
RET
OUTZH ENDP
CODE ENDS
END BEGIN