8085程式求前n個自然數之和
在這個程式中,我們將學習如何計算前n個自然數之和。
問題陳述
編寫一個8085組合語言程式來計算前N個自然數之和。N的值已給出。
討論
我們從記憶體地址8000H獲取N的值。我們將數字N用作計數變數,在每一步中,我們計算(A + 計數)的值,並將它們儲存到A中。加完之後,計數器值遞減,因此完成了整個序列的計算。
如果數字是23H(35D),則總和將是(35*36)/2 = 630 (276H)
輸入
地址 | 資料 |
---|---|
. . . | . . . |
8000 | 23 |
. . . | . . . |
流程圖
程式
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
---|---|---|---|---|
F000 | 21, 00, 80 | LXI H,8000H | 指向獲取上限的地址 | |
F003 | 4E | MOV C, M | 將上限載入到C暫存器 | |
F004 | AF | XRA A | 清零A暫存器 | |
F005 | 47 | MOV B, A | 也清零B暫存器 | |
F006 | 81 | LOOP: | ADD C | 將C加到A |
F007 | D2, 0B, F0 | JNC SKIP | 如果CY = 0,跳過下一步 | |
F00A | 04 | INR B | 如果CY = 1,則增加B | |
F00B | 0D | SKIP: | DCR C | C減1 |
F00C | C2, 06, F0 | JNZ LOOP | 直到Z = 1,跳轉到LOOP | |
F00F | 21, 50, 80 | LXI H, 8050H | 指向目標地址 | |
F012 | 77 | MOV M, A | 儲存累加器內容 | |
F013 | 23 | INX H | 指向下一個位置 | |
F014 | 70 | MOV M, B | 儲存高位位元組 | |
F015 | 76 | HLT | 結束程式 |
輸出
地址 | 資料 |
---|---|
. . . | . . . |
8050 | 76 |
8051 | 02 |
. . . | . . . |
廣告