⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fibonacci.asm

📁 IBM_PC汇编语言程序设计实验教程中第2章全部5个实验,smascii,search,count_char,phone,fibonacci.
💻 ASM
字号:
MESSEM MACRO MESS ;宏定义  
 MOV AH,09  
 LEA DX,MESS  
 INT 21H  
 ENDM  
 
 DATA SEGMENT  
 SWAPPER DW 0 ;用来做标尺  
 MESSAGE DB 'Please Input The Number','$'  
 MESSERR DB 'Please Input The Number Between 0~9','$'  
 CRLF DB 13,10,'$'  
 DECDEC DW 10D  
 DATA ENDS 
  
 STACK_SEG SEGMENT  
 DW 128 DUP(0)  
 TOS LABEL WORD  
 STACK_SEG ENDS  
 
 CODE SEGMENT  
 MAIN PROC FAR  
 ASSUME CS:CODE,DS:DATA,SS:STACK_SEG  
 START:  
 MOV AX,STACK_SEG  
 MOV SS,AX  
 MOV SP,OFFSET TOS  
 PUSH DS  
 SUB AX,AX  
 PUSH AX  
 MOV AX,DATA  
 MOV DS,AX  
 MOV ES,AX  
 MOV BX,0  
 MESSEM MESSAGE ;调用宏定义  
 MESSEM CRLF ;调用宏定义 
 
 INPUT: MOV AH,01  
 INT 21H  
 CMP AL,13  
 JZ RESULT1  
 CMP AL,'0'  
 JB ERROR  
 CMP AL,'9'  
 JA ERROR  
 
 RESULT:  
 MOV AH,0  
 SUB AL,30H  
 XCHG AX,BX  
 MUL [DECDEC]  
 ADD BX,AX  
 JMP INPUT  
 ERROR:  
 MESSEM MESSERR ;调用宏定义  
 MESSEM CRLF ;调用宏定义  
 MOV BX,0  
 JMP INPUT  
 
 RESULT1:  
 MESSEM CRLF ;调用宏定义  
 MOV AX,BX  
 PUSH BX  
 CALL FACT  
 POP BX  
 MOV DI,AX ;ax用来保存结果  
 CALL DISDEC  
 RET ;返回dos  
 MAIN ENDP  
 
 FACT PROC NEAR ;递归子程序  
 PUSH AX  
 PUSH BP  
 MOV BP,SP  
 MOV AX,[BP+6]  
 CMP AX,2  
 JE DONE  
 CMP AX,1  
 JE EXIT  
 FACT1:  
 DEC AX  
 PUSH AX  
 CALL FACT ;此递归程序注意必须有两次递归递用  
 POP AX  
 MOV AX,[BP-6] ;将前两项相加  
 ADD AX,[BP-14]  
 MOV [BP+2],AX  
 JMP EXIT  
DONE:  
 MOV AX,1  
 MOV [BP+2],AX  
 PUSH AX  
 CALL FACT ;此递归程序注意必须有两次递归递用  
 POP AX  
 EXIT:  
 POP BP  
 POP AX  
 RET  
 FACT ENDP  
 
 DISDEC PROC NEAR ;将16进制转化为10进制的子程序  
 MOV AX,DI  
 MOV CX,10000D  
 CALL DIVDEC  
 MOV CX,1000D  
 CALL DIVDEC  
 MOV CX,100D  
 CALL DIVDEC  
 MOV CX,10D  
 CALL DIVDEC  
 MOV CX,1D  
 CALL DIVDEC  
 MOV BX,0  
 MOV SWAPPER,BX  
 RET  
 DISDEC ENDP  
 
 DIVDEC PROC NEAR  
 MOV DX,0  
 DIV CX  
 PUSH DX  
 CMP AL,0  
 JZ CMPSWP  
 JMP DISOK  
 CMPSWP:  
 MOV BX,[SWAPPER]  
 CMP BX,0  
 JZ EXIT1  
 DISOK:  
 ADD AL,30H  
 MOV DL,AL  
 MOV AH,02  
 INT 21H  
 MOV BX,1  
 MOV [SWAPPER],BX  
 EXIT1:  
 POP DX  
 MOV AX,DX  
 RET  
 DIVDEC ENDP  
 CODE ENDS  
 END START 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -