Monday, January 7, 2013

Microprocessor lab programs (CS&E)


Downcounter


.MODEL SMALL
.DATA

BASE_ADDRESS    EQU     0b000H
CONTROL EQU     BASE_ADDRESS+ 03H           ;control port address for 8255
PORTA   EQU     BASE_ADDRESS+00H           ;porta address for 8255
PORTB   EQU     BASE_ADDRESS+01H           ;portb address for 8255
PORTC   EQU     BASE_ADDRESS+02H


.code


MOV AL,80H
MOV DX,CONTROL
OUT DX,AL

AGAIN: MOV CX,99
       MOV AL,99H

CNTR:  MOV DX,PORTA
       OUT DX,AL
       PUSH CX
       CALL DELAY
       POP CX
       SUB AL,01
       DAS
       LOOP CNTR
       MOV AH,4CH
       INT 21H
       ;INT 3

DELAY PROC

       MOV CX,0FFFH

ZZZ:   PUSH CX
       MOV CX,0FFFFH
YYY:   NOP
       NOP
       NOP
       NOP
       LOOP YYY
       POP CX
       LOOP ZZZ
       RET
DELAY ENDP

END




==================================================================================================================================================================


 Fire and help



.model small
.stack 64
.data

BASE_ADDRESS    EQU     0b000H
CONTROL         EQU     BASE_ADDRESS + 03H
PORTA           EQU     BASE_ADDRESS + 00H
PORTB           EQU     BASE_ADDRESS + 01H             
PORTC           EQU     BASE_ADDRESS + 02H


FIRE DB 79H,50H,30H,71H
HELP DB 73H,38H,79H,76H

.CODE

MOV AX,@DATA
MOV DS,AX

MOV AL,80H
MOV DX,CONTROL
OUT DX,AL

MOV CX,10

FFFF:PUSH CX
     MOV CX,0FH

YYYY:PUSH CX
     MOV CX,0FFH

HHH: PUSH CX

     LEA SI,HELP
     MOV CX,04

     MOV AL,00H
XYZ: MOV DX,PORTC
     OUT DX,AL

     PUSH AX
     MOV AL,[SI]
     MOV DX,PORTA
     OUT DX,AL

     POP AX
     INC AL
     INC SI
     PUSH CX
     CALL DELAY
     POP CX

     LOOP XYZ

     POP CX
     LOOP HHH

     POP CX
     LOOP YYYY

     CALL DELAY

     MOV CX,0FH

YYYY2:PUSH CX
      MOV CX,0FFH

HHH2:PUSH CX
     LEA SI,FIRE
     MOV CX,04
     MOV AL,00H

XYZ2:MOV DX,PORTC
     OUT DX,AL
     PUSH AX
     MOV AL,[SI]
     MOV DX,PORTA
     OUT DX,AL
     POP AX
     INC AL
     INC SI
     PUSH CX
     CALL DELAY

     POP CX
     LOOP XYZ2

     POP CX
     LOOP HHH2

     POP CX
     LOOP YYYY2
     CALL DELAY

     POP CX
     LOOP FFFF

     jmp stop


stop:mov ah,4ch
     int 21h

DELAY PROC

MOV CX,0FH

ZZZ:PUSH CX
    MOV CX,05FFH

YYY:NOP
    NOP
    NOP
    NOP
    LOOP YYY
    POP CX
    LOOP ZZZ
    RET

DELAY ENDP


end


==================================================================================================================================================================



Multiplication of  x and y and display x*y8255 port addresses



.model small

.data

BASE_ADDRESS    EQU     0b000H
CONTROL         EQU     BASE_ADDRESS + 03H
PORTA           EQU     BASE_ADDRESS + 00H
PORTB           EQU     BASE_ADDRESS + 01H
PORTC           EQU     BASE_ADDRESS + 02H



msg1 db "SET VALUES FOR X  ONPORT B AND PRESS KEY",10,13,'$'
msg2 db "SET VALUES FOR Y  ONPORT B AND PRESS KEY",10,13,'$'
msg3 db "PRESS KEY to see the result on port a and PC lower ",10,13,'$'

.code


STO:  mov ax,@data
      mov ds,ax

      mov al,8Ah
      mov dx,CONTROL

      out dx,al

      mov al,00
      mov dx,PORTB
      out dx,al

      mov dx,PORTC
      out dx,al

      mov dx,offset msg1
      mov ah,09h
      int 21h

      mov ah,01
      int 21h

       mov dx,PORTB
       in al,dx
       mov cl,al

MUL00:mov dx,offset msg2
      mov ah,09h
      int 21h


      mov ah,01
      int 21h

      mov dx,PORTB
      in al,dx
      mov ch,al

MUL05:mov dx,offset msg3
      mov ah,09h
      int 21h


        mov ah,01
        int 21h

        mov al,ch
        mul cl
DISPLAY: mov dx,PORTA   ; low byte on porta
        out dx,al
        mov al,ah
        mov dx,PORTC    ; high byte on portc
        out dx,al

        mov ah,4ch
        int 21h

        end STO
        end


==================================================================================================================================================================

partiycheck in a given byte



.model small
.stack 20

.data

evenmsg db  'FF $'
oddmsg  db  '00 $'

BASE_ADDRESS    EQU     0b000H
CONTROL EQU     BASE_ADDRESS+ 03H          ;control port address for 8255
PORTA   EQU     BASE_ADDRESS+00H           ;porta address for 8255
PORTB   EQU     BASE_ADDRESS+01H           ;portb address for 8255
PORTC   EQU     BASE_ADDRESS+02H

.code

at0:    mov     ax,@data
        mov     ds,ax
        mov     dx,control

        MOV     AL,8AH          ;initialise A & LOWER C as output
        OUT     DX,AL           ;PORT B & UPPER C AT INPUT ports
LP:     mov     dx,portb
        in      al,dx
        or      al,al
        push    ax
        jpe     ewen

odd:    mov     dx,PORTA
        mov     al,00h
        out     dx,al

        lea dx,oddmsg
        mov ah,09h
        int 21h

        jmp     outputones
ewen:   mov     dx,PORTA
        mov     al,0ffh
        out     dx,al

        lea dx,evenmsg
        mov ah,09h
        int 21h



outputones:
        pop     ax
        mov     cx,08
        mov     dl,00
ror_al:
        ror     al,1
        jnc     zero
one:    inc     dl
zero:   loop    ror_al       

        mov     al,dl
        mov     dx,PORTC
        out     dx,al
       ; MOV     AH,0BH
       ; INT     21H
       ; OR      AL,AL
     
       ; JZ      LP
     
        MOV     AH,4CH
      INT   21H

end   at0


==================================================================================================================================================================

NAME RINGCOUNTERTITLE RINGCOUNTER USING LOGIC CONTROLLER



.MODEL SMALL
.STACK 20
.DATA
BASE_ADDRESS EQU 0b000H
PORTA           EQU BASE_ADDRESS  + 00H
PORTB           EQU BASE_ADDRESS  +01H
PORTC           EQU BASE_ADDRESS  +02H
CTRL            EQU BASE_ADDRESS  +03H

.CODE

 ST0:
        MOV     AX,@DATA
        MOV     DS,AX
        MOV     DX,CTRL
        MOV     AL,80H
        OUT     DX,AL

        MOV     AL,01
        MOV     DX,PORTA
        OUT     DX,AL
RPT:
        ROR     AL,1

        OUT     DX,AL
        MOV     BX,0FFH
LP1:    MOV     CX,0FFFFH
LP:     LOOP    LP
        DEC     BX
        JNZ     LP1
        PUSH    AX

        MOV     AH,0BH
        INT     21H
        OR     AL,AL
        POP     AX
        JZ     RPT
QUIT:
        MOV     AH,4CH
        INT     21H

        END     ST0
        END



==================================================================================================================================================================


rooling fashion


.model small
.stack 64
.data

BASE_ADDRESS    EQU     0b000H
CONTROL         EQU     BASE_ADDRESS + 03H
PORTA           EQU     BASE_ADDRESS + 00H
PORTB           EQU     BASE_ADDRESS + 01H
PORTC           EQU     BASE_ADDRESS + 02H

STRING DB 06H,3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,4FH
;STRING DB 79H,50H,30H,71H,00H,73H,38H,79H,76H,00H,6DH
;STRING DB 54H,77H,06H,5EH,54H,06H,6DH,06H,6DH,06H,74H,78H

.CODE

MOV AX,@DATA
MOV DS,AX
MOV AL,80H
MOV DX,CONTROL
OUT DX,AL
MOV BX,05

REINITIALIZE:MOV DI,00

YYYY:MOV CX,0CH

REFRESH:PUSH CX
        MOV SI,DI
        MOV CX,06
        MOV AL,00H

NEXT_DIGIT:MOV DX,PORTC
           OUT DX,AL
           PUSH AX
           MOV AL,STRING[SI]
           MOV DX,PORTA
           OUT DX,AL
           POP AX
           INC AX
           INC SI
           CMP SI,12
           JC CONTINUE
           MOV SI,00

CONTINUE:CALL DELAY
         LOOP NEXT_DIGIT
         POP CX
         LOOP REFRESH
         INC DI
         CMP DI,13
         JNZ YYYY
         DEC BX
         JNZ REINITIALIZE

EXIT: MOV AH,4CH
      INT 21H


DELAY PROC

PUSH CX
MOV CX,0FFH

OUTER:PUSH CX
      MOV CX,0FFFH

INNER:NOP
      NOP
      NOP
      LOOP INNER
      POP CX
      LOOP OUTER
      POP CX
      RET

DELAY ENDP

END










No comments:

Post a Comment