8085微處理器中新增兩個多位元組數的程式
在本節中,我們將看到一個Intel 8085微處理器程式。該程式主要用於新增多位元組數。
問題陳述−
編寫一個8085組合語言程式來新增兩個多位元組數。
討論−
我們使用4位元組數。這些數字儲存在記憶體位置8501H和8505H中。一個額外的資訊儲存在位置8500H。在這裡,我們儲存位元組計數。結果儲存在位置85F0H。
HL對儲存第一個運算元位元組的地址,DE儲存第二個運算元位元組的地址。C儲存位元組計數。我們使用堆疊來儲存結果的中間位元組。完成加法運算後,我們從堆疊中彈出並存儲到目標位置。
輸入
地址 | 資料 |
---|---|
… | … |
8500 | 04 |
8501 | 19 |
8502 | 68 |
8503 | 12 |
8504 | 85 |
8505 | 88 |
8506 | 25 |
8507 | 17 |
8508 | 20 |
… | … |
流程圖
程式
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
---|---|---|---|---|
F000 | 31, 00, 20 | LXI SP,2000H | 初始化堆疊指標 | |
F003 | 21, 00, 85 | LXI H,8500H | 載入記憶體地址以獲取位元組計數 | |
F006 | 4E | MOV C,M | 將記憶體內容載入到C暫存器 | |
F007 | 06, 00 | MVI B,00H | 清除B暫存器 | |
F009 | 21, 01, 85 | LXI H, 8501H | 載入第一個引數地址 | |
F00C | 11, 05, 85 | LXI D, 8505H | 載入第二個引數地址 | |
F00F | 1A | LOOP | LDAX D | 使用第二個運算元地址載入DE |
F010 | 8E | ADC M | 將記憶體內容和進位與累加器相加 | |
F011 | F5 | PUSH PSW | 將累加器內容儲存到堆疊中 | |
F012 | 04 | INR B | 推入堆疊後增加b | |
F013 | 23 | INX H | 增加HL對以指向下一個地址 | |
F014 | 13 | INX D | 增加DE對以指向下一個地址 | |
F015 | 0D | DCR C | 減少c,直到所有位元組都未耗盡 | |
F016 | C2, 0F, F0 | JNZ LOOP | 當位元組未被考慮時,再次迴圈 | |
F019 | D2, 20, F0 | JNC SKIP | 當進位=0時,跳轉到儲存 | |
F01C | 3E, 01 | MVI A,01H | 當進位=1時,將其推入堆疊 | |
F01E | F5 | PUSH PSW | 將累加器內容儲存到堆疊中 | |
F01F | 04 | INR B | 推入堆疊後增加b | |
F020 | 21, F0, 85 | SKIP | LXI H,85F0H | 載入目標指標 |
F023 | F1 | L1 | POP PSW | 彈出AF以從堆疊中取回位元組 |
F024 | 77 | MOV M,A | 將Acc資料儲存在HL指向的記憶體位置 | |
F025 | 23 | INX H | 增加HL對以指向下一個地址 | |
F026 | 05 | DCR B | 減少B | |
F027 | C2, 23, F0 | JNZ L1 | 轉到L1以儲存堆疊內容 | |
F02A | 76 | HLT | 終止程式 |
輸出
地址 | 資料 |
---|---|
… | … |
85F0 | 00 |
85F1 | A5 |
85F2 | 29 |
85F3 | 8D |
85F4 | A1 |
… | … |
廣告