论坛: 编程破解 标题: 莱鸟学编程之20130114 复制本贴地址    
作者: 黄勇刚 [hyg0817]    论坛用户   登录
    各位前辈,大家好,本莱鸟想自学编程,但不能光停留在想的阶段,得来点实干精神,方可有所收获。所以今天打算完成一个习题,也算是对所学章节的一个巩固。
    此贴虽是作业贴,但本莱鸟保证此贴只在本站发表,而且绝对是原创首发。还望站长、版主高抬贵手,勿删此贴为盼。本题完全由本人独立完成,同时还望各位高手多多指教!
题目如下:
    试编制一程序,产生n个斐波纳契数列。数列的第1、2个数分别是0、1,从第3个数开始,每一个数等于前两个数之和。因此数列为:0、1、2、3、5、8、13、21、34、......等。

解题思路:
1,建立一个变量,占50个字,用以存放数列,将第一、二字初始化为0、1。
2,将指针指向变量第三个字,将前两个字之数据相加,存入一寄存器,然后再存入第三个字。
3,设立循环次数为48,每循环一次,指针移动一字,以产生数列。

试编程如下:

DATA SEGMENT
    FBLSL DW 0,1,48 DUP(0)
DATA ENDS

CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START:
    MOV AX,DATA
    MOV DS,AX
    LEA BX,FBLSL
    MOV CX,48
    ADD BX,4
CSSL:
    MOV AX,-4[BX]
    ADD AX,-2[BX]
    MOV [BX],AX
    ADD BX,2
LOOP CSSL
    MOV AH,4CH
    INT 21H
CODE ENDS
    END START

至此,题目所要求之功能已基本实现。由于程序比较简短,故略去注释。
本程序在MASM 5.0下编译通过。

                      THE END

      鸣谢:
               
                    20CN网络安全小组提供技术论坛
           

[此贴被 黄勇刚(hyg0817) 在 01月14日02时47分 编辑过]

地主 发表时间: 13-01-14 02:16

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号