A project interfaced with an 8086 microprocessor, implemented in 8086 Assembly, and simulated in Proteus.
This assembly code project simulates three strobe patterns using the 8086 microprocessor. These patterns include a "WORM" strobe, "SNAKE" strobe, and a "ZIG-ZAG" strobe.
;====================================================================
; Main.asm file generated by New Project wizard
;
; Created: Thu Oct 19 2023
; Processor: 8086
; Compiler: MASM32
;
; Before starting simulation set Internal Memory Size
; in the 8086 model properties to 0x10000
;====================================================================
; RATIFICAR | STROBE LIGHT USING 8086
DATA SEGMENT
PORTA EQU 0F0H
PORTB EQU 0F2H
DATA ENDS
CODE SEGMENT PUBLIC 'CODE'
ASSUME CS:CODE
START:
MAIN:
INITIALIZATION:
; CHECKING TO SEE IF TOGGLE IS ON
MOV DX, PORTB
IN AL, DX
; STROBE1
TEST AL, 09H
JE DO_WORM
; STROBE2
TEST AL, 0AH
JE DO_SNAKE
; STROBE3
TEST AL, 0CH
JE DO_ZIGZAG
; IF IT IS NOT TOGGLED, LETS GO AHEAD AND JUST JUMP BACK TO MAIN
MOV DX, PORTA
MOV AL, 00000000B
OUT DX, AL
JMP MAIN
DO_WORM:
CALL WORM
JMP NEXTPHASE
DO_SNAKE:
CALL SNAKE
JMP NEXTPHASE
DO_ZIGZAG:
CALL ZIGZAG
JMP NEXTPHASE
NEXTPHASE:
JMP MAIN
; PROCEDURES
PROC WORM ; STROBE1
MOV DX, PORTA
MOV AL, 00000001B
OUT DX, AL
CALL DELAY
MOV AL, 00000010B
OUT DX, AL
CALL DELAY
MOV AL, 00000100B
OUT DX, AL
CALL DELAY
MOV AL, 00001000B
OUT DX, AL
CALL DELAY
MOV AL, 10000000B
OUT DX, AL
CALL DELAY
MOV AL, 01000000B
OUT DX, AL
CALL DELAY
MOV AL, 00100000B
OUT DX, AL
CALL DELAY
MOV AL, 00010000B
OUT DX, AL
CALL DELAY
RET
ENDP WORM
PROC SNAKE ; STROBE2
MOV DX, PORTA
MOV AL, 00000001B
OUT DX, AL
CALL DELAY
MOV AL, 00010001B
OUT DX, AL
CALL DELAY
MOV AL, 00110001B
OUT DX, AL
CALL DELAY
MOV AL, 00110010B
OUT DX, AL
CALL DELAY
MOV AL, 00100110B
OUT DX, AL
CALL DELAY
MOV AL, 01000110B
OUT DX, AL
CALL DELAY
MOV AL, 11000100B
OUT DX, AL
CALL DELAY
MOV AL, 11001000B
OUT DX, AL
CALL DELAY
MOV AL, 10001000B
OUT DX, AL
CALL DELAY
MOV AL, 00001000B
OUT DX, AL
CALL DELAY
RET
ENDP SNAKE
PROC ZIGZAG ; STROBE3
MOV DX, PORTA
MOV AL, 00000001B
OUT DX, AL
CALL DELAY
MOV AL, 00100000B
OUT DX, AL
CALL DELAY
MOV AL, 00000100B
OUT DX, AL
CALL DELAY
MOV AL, 10000000B
OUT DX, AL
CALL DELAY
MOV AL, 00001000B
OUT DX, AL
CALL DELAY
MOV AL, 01000000B
OUT DX, AL
CALL DELAY
MOV AL, 00000010B
OUT DX, AL
CALL DELAY
MOV AL, 00010000B
OUT DX, AL
CALL DELAY
RET
ENDP SNAKE
PROC DELAY
MOV CX, 65000d
DELAY_LOOP:
LOOP DELAY_LOOP
RET
ENDP DELAY
ENDLESS:
JMP ENDLESS
CODE ENDS
END START