汇编:裴波那契数列前50项
DATAS SEGMENT
DW 200 DUP(0)
;一个数字需要64位,DW是16位,一共50个数字
DATAS ENDS
STACKS SEGMENT
DW 30 DUP(0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
.386
MOV AX,DATAS
MOV DS,AX
MOV AX,STACKS
MOV SS,AX
MOV SI,0
MOV DI,0
MOV EAX,1
MOV EDX,0
JMP PRINT11
A:
CALL FIBO
FIBO:
CMP DI,392
JE BACK
CMP DI,0
JE SET1
SET1BACK:
CMP DI,8
JE SET2
SET2BACK:
ADD DI,8
MOV EAX,DS:[DI-8]
MOV EDX,DS:[DI-4]
MOV ECX,DS:[DI-12]
MOV EBX,DS:[DI-16]
ADD EAX,EBX
ADC EDX,ECX
MOV DS:[DI],EAX
MOV DS:[DI+4],EDX
CALL PRINT
PRINTBACK:
CALL FIBO
;==================================================
SET1:
MOV DS:[0],EAX
MOV DS:[4],EDX
ADD DI,8
JMP SET1BACK
;==================================================
SET2:
MOV DS:[8],EAX
MOV DS:[12],EDX
JMP SET2BACK
;==================================================
;PRINT EDX EAX
PRINT:
PUSH EAX
PUSH EBX
PUSH ECX
PUSH EDX
CMP EDX,10B
JNB P1
CMP EDX,0
JA P2
CMP EAX,1000000000
JNB P2
CMP EAX,100000000
JNB P3
CMP EAX,10000000
JNB P4
CMP EAX,1000000
JNB P5
CMP EAX,100000
JNB P6
CMP EAX,10000
JNB P7
CMP EAX,1000
JNB P8
CMP EAX,100
JNB P9
CMP EAX,10
JNB P10
CMP EAX,1
JNB P11
P1:
MOV DL,1
ADD DL,30H
MOV AH,2H
INT 21H
MOV EAX,10011010001001110101010101100001B
MOV EDX,0
P2:
MOV EBX,1000000000
DIV EBX
PUSH EDX
MOV EDX,EAX
ADD DL,30H
MOV AH,2H
INT 21H
POP EAX
MOV EDX,0
P3:
MOV EBX,100000000
DIV EBX
PUSH EDX
MOV EDX,EAX
ADD DL,30H
MOV AH,2H
INT 21H
POP EAX
MOV EDX,0
P4:
MOV EBX,10000000
DIV EBX
PUSH EDX
MOV EDX,EAX
ADD DL,30H
MOV AH,2H
INT 21H
POP EAX
MOV EDX,0
P5:
MOV EBX,1000000
DIV EBX
PUSH EDX
MOV EDX,EAX
ADD DL,30H
MOV AH,2H
INT 21H
POP EAX
MOV EDX,0
P6:
MOV EBX,100000
DIV EBX
PUSH EDX
MOV EDX,EAX
ADD DL,30H
MOV AH,2H
INT 21H
POP EAX
MOV EDX,0
P7:
MOV EBX,10000
DIV EBX
PUSH EDX
MOV EDX,EAX
ADD DL,30H
MOV AH,2H
INT 21H
POP EAX
MOV EDX,0
P8:
MOV EBX,1000
DIV EBX
PUSH EDX
MOV EDX,EAX
ADD DL,30H
MOV AH,2H
INT 21H
POP EAX
MOV EDX,0
P9:
MOV EBX,100
DIV EBX
PUSH EDX
MOV EDX,EAX
ADD DL,30H
MOV AH,2H
INT 21H
POP EAX
MOV EDX,0
P10:
MOV EBX,10
DIV EBX
PUSH EDX
MOV EDX,EAX
ADD DL,30H
MOV AH,2H
INT 21H
POP EAX
MOV EDX,0
P11:
MOV EBX,1
DIV EBX
PUSH EDX
MOV EDX,EAX
ADD DL,30H
MOV AH,2H
INT 21H
POP EAX
MOV EDX,0
MOV DL,32
MOV AH,2H
INT 21H
POP EDX
POP ECX
POP EBX
POP EAX
JMP PRINTBACK
;PRINT END
;PRINT11
PRINT11:
PUSH EDX
PUSH EAX
MOV DL,1
ADD DL,30H
MOV AH,2H
INT 21H
MOV DL,32
MOV AH,2H
INT 21H
MOV DL,1
ADD DL,30H
MOV AH,2H
INT 21H
MOV DL,32
MOV AH,2H
INT 21H
POP EAX
POP EDX
JMP A
BACK:
MOV AX,4C00H
INT 21H
CODES ENDS
END START