8085 微處理器中模擬扔骰子的程式
編寫一個 8085 組合語言程式,以使用中斷模擬擲骰子。
此程式有一個計數器,該計數器對 1 到 6 的範圍進行計數,然後以在無限迴圈中無休止的方式重複計數順序。透過按鍵盤上的“Vect Intr”鍵模擬骰子的投擲得到正面和反面的機率。8085 分支轉到 RST7.5 ISS。在此處,顯示計數器的當前值資料欄位中,該欄位控制計數器操作的延續並返回主程式。因此,我們在 1 到 6 之間的隨機值按“Vect Intr”鍵,該值顯示在資料欄位中,用於模擬擲骰子。
; FILE NAME DIETHROW.ASM
; Main program to reset RST7.5 Flip-Flop, unmask RST7.5, enable interrupts,
; and count from 1 to 6 endlessly in an infinite loop
ORG C000H
CURDT: EQU FFF9H
UPDDT: EQU 06D3H
DELAY: EQU 04BEH
MVI A, 00011011B
SIM ; Reset RST7.5 Flip-Flop, Unmask RST7.5
EI ; Enable interrupt system
; Program segment for an endless counter (1 to 6) loop.
; The 2 NOP instructions are needed because interrupt request
; lines are sensed by 8085 subsequent to JMP BEGIN instruction
; after a short time-interval of about 15 clocks. It may be
; better to have few NOP instructions to provide margin of safety.
BEGIN: MVI A, 01H
LOOP: NOP
NOP
INR A
CPI 06H
JNZ LOOP
JMP BEGIN
; RST7.5 ISS to display the counter value
RST75: STA CURDT
CALL UPDDT ; Display count value in data field
LXI D, FFFFH
CALL DELAY ; Generate a delay of 0.5 second
LDA CURDT
EI
RET
; When VECT INTR key is pressed, RST7.5 line is activated. So
; control is shifted to location 7.5 * 8 = 60 = 003CH. This location
; has JMP FFB1H instruction. (For ESA kit there is JMP 8FBFH). Hence
; it is necessary to write JMP RST75 instruction at location FFB1H.
; This is done by the following 2 instructions.
ORG FFB1H ; For ESA Kit it should be ‘ORG 8FBFH’
JMP RST75