not-joosh / Strobe-Patterns

Strobe Patterns | Interfaced with 8086 Microprocessor, 8086 Assembly, Proteus Simulation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Strobe-Patterns

A project interfaced with an 8086 microprocessor, implemented in 8086 Assembly, and simulated in Proteus.

Description

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.

Proteus Simulation (Hardware with Software)

Ratificar_Strobe

8086 Assembly Software Script

;====================================================================
; 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

About

Strobe Patterns | Interfaced with 8086 Microprocessor, 8086 Assembly, Proteus Simulation


Languages

Language:Assembly 100.0%