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