Statement:Write a program for displaying BCD up counter. Counter should count numbers from 00 to 99H and it should increment after every 1 sec. Assume operating frequency of 8085 equal to 3MHz. Display routine is available.
Source Program:
LXI SP, 27FFH : Initialize stack pointer
MVI C, OOH : Initialize counter
BACK: CALL Display : Call display subroutine
CALL Delay : Call delay subroutine
MOV A, C
ADI A, 0 1 : Increment counter
DAA : Adjust it for decimal
MOV C,A : Store count
CPI ,00 : Check count is > 99
JNZ BACK : If not, repeat
HLT : Stop
Delay Subroutine:
Delay:MVI B, Multiplier-count : Initialize multiplier count
BACK 1:LXI D, Initialize Count
BACK: DCX D : Decrement count
MOV A, E
ORA D : Logically OR D and E
JNZ BACK : If result is not a, repeat
DCR B : Decrement multiplier count
JNZ BACK 1 : If not zero, repeat
RET : Return to main program.
LXI SP, 27FFH : Initialize stack pointer
MVI C, OOH : Initialize counter
BACK: CALL Display : Call display subroutine
CALL Delay : Call delay subroutine
MOV A, C
ADI A, 0 1 : Increment counter
DAA : Adjust it for decimal
MOV C,A : Store count
CPI ,00 : Check count is > 99
JNZ BACK : If not, repeat
HLT : Stop
Delay Subroutine:
Delay:MVI B, Multiplier-count : Initialize multiplier count
BACK 1:LXI D, Initialize Count
BACK: DCX D : Decrement count
MOV A, E
ORA D : Logically OR D and E
JNZ BACK : If result is not a, repeat
DCR B : Decrement multiplier count
JNZ BACK 1 : If not zero, repeat
RET : Return to main program.
No comments:
Post a Comment