8085程式檢查五位二碼


現在讓我們來看一個英特爾8085微處理器的程式。這個程式將幫助我們檢查給定的值是否為有效的五位二碼。

問題陳述:

編寫8085組合語言程式以檢查給定數字是否為五位二碼。該數字儲存在8000H位置。

討論:

五位二碼的檢查很簡單。首先,我們必須檢查高三位是否為0。如果它們為0,那麼我們將檢查接下來的五位。如果這5位中恰好有兩個1,則它是一個有效的五位二碼。

這裡首先我們將數字與(1110 0000)進行與運算,如果前三位為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進行與運算
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
.
.
.
.
.
.





更新於: 2019年7月30日

552次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.