8085程式生成斐波那契數列
在這個程式中,我們將看到如何生成斐波那契數列。
問題陳述
編寫一個8085組合語言程式,僅使用暫存器生成斐波那契數列的前十個元素,並將它們儲存在記憶體位置**8050H**到**8059H**中。
討論
此程式將生成斐波那契數。斐波那契數遵循此關係:對於所有 i > 2,F(i) = F(i - 1) + F(i - 2),其中 F(1) = 0,F(2) = 1。
輸入
在本例中,我們沒有提供任何輸入,此程式將生成十個斐波那契數。
流程圖
程式
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
---|---|---|---|---|
8000 | 21, 50, 80 | START | LXI H 8050H | 指向輸出緩衝區的指標 |
8003 | AF | XRA A | 清零累加器和暫存器B | |
8004 | 47 | MOV B, A | ||
8005 | 77 | MOV M, A | 將內容複製到目標位置 | |
8006 | 3C | INR A | 遞增A | |
8007 | 23 | INX H | 轉到下一個目標地址。 | |
8008 | 77 | MOV M, A | 移動內容 | |
80 09 | 0E, 08 | MVI C, 08H | 初始化計數器 | |
800B | 80 | LOOP | ADD B | 獲取下一項 |
800C | 46 | MOV B, M | 初始化項,例如 F1 = F2 | |
800D | 23 | INX H | 轉到下一個目標地址。 | |
800E | 77 | MOV M, A | 寫入輸出緩衝區 | |
800F | 0D | DCR C | 遞減計數器,直到達到0 F3= F1 + F2 (A) = (A) + (B) 這是透過指令ADDB完成的。 | |
8010 | C2, 0B, 80 | JNZ LOOP | ||
8013 | 76 | HLT | 終止程式 |
輸出
地址 | 資料 |
---|---|
... | ... |
8050 | 00 |
8051 | 01 |
8052 | 01 |
8053 | 02 |
8054 | 03 |
8055 | 05 |
8056 | 08 |
8057 | 0D |
8058 | 15 |
8059 | 22 |
... | ... |
廣告