发布时间 : 星期一 文章IBM-PC汇编语言程序设计实验报告更新完毕开始阅读a2a6fdf902768e9950e73830
RESULT2H DW 0 ;结果的高16位 RESULT2L DW 0 ;结果的低16位 C10 DW 10
OUTPUTBUFFER DB 11 DUP('0') DATAS ENDS CODES SEGMENT
ASSUME CS:CODES,DS:DATAS START:
MOV AX,DATAS MOV DS,AX CALL INPUT CALL FIB CALL OUTPUT JMP QUIT
;*********************************************************************** INPUT PROC
JMP T1
WRONG:LEA DX,WRONGSTR MOV AH,9 INT 21H
T1:LEA DX,STR1 MOV AH,9 INT 21H
LEA DX,INPUTBUFFER MOV AH,10 INT 21H MOV AX,0
MOV CL,INPUTBUFFER+1 MOV CH,0
LEA BX,INPUTBUFFER+2 T2:MUL C10 MOV DL,[BX] CMP DL,'0' JB WRONG CMP DL,'9' JA WRONG AND DL,0FH ADD AL,DL ADC AH,0 INC BX LOOP T2
CMP AX,0032H
第 13 页 共 21 页
JA WRONG CMP AX,1 JB WRONG MOV N,AX RET INPUT ENDP
;************************************************************ FIB PROC CMP N,1 JZ L1 CMP N,2 JZ L2 DEC N CALL FIB
MOV AX,RESULT2L MOV DX,RESULT2H MOV CX,RESULT1L ADD RESULT2L,CX MOV CX,RESULT1H ADC RESULT2H,CX MOV RESULT1L,AX MOV RESULT1H,DX JMP EXIT
L1:MOV RESULT1L,1 MOV RESULT2L,1 JMP EXIT
L2:MOV RESULT2L,1 DEC N CALL FIB EXIT:RET FIB ENDP
;************************************************************* OUTPUT PROC
MOV AX,RESULT2L LEA SI,OUTPUTBUFFER MOV CX,5
R1:MOV DX,0 ;低位加入OUTPUTBUFFER DIV C10 INC SI
ADD [SI],DL LOOP R1
;************************* MOV AX,RESULT2H LEA SI,OUTPUTBUFFER
第 14 页 共 21 页
MOV CX,5 R2:MOV DX,0 DIV C10 INC SI
PUSH CX ;高位加入OUTPUTBUFFER CMP DX,0 JE NOADD MOV CX,DX
ADDN:CALL ADD65536 LOOP ADDN NOADD:POP CX LOOP R2
;********************** LEA DX,STR2 MOV AH,9 INT 21H
LEA SI,OUTPUTBUFFER MOV BX,10
R3:CMP BYTE PTR [SI+BX],'0' JA PRINT
DEC BX ;显示十进制结果 JMP R3
PRINT:MOV DL,[SI+BX] MOV AH,2 INT 21H DEC BX CMP BX,1
JAE PRINT RET
OUTPUT ENDP
;************************************************************ ADD65536 PROC ;高位算法 ADD BYTE PTR [SI],6 MOV DL,0
CMP BYTE PTR [SI],3AH JB A1
SUB BYTE PTR [SI],10 MOV DL,1
A1:ADD BYTE PTR [SI+1],3 ADD BYTE PTR [SI+1],DL MOV DL,0
CMP BYTE PTR [SI+1],3AH JB A2
SUB BYTE PTR [SI+1],10
第 15 页 共 21 页
MOV DL,1
A2:ADD BYTE PTR [SI+2],5 ADD BYTE PTR [SI+2],DL MOV DL,0
CMP BYTE PTR [SI+2],3AH JB A3
SUB BYTE PTR [SI+2],10 MOV DL,1
A3:ADD BYTE PTR [SI+3],5 ADD BYTE PTR [SI+3],DL MOV DL,0
CMP BYTE PTR [SI+3],3AH JB A4
SUB BYTE PTR [SI+3],10 MOV DL,1
A4:ADD BYTE PTR [SI+4],6 ADD BYTE PTR [SI+4],DL MOV DL,0
CMP BYTE PTR [SI+4],3AH JB A0
SUB BYTE PTR [SI+4],10 MOV DL,1
A5:ADD BYTE PTR [SI+5],DL MOV DL,0
CMP BYTE PTR [SI+5],3AH JB A0
SUB BYTE PTR [SI+5],10 MOV DL,1
A6:ADD BYTE PTR [SI+6],DL MOV DL,0
CMP BYTE PTR [SI+6],3AH JB A0
SUB BYTE PTR [SI+6],10 MOV DL,1
A7:ADD BYTE PTR [SI+7],DL MOV DL,0
CMP BYTE PTR [SI+7],3AH JB A0
SUB BYTE PTR [SI+7],10 MOV DL,1
A8:ADD BYTE PTR [SI+8],DL MOV DL,0
CMP BYTE PTR [SI+8],3AH JB A0
第 16 页 共 21 页