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

📄 fbnq.asm

📁 已知斐波那契数列的定义:F(1)=1,F(2)=1,F(i)= F(i-1)+ F(i-2) (i>=3),编写求该数列前n项的子程序 实现了输入一个数
💻 ASM
字号:
STACK	SEGMENT STACK 'STACK'
	DW 100H DUP(?)
TOP	LABEL WORD
STACK	ENDS
	;N=20
DATA	SEGMENT
KEYBUF  DB 100
 	DB ?
	DB 100 DUP(?)
STRING1 DB 'Please input decimal data: $'   ;输入提示字符串
BUF	DW 100 DUP(?)
DATA	ENDS
CODE	SEGMENT
	ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:
	MOV   AX,DATA
	MOV   DS,AX
	MOV   ES,AX
	MOV   AX,STACK
	MOV   SS,AX
	LEA   SP,TOP
	LEA   DX,STRING1     ;显示出"输入提示字符串"
	MOV   AH,09H
 	INT   21H
	MOV   AH,0AH
	LEA   DX,KEYBUF
	INT   21H
	LEA   SI,KEYBUF+1
	CALL  TRANS
	CALL  DISPCR      ;屏幕光标回车换行
	MOV   CX,AX
	SUB   CX,2
	LEA   SI,BUF
	CALL  CALF
	MOV   AH,4CH
	MOV   AL,0
	INT   21H
CALF PROC NEAR               ;计算斐波那契数列子程序
	PUSH  AX
        PUSH  BX
	PUSH  CX
	PUSH  SI
	MOV   AX,1
	MOV   BX,1
	MOV   [SI],AX
	MOV   [SI+2],BX
	ADD   SI,4
CALF1:
	ADD   AX,BX
	MOV   [SI],AX
	ADD   SI,2
	XCHG  AX,BX
	LOOP  CALF1
	POP   SI
	POP   CX
	POP   BX
	POP   AX
        RET
CALF  ENDP
TRANS PROC NEAR                  ;将输入的字符串转换为16进制数子程序
	PUSH  CX
	PUSH  DX
	PUSH  SI
 	XOR   AX,AX
	XOR   CX,CX
	MOV   CL,[SI]
	INC   SI
	MOV   AL,[SI]
	INC   SI
	SUB   AL,30H
	DEC   CX
	JCXZ  TRANSF2
	MOV   BX,10
TRANSF1:
	MUL   BX
	JC    TRANSF_ERR
	MOV   DL,[SI]
	INC   SI
	SUB   DL,30H
	ADD   AL,DL
	ADC   AH,0
	JC    TRANSF_ERR
	LOOP  TRANSF1
	MOV   BX,0
TRANSF2:
	JMP   TRANSF_OK
TRANSF_ERR:
	MOV   BX,-1
TRANSF_OK:
	POP   SI
	POP   DX
  	POP   CX
	RET
TRANS ENDP
DISPCR PROC NEAR             ;屏幕光标回车换行子程序
	PUSH  AX
	PUSH  DX
	MOV   AH,2
	MOV   DL,0AH
	INT   21H
	MOV   DL,0DH
	INT   21H
	POP   DX
	POP   AX
	RET
DISPCR ENDP
CODE  ENDS
      END START
		

⌨️ 快捷键说明

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