8085程式:計算10個數序列中奇數的總數
在這個程式中,我們將學習如何在一段資料中計算奇數的數量。
問題陳述
編寫一個8085組合語言程式,計算一段資料中奇數的數量,資料塊大小為10D,起始地址為8000H。
討論
奇偶數的檢查非常簡單。我們可以透過檢查最低有效位 (LSB) 來判斷一個數是奇數還是偶數。當LSB為1時,該數為奇數,否則為偶數。在這個程式中,我們從記憶體中讀取一個數,然後將其與01H進行AND運算。如果結果不為零,則該數為奇數,否則為偶數。
輸入
地址 | 資料 |
---|---|
. . . | . . . |
8000 | DA |
8001 | 53 |
8002 | 26 |
8003 | 41 |
8004 | 17 |
8005 | AC |
8006 | 78 |
8007 | D8 |
8008 | 9C |
8009 | 3F |
. . . | . . . |
流程圖
程式
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
---|---|---|---|---|
F000 | 21, 00, 80 | | LXI H,8000H | 指向起始位元組 |
F003 | 0E, 0A | | MVI C,0AH | 將計數器初始化為0AH |
F005 | 06, 00 | | MVI B, 00H | 清零B暫存器 |
F007 | 7E | LOOP | MOV A,M | 從記憶體中載入資料 |
F008 | E6, 01 | | ANI 01H | A與01H進行AND運算 |
F00A | CA, 0E, F0 | | JZ SKIP | 如果Z=0,跳轉到SKIP |
F00D | 04 | | INR B | B加1 |
F00E | 23 | SKIP | INX H | 指向下一個位置 |
F00F | 0D | | DCR C | C減1 |
F010 | C2, 07, F0 | | JNZ LOOP | 如果Z=0,跳轉到LOOP |
F013 | 78 | | MOV A,B | 將計數器載入到A |
F014 | 32, 50, 80 | | STA 8050H | 將結果儲存到8050H |
F017 | 76 | | HLT | 程式結束 |
輸出
地址 | 資料 |
---|---|
. . . | . . . |
8050 | 04 |
. . . | . . . |
廣告