8085微處理器檢查五選二碼的程式
這裡我們將看到一個8085微處理器的程式。這個程式將幫助我們檢查給定的值是否為有效的五選二碼。
問題陳述−
編寫一個8085組合語言程式來檢查給定的數字是否為五選二碼。數字儲存在8000H位置。
討論−
五選二碼的檢查很簡單。首先,我們必須檢查前三位是否為0。如果它們為0,那麼我們將檢查接下來的五位。如果這五位中恰好有兩個1,那麼它就是一個有效的五選二碼。
這裡,我們首先使用(1110 0000)與數字進行AND運算,如果前三位為0,則結果將為0,之後我們使用旋轉操作來檢查1的個數。如果進位標誌被啟用,則計數將增加。因此,1的總數將被反映出來。
如果數字是有效的五選二碼,則此程式將把FFH儲存到8050H位置,否則將把00H儲存到8050H位置。
輸入
第一個輸入
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8000 | 12 |
| . . . | . . . |
第二個輸入
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8000 | 13 |
| . . . | . . . |
第三個輸入
| 地址 | 資料 |
|---|---|
| . . . | . . . |
| 8000 | 03 |
| . . . | . . . |
流程圖

程式−
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| F000 | 3A, 00, 80 | | LDA 8000H | 從記憶體中載入數字 |
| F003 | 67 | | MOV H,A | 將A載入到H |
| F004 | 2E, 00 | MVI L,00H | 清除暫存器L | |
| F006 | E6, E0 | | ANI E0H | 將累加器和11100000b進行AND運算 |
| F008 | C2, 21, F0 | | JNZ DONE | 如果Z = 0,跳轉到Done |
| F00B | 7C | | MOV A,H | 將H載入到A |
| F00C | 0E, 05 | | MVI C,05H | 將C載入為05H用於計數 |
| F00E | 16, 00 | | MVI D,00H | 清除暫存器D |
| F010 | 0F | LOOP | RRC | 將累加器內容向右旋轉 |
| F011 | D2, 15, F0 | | JNC SKIP | 如果CY = 0,跳轉到skip |
| F014 | 14 | | INR D | 將D增加1 |
| F015 | 0D | SKIP | DCR C | 將C減1 |
| F016 | 10, F0 | | JNZ LOOP | 跳轉到LOOP |
| F019 | 3E, 02 | | MVI A,02H | 將A初始化為02H |
| F01B | BA | | CMP D | 將D與A比較 |
| F01C | C2, 21, F0 | | JNZ DONE | 如果Z = 0,跳轉到DONE |
| F01F | 2E, FF | | MVI L,FFH | 將L載入為FFH |
| F021 | 7D | DONE | MOV A,L | 將結果從L取到A |
| F022 | 32, 50, 80 | | STA 8050H | 將結果儲存在8050H |
| F025 | 76 | | HLT | 終止程式 |
輸出
第一個輸出
| 地址 | 資料 |
|---|---|
| … | … |
| 8050 | FF |
| … | … |
第二個輸出
| 地址 | 資料 |
|---|---|
| … | … |
| 8050 | 00 |
| … | … |
第三個輸出
| 地址 | 資料 |
|---|---|
| … | … |
| 8050 | FF |
| … | … |
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP