Write an 8085 assembly language program to simulate the throw of a die using an interrupt.
We have a counter for this program, which counts the ranges from 1 to 6, and again repeats the sequence of count in a matter which is endless in an infinite loop. The die throwing getting the head and tail probability gets simulated by pressing the key ‘Vect Intr’ on the keyboard. The branching of 8085 branches to RST7.5 ISS. Here, the current value of the counter gets is displayed in the data field, which controls and returns to the main program for the continuation of the counter operation. Hence we press the ‘Vect Intr’ key at a random value between 1 to 6 which is displayed in the data field for the simulation of throwing of a die.
; 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
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
; 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
; 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’