MPMC - it contains information about MPMC lab mannual PDF

Title MPMC - it contains information about MPMC lab mannual
Author Ishwarya Selvam
Course Microprocessor and Microcontroller
Institution Anna University
Pages 37
File Size 878.8 KB
File Type PDF
Total Downloads 52
Total Views 137

Summary

it contains information about MPMC lab mannual...


Description

8086 PROGAMS USING MASM ARITHMETIC OPERATIONS ADD model.small .data .code start: org 0000h mov ax,06h mov bx,05h add ax,bx int 3 end

SUBTRACTION .model.small .data .code start: org 0000h mov ax,05h mov bx,03h sub ax,bx int 3 end MULTIPLICATION .model.small .data .code start: org 0000h mov ax,03h mov bx,04h MUL bx int 3 end DIVISION .model.small .data .code start: org 0000h 1

mov ax,03h mov bl,04h div bl int 3 end LOGICAL OPERATIONS AND .model.small .data .code start: org 0000h mov al,02h mov bl,04h and al,bl int 3 end OR .model.small .data .code start: org 0000h mov al,02h mov bl,04h or al,bl int 3 end NOT .model.small .data .code start: org 0000h mov al,01h not al int 3

2

end MOVE A BLOCK OF DATA WITHOUT OVERLAP .MODEL SMALL .DATA ; X DB 01H,02H,03H,04H,05H ;Initialize Data Segments Memory Locations ; Y DB 05 DUP(0) .CODE START: ORG 0000H MOV CL,08 MOV SI,1400H MOV DI,1450H LOOP1: LODSB MOV [DI],AL INC DI DEC CL JNZ LOOP1 INT 3 END CODE CONVERSION ASCII TO HEXA .MODEL SMALL .DATA .CODE START: ORG 0000 MOV AL,32H SUB AL,30H CMP AL,10H JB LOOP1 JZ LOOP1 SUB AL,07 LOOP1: INT 3 END GRAY CODE CONVERSION .MODEL SMALL .DATA .CODE START: ORG 0000H MOV BX,1200H MOV SI,1150H LODSB XLAT MOV DI,1151H MOV [DI],AL INT 3 END HEXA TO ASCII .MODEL SMALL 3

.DATA .CODE START: ORG 0000 MOV AL,0AH CMP AL,09H JZ LOOP1 JB LOOP1 ADD AL,07H LOOP1: ADD AL,30H INT 3 END MATRIX ADDITION .MODEL .SMALL .DATA .CODE START: ORG 0000H MOV CL,09H MOV SI,2000H MOV DI,3000H LOOP1: MOV AL,[SI] MOV BL,[DI] ADD AL,BL MOV [DI],AL INC DI INC SI DEC CL JNZ LOOP1 INT 3 END SEARCHING .model.small .data .code start: org 0000h MOV DI,1300h MOV SI, 1200h MOV CL,50h MOV DL,0Ah loop1: LODSB CMP DL,AL 4

JZ loop2 DEC CL JNZ loop1 HLT loop2: MOV [DI],AL DEC SI MOV BX,SI INC DI MOV [DI],BL INC DI MOV [DI],BL INT 3 end STRING CONCATENATE .MODEL SMALL .DATA .CODE ORG 0000h MAIN: CALL INIT

;Call the LCD initialization

mov cl,02h mov ch,05h mov si,1500h mov bx,1600h go: mov al,[si] inc si dec cl jnz go go1: mov al,[bx] inc bx dec ch jnz go1 mov bx,1800h mov si,1500h mov cl,02h mov al,80h out dx,al

;Charcters start to print from 4th column of the first row

5

call lcdena mov al,0ch out dx,al call lcdena

;LCD display ON and cursor OFF

go2: mov al,[si] mov [bx],al out dx,al call lcdenadata inc bx inc si dec cl jnz go2 mov si,bx mov bx,1600h mov ch,05h go3: mov al,[bx] mov[si],al out dx,al call lcdenadata inc bx inc si dec ch jnz go3 int 3

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;initlcd =lcd initialisation ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! INIT: MOV AH,00H MOV DX,0FF26H MOV AL,80H OUT DX,AL MOV

DX,0FF20H

;8255 PORT A DATABITS

MOV AL,38H OUT DX,AL CALL LCDENA

;FUNCTION SET

MOV AL,38H OUT DX,AL call LCDENA

;FUNCTION SET

MOV

;FUNCTION SET

AL,38H

6

OUT DX,AL CALL LCDENA MOV AL,0FH OUT DX,AL CALL LCDENA

;DISPLAY ON/OFF

MOV AL,06H OUT DX,AL CALL LCDENA

;ENTRY MODE

MOV OUT CALL CALL RET

;CLEAR SCREEN

AL,01H DX,AL LCDENA LCDENA

LCDENA: MOV DX,0FF22H MOV AL,4H OUT DX,AL MOV OUT CALL MOV RET

AL,0H DX,AL DELAY DX,0FF20H

LCDENADATA: MOV DX,0FF22H MOV AL,5H OUT DX,AL MOV AL,0H OUT DX,AL CALL DELAY MOV DX,0FF20H RET

;Choosing the PORTB of 8255 ;(0000 0 0 1 0 0 ) ;(0000 0 0 1 0 0 )

;Choosing the PORTB of 8255 ;(0000 0 1 0 1 ) ;(0000 0 0 0 0 )

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;delay function ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DELAY: PUSH BX MOV BX,0FFFFH D1: DEC BX JNZ D1 POP BX RET

;Store the Values in Stack ;Load the value FFFFh in BX register ;Decrement BX register ;Jump to D1 untill BX is not equal to Zero ;Get the value from Stack ;Return statement

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7

;

cseg ends

END STRING CONCATENATE LCD DISPLAY .MODEL SMALL org 0000h .DATA .CODE org 0000h MAIN: CALL INIT

;Call the LCD initialization

mov cl,02h mov ch,05h mov si,1500h mov bx,1600h go: mov al,[si] inc si dec cl jnz go go1: mov al,[bx] inc bx dec ch jnz go1 mov bx,1800h mov si,1500h mov cl,02h mov al,80h out dx,al call lcdena

;Charcters start to print from 4th column of the first row

mov al,0ch out dx,al call lcdena

;LCD display ON and cursor OFF

go2: 8

mov al,[si] mov [bx],al out dx,al call lcdenadata inc bx inc si dec cl jnz go2 mov si,bx mov bx,1600h mov ch,05h go3: mov al,[bx] mov[si],al out dx,al call lcdenadata inc bx inc si dec ch jnz go3 int 3

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;initlcd =lcd initialisation ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! INIT: MOV AH,00H MOV DX,0FF26H MOV AL,80H OUT DX,AL MOV

DX,0FF20H

;8255 PORT A DATABITS

MOV AL,38H OUT DX,AL CALL LCDENA

;FUNCTION SET

MOV AL,38H OUT DX,AL call LCDENA

;FUNCTION SET

MOV AL,38H OUT DX,AL CALL LCDENA

;FUNCTION SET

MOV AL,0FH OUT DX,AL CALL LCDENA

;DISPLAY ON/OFF

MOV

;ENTRY MODE

AL,06H

9

OUT DX,AL CALL LCDENA MOV OUT CALL CALL RET

AL,01H DX,AL LCDENA LCDENA

LCDENA: MOV DX,0FF22H MOV AL,4H OUT DX,AL MOV OUT CALL MOV RET

AL,0H DX,AL DELAY DX,0FF20H

LCDENADATA: MOV DX,0FF22H MOV AL,5H OUT DX,AL MOV AL,0H OUT DX,AL CALL DELAY MOV DX,0FF20H RET

;CLEAR SCREEN

;Choosing the PORTB of 8255 ;(0000 0 0 1 0 0 ) ;(0000 0 0 1 0 0 )

;Choosing the PORTB of 8255 ;(0000 0 1 0 1 ) ;(0000 0 0 0 0 )

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;delay function ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DELAY: PUSH BX MOV BX,0FFFFH D1: DEC BX JNZ D1 POP BX RET

;Store the Values in Stack ;Load the value FFFFh in BX register ;Decrement BX register ;Jump to D1 untill BX is not equal to Zero ;Get the value from Stack ;Return statement

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;

cseg ends

END

10

STRING COMPARE .MODEL SMALL org 0000h .DATA .CODE org 0000h MAIN: CALL INIT

;Call the LCD initialization

MOV CH,06H MOV CL,06H MOV BX,1500H CALL AGAIN

;Initialize the Register 'CH' ;Initialize the Register 'CL' ;Load the Password in the Address 1500 ;Call the loop

AGAIN: MOV AL,[BX] INC BX DEC CL JNZ again

;Move the value from the BX register to AL ;Increment BX register by 1 ;Decrement CL by 1 ;Continue until the CL register not equal to zero

mov BX,1500h mov SI,1600h call again1

;Again move the address 1500 to BX ;Need an other address to enter the Password ;Call the Next loop

MOV AL,[SI]

; ;Compare each character with the stored Passwor

again1: cmp AL,[BX] jne not_equal

;Jump to wrong loop if the character in 'BX' matches with 'SI'.

INC BX INC SI

;Increment BX ;Increment SI

DEC CH JNZ again1 call equal

;Decrement CH ;Continue until the CH register not equal to zero

MOV DX,0FF20H MOV AL,0CH OUT DX,AL CALL LCDENA

;Choosing PORT A of 8255 ;Display ON and cursor OFF

equal:

;Call lcd enable

MOV AL,53h ;ASCII value of char 'S' is 53h OUT DX,AL CALL LCDENADATA MOV AL,54h ;ASCII value of char 'T' is 54h OUT DX,AL CALL LCDENADATA 11

MOV AL,52h ;ASCII value of char 'R' is 52h OUT DX,AL CALL LCDENADATA MOV AL,49h ;ASCII value of char 'I' is 49h OUT DX,AL CALL LCDENADATA MOV AL,4Eh ;ASCII value of char 'N' is 4Eh OUT DX,AL CALL LCDENADATA MOV AL,47h ;ASCII value of char 'G' is 47h OUT DX,AL CALL LCDENADATA mov AL,20h out DX,AL call LCDENADATA

;ASCII value of char "space" is 20h

MOV AL,49h ;ASCII value of char 'I' is 49h OUT DX,AL CALL LCDENADATA MOV AL,53h ;ASCII value of char 'S' is 53h OUT DX,AL CALL LCDENADATA equal1: mov AL,20h out DX,AL call LCDENADATA

;ASCII value of char "space" is 20h

mov AL,45h out DX,AL call LCDENADATA

;ASCII value of char 'E' is 45h

mov AL,51h out DX,AL call LCDENADATA

;ASCII value of char 'Q' is 51h

mov AL,55h out DX,AL call LCDENADATA

;ASCII value of char 'U' is 55h

mov AL,41h out DX,AL call LCDENADATA

;ASCII value of char 'A' is 41h

mov AL,4Ch out DX,AL call LCDENADATA

;ASCII value of char 'L' is 4Ch

12

int 21h not_equal: MOV AL,53h ;ASCII value of char 'S' is 53h OUT DX,AL CALL LCDENADATA MOV AL,54h ;ASCII value of char 'T' is 54h OUT DX,AL CALL LCDENADATA MOV AL,52h ;ASCII value of char 'R' is 52h OUT DX,AL CALL LCDENADATA MOV AL,49h ;ASCII value of char 'I' is 49h OUT DX,AL CALL LCDENADATA MOV AL,4Eh ;ASCII value of char 'N' is 4Eh OUT DX,AL CALL LCDENADATA MOV AL,47h ;ASCII value of char 'G' is 47h OUT DX,AL CALL LCDENADATA mov AL,20h out DX,AL call LCDENADATA

;ASCII value of char "space" is 20h

MOV AL,49h ;ASCII value of char 'I' is 49h OUT DX,AL CALL LCDENADATA MOV AL,53h ;ASCII value of char 'S' is 53h OUT DX,AL CALL LCDENADATA mov AL,20h out DX,AL call LCDENADATA MOV AL,0CH OUT DX,AL CALL LCDENA

;ASCII value of char "space" is 20h

;LCD display ON and cursor OFF

mov AL,4Eh out DX,AL call LCDENADATA

;ASCII value of char 'N' is 4Eh

mov AL,4Fh

;ASCII value of char 'O' is 4Fh 13

out DX,AL call LCDENADATA mov AL,54h out DX,AL call LCDENADATA

;ASCII value of char 'T' is 54h

mov AL,20h out DX,AL call LCDENADATA

;ASCII value of char "space" is 20h

MOV AL,0C3h OUT DX,AL CALL LCDENA

;Charcters start to print from 4th column of the 2nd row

call equal1

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;initlcd =lcd initialisation ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! INIT: MOV AH,00H MOV DX,0FF26H MOV AL,80H OUT DX,AL MOV

DX,0FF20H

;8255 PORT A DATABITS

MOV AL,38H OUT DX,AL CALL LCDENA

;FUNCTION SET

MOV AL,38H OUT DX,AL call LCDENA

;FUNCTION SET

MOV AL,38H OUT DX,AL CALL LCDENA

;FUNCTION SET

MOV AL,0FH OUT DX,AL CALL LCDENA

;DISPLAY ON/OFF

MOV AL,06H OUT DX,AL CALL LCDENA

;ENTRY MODE

MOV OUT CALL CALL

;CLEAR SCREEN

AL,01H DX,AL LCDENA LCDENA

14

RET LCDENA: MOV DX,0FF22H MOV AL,4H OUT DX,AL MOV AL,0H OUT DX,AL CALL DELAY MOV DX,0FF20H RET LCDENADATA: MOV DX,0FF22H MOV AL,5H OUT DX,AL MOV AL,0H OUT DX,AL CALL DELAY MOV DX,0FF20H RET

;Choosing the PORTB of 8255 ;(0000 0 0 1 0 0 ) ;(0000 0 0 1 0 0 )

;Choosing the PORTB of 8255 ;(0000 0 1 0 1 ) ;(0000 0 0 0 0 )

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;delay function ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DELAY: PUSH BX MOV BX,0FFFFH D1: DEC BX JNZ D1 POP BX RET

;Store the Values in Stack ;Load the value FFFFh in BX register ;Decrement BX register ;Jump to D1 untill BX is not equal to Zero ;Get the value from Stack ;Return statement

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;

cseg ends

END

LCD INITIALISATION PROGRAM FOR STRING COMPARE .MODEL SMALL org 0000h .DATA 15

.CODE org 0000h MAIN: CALL INIT

;Call the LCD initialization

MOV CH,06H MOV CL,06H MOV BX,1500H CALL AGAIN

;Initialize the Register 'CH' ;Initialize the Register 'CL' ;Load the Password in the Address 1500 ;Call the loop

AGAIN: MOV AL,[BX] INC BX DEC CL JNZ again

;Move the value from the BX register to AL ;Increment BX register by 1 ;Decrement CL by 1 ;Continue until the CL register not equal to zero

mov BX,1500h mov SI,1700h call again1

;Again move the address 1500 to BX ;Need an other address to enter the Password ;Call the Next loop

MOV AL,[SI]

; ;Compare each character with the stored Passwor

again1: cmp AL,[BX] ;call string_is jne not2 INC BX INC SI ;call string_is DEC CH JNZ again1 call equal

;Jump to wrong loop if the character in 'BX' matches with 'SI'. ;Increment BX ;Increment SI ;Decrement CH ;Continue until the CH register not equal to zero

string_is: MOV DX,0FF20H MOV AL,0CH OUT DX,AL CALL LCDENA

;Choosing PORT A of 8255 ;Display ON and cursor OFF ;Call lcd enable

MOV AL,53h ;ASCII value of char 'S' is 53h OUT DX,AL CALL LCDENADATA MOV AL,54h ;ASCII value of char 'T' is 54h OUT DX,AL CALL LCDENADATA MOV AL,52h ;ASCII value of char 'R' is 52h OUT DX,AL CALL LCDENADATA

16

MOV AL,49h ;ASCII value of char 'I' is 49h OUT DX,AL CALL LCDENADATA MOV AL,4Eh ;ASCII value of char 'N' is 4Eh OUT DX,AL CALL LCDENADATA MOV AL,47h ;ASCII value of char 'G' is 47h OUT DX,AL CALL LCDENADATA MOV AL,49h ;ASCII value of char 'I' is 49h OUT DX,AL CALL LCDENADATA MOV AL,53h ;ASCII value of char 'S' is 53h OUT DX,AL CALL LCDENADATA equal: ;MOV AL,01h ;OUT DX,AL ;CALL LCDENA

;Clear LCD

MOV AL,84h OUT DX,AL CALL LCDENA

;Charcters start to print from 4th column of the first row

MOV AL,0CH OUT DX,AL CALL LCDENA

;LCD display ON and cursor OFF

equal1: mov AL,45h out DX,AL call LCDENADATA

;ASCII value of char 'E' is 45h

mov AL,51h out DX,AL call LCDENADATA

;ASCII value of char 'Q' is 51h

mov AL,55h out DX,AL call LCDENADATA

;ASCII value of char 'U' is 55h

mov AL,41h out DX,AL call LCDENADATA

;ASCII value of char 'A' is 41h

mov AL,4Ch out DX,AL call LCDENADATA

;ASCII value of char 'L' is 4Ch

17

int 21h not2: MOV AL,82h OUT DX,AL CALL LCDENA MOV AL,0CH OUT DX,AL CALL LCDENA

;Charcters start to print from 4th column of the first row

;LCD display ON and cursor OFF

mov AL,4Eh out DX,AL call LCDENADATA

;ASCII value of char 'N' is 4Eh

mov AL,4Fh out DX,AL call LCDENADATA

;ASCII value of char 'O' is 4Fh

mov AL,54h out DX,AL call LCDENADATA

;ASCII value of char 'T' is 54h

mov AL,20h out DX,AL call LCDENADATA

;ASCII value of char "space" is 20h

call equal1

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;initlcd =lcd initialisation ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! INIT: MOV AH,00H MOV DX,0FF26H MOV AL,80H OUT DX,AL MOV

DX,0FF20H

;8255 PORT A DATABITS

MOV AL,38H OUT DX,AL CALL LCDENA

;FUNCTION SET

MOV AL,38H OUT DX,AL call LCDENA

;FUNCTION SET

MOV AL,38H OUT DX,AL CALL LCDENA

;FUNCTION SET

18

MOV AL,0FH OUT DX,AL CALL LCDENA

;DISPLAY ON/OFF

MOV AL,06H OUT DX,AL CALL LCDENA

;ENTRY MODE

MOV OUT CALL CALL RET

;CLEAR SCREEN

AL,01H DX,AL LCDENA LCDENA

LCDENA: MOV DX,0FF22H MOV AL,4H OUT DX,AL MOV OUT CALL MOV RET

AL,0H DX,AL DELAY DX,0FF20H

LCDENADATA: MOV DX,0FF22H MOV AL,5H OUT DX,AL MOV AL,0H OUT DX,AL CALL DELAY MOV DX,0FF20H RET

;Choosing the PORTB of 8255 ;(0000 0 0 1 0 0 ) ;(0000 0 0 1 0 0 )

;Choosing the PORTB of 8255 ;(0000 0 1 0 1 ) ;(0000 0 0 0 0 )

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;delay function ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DELAY: PUSH BX MOV BX,0FFFFH D1: DEC BX JNZ D1 POP BX RET

;Store the Values in Stack ;Load the value FFFFh in BX register ;Decrement BX register ;Jump to D1 untill BX is not equal to Zero ;Get the value from Stack ;Return statement

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

19

;

cseg ends

END PASSWORD CHECKING ;;PASSWORD CHECKING DATA SEGMENT PASSWORD DB 'VIKASHA' LEN EQU ($-PASSWORD) MSG1 DB 10,13,'ENTER YOUR PASSWORD: $' MSG2 DB 10,13,' WELCOME TO VIKASHA 8086 KIT MSG3 DB 10,13,' INCORRECT PASSWORD $' NEW DB 10,13,'$' INST DB 10 DUP(0) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,@DATA MOV DS,AX LEA DX,MSG1 MOV AH,09H INT 21H MOV SI,00 UP1: MOV AH,08H INT 21H CMP AL,0DH JE DOWN MOV [INST+SI],AL MOV DL,'*' MOV AH,02H INT 21H INC SI JMP UP1 DOWN: MOV BX,00 MOV CX,LEN CHECK: MOV AL,[INST+BX] MOV DL,[PASSWORD+BX] CMP AL,DL JNE FAIL INC BX LOOP CHECK LEA DX,MSG2 MOV AH,09H INT 21H JMP FINISH FAIL: 20

$'

LEA DX,MSG3 MOV AH,009H INT 21H FINISH: INT 3 CODE ENDS END START END LCD FOR PASSWORD CHECKING .MODEL SMALL org 0000h .DATA .CODE org 0000h MAIN: CALL INIT

;Call the LCD initialization

MOV CH,06H MOV CL,06H MOV BX,1500H CALL AGAIN

;Initialize the Register 'CH' ;Initialize the Register 'CL' ;Load the Password in the Address 1500 ;Call the loop

AGAIN: MOV AL,[BX] INC BX DEC CL JNZ again

;Move the value from the BX register to AL ;Increment BX register by 1 ;Decrement CL by 1 ;Continue until the CL register not equal to zero

mov BX,1500h mov SI,1700h call again1

;Again move the address 1500 to BX ;Need an other address to enter the Password ;Call the Next loop

MOV AL,[SI] cmp AL,[BX] jne wrong

; ;Compare each character with the stored Password ;Jump to wrong loop if the character in 'BX' matches with

INC BX INC SI DEC CH JNZ again1 call correct

;Increment BX ;Increment SI ;Decrement CH ;Continue until the CH register not equal to zero

again1:

'SI'.

correct:

MOV DX,0FF20H MOV AL,0CH OUT DX,AL CALL LCDENA MOV AL,43H

;Choosing PORT A of 8255 ;Display ON and cursor OFF ;Call lcd enable ;ASCII value of char 'C' is 43h 21

OUT DX,AL CALL LCDENADATA MOV AL,4FH ;ASCII value of char 'O' is 4Fh OUT DX,AL CALL LCDENADATA MOV AL,52H ;ASCII value of char 'R' is 52h OUT DX,AL CALL LCDENADATA MOV AL,52H ;ASCII value of char 'R' is 52h OUT DX,AL CALL LCDENADATA MOV AL,45H ;ASCII value of char 'E' is 45h OUT DX,AL CALL LCDENADATA MOV AL,43H ;ASCII value of char 'C' is 43h OUT DX,AL CALL LCDENADATA MOV AL,54H ;ASCII value of char 'T' is 54h OUT DX,AL CALL LCDENADATA call password goto: MOV AL,01h OUT DX,AL CALL LCDENA

;Clear LCD

MOV AL,84h OUT DX,AL CALL LCDENA

;Charcters start to print from 4th column of the first row

MOV AL,0CH OUT DX,AL CALL LCDENA

;LCD display ON and cursor OFF

mov AL,57H out DX,AL call LCDENADATA

;ASCII value of char 'W' is 57h

mov AL,45H out DX,AL call LCDENADATA

;ASCII value of char 'E' is 45h

mov AL,4CH out DX,AL call LCDENADATA

;ASCII value of char 'L' is 4Ch
...


Similar Free PDFs