8085程式用於統計暫存器B內容中1的個數
在本程式中,我們將瞭解如何統計儲存在暫存器B中的8位數中1的個數。
問題陳述
編寫8085組合語言程式,統計儲存在暫存器B中的8位數中1的個數。
討論
在本程式中,我們使用旋轉操作來統計1的個數。由於8位數中有8個不同的位,因此我們將數字旋轉8次。我們可以使用RRC或RLC。這裡我們使用了RRC指令。此指令將LSb傳送到MSb以及進位標誌。因此,在每次迭代之後,我們可以檢查進位狀態以獲得1的計數。
如果數字是DA(1101 1010),則答案將是5,因為該數字中有五個1。
輸入
暫存器 | 資料 |
---|---|
B | DA |
流程圖
程式
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
---|---|---|---|---|
F000 | 06, DA | | MVI B, DA | 取數字1101 1010 |
F002 | 37 | | STC | 設定進位 |
F003 | 3F | | CMC | 取反進位 |
F004 | 78 | | MOV A,B | 將數字從B載入到A |
F005 | 0E, 08 | | MVI C,08H | 將計數器初始化為08H |
F007 | 06, 00 | | MVI B,00H | 清零B暫存器 |
F009 | 0F | LOOP | RRC | 右移 |
F00A | D2, 0E, F0 | | JNC SKIP | 如果CY=0,則跳過下一步 |
F00D | 04 | | INR B | 如果CY=1,則增加B |
F00E | 0D | SKIP | DCR C | 將C減1 |
F01F | C2, 09, F0 | | JNZ LOOP | 如果Z=0,則跳轉到迴圈 |
F012 | 78 | | MOV A,B | 將計數載入到A |
F013 | 32, 50, 80 | | STA 8050H | 將結果儲存在8050H |
F016 | 76 | | HLT | 終止程式 |
輸出
地址 | 資料 |
---|---|
8050 | 05 |
廣告