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 | |
Total Downloads | 52 |
Total Views | 137 |
it contains information about MPMC lab mannual...
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
...