OR AL,00000010B OUT 92H,AL POP AX RET OPENA20 ENDP
DELAY PROC ;¹Ø±Õa20µØÖ·Ïß PUSH CX MOV CX,1000H LOOPX: LOOP LOOPX POP CX RET DELAY ENDP
CLOSEA20 PROC ;¹Ø±Õa20µØÖ·Ïß PUSH AX IN AL,92H AND AL,11111101B OUT 92H,AL POP AX RET CLOSEA20 ENDP CODE ENDS
END START
ʵÑé½á¹û£ºÏòTHS¿¨´æ´¢¿Õ¼ä·´¸´Ð´256¸÷A~Z£¬È»ºóÏÔʾ¶ÁÌáʾÐÅÏ¢£¬×îºóÔÙ´ÓTHS
¿¨´æ´¢¿Õ¼ä¶ÁÈë256¸öA~Z£¬²¢ÔÚÆÁÄ»ÉÏÏÔʾ¶ÁÈëÊý¾Ý¡£
ʵÑéÎå Æß¶ÎÊýÂë¹ÜʵÑé
Ò»¡¢ÊµÑéÄ¿µÄ
ÕÆÎÕÊýÂë¹ÜÏÔʾÊý×ÖµÄÔÀí£¬¼ÓÉî¶Ô8255µÄÀí½âºÍÓ¦Óᣠ¶þ¡¢ÊµÑéÄÚÈÝ
£±¡¢¾²Ì¬ÏÔʾ£º½«£Ì£Å£Ä £Ê£Õ£Í£ÐÌõÏßÈ«²¿È¡Ï£¬½«£Ì£Å£Ä£±ºÍ£Ç£Î£ÄÏàÁ¬£¬£¸£²£µ£µ£Ã£Ó£¼£££¾£Ã£Ó£°£¬
£Ð£Â£°£¼££¾£Ì£Å£Ä££Á£¬£Ð£Â£±£¼££¾£Ì£Å£Ä££Â£¬£Ð£Â£²£¼££¾£Ì£Å£Ä££Ã£¬£Ð£Â£³£¼££¾£Ì£Å£Ä££Ä£¬£Ð£Â£´£¼££¾£Ì£Å£Ä££Å£¬£Ð£Â£µ£¼££¾£Ì£Å£Ä££Æ£¬£Ð£Â£¶£¼££¾£Ì£Å£Ä££Ç£¬£Ð£Â£·£¼££¾£Ì£Å£Ä££Ä£Ð¡£±à³Ì´Ó¼üÅÌÊäÈëһλʮ½øÖÆÊý×Ö£¨£°££¹£©£¬ÔÚÆß¶ÎÊýÂë¹ÜÉÏÏÔʾ³öÀ´¡£
£²¡¢¶¯Ì¬ÏÔʾ£º½«£Ì£Å£Ä£²£¼££¾£Ð£Á£°£¬£Ì£Å£Ä£±£¼££¾£Ð£Á£±£¬ÆäËûµÄ½ÓÏßͬ¾²Ì¬ÏÔʾ·½Ê½Ò»Ñù¡£
±à³ÌÔÚÁ½¸öÊýÂë¹ÜÉ϶¯Ì¬ÏÔʾ¡°£µ£¶¡±
£³¡¢¶¯Ì¬ÏÔʾѡ×÷£ºÊµÑéÁ¬ÏߺÍʵÑ飲¶¯Ì¬ÏÔʾһÑù£¬±à³ÌÔÚÁ½¸öÊýÂë¹ÜÉÏÑ»·ÏÔʾ00-99¡£ Èý¡¢±à³ÌÌáʾ
£±¡¢ÊµÑéÏäÉÏµÄÆß¶ÎÊýÂë¹ÜΪ¹²ÒõÐͶÎÂ룬²ÉÓÃͬÏàÇý¶¯£¬ÊäÈë¶Ë¼Ó¸ßµçƽ£¬Ñ¡ÖеÄÊýÂë¹ÜÁÁ£¬
λÂëÊäÈë¶ËµÍµçƽѡÖС£ £²¡¢Æß¶ÎÊýÂë¹ÜµÄ×ÖÐÍ´úÂë±íÈçϱí
ËÄ¡¢³ÌÐò¿òͼ£¨Èçͼ5£©
ʵÑé³ÌÐò
1¡¢¾²Ì¬ÏÔʾ
;* ¼üÅÌÊäÈëÊý¾Ý(0-9)¿ØÖÆLEDÊýÂë¹ÜÏÔʾ led jumpµ÷Ïßñȫ²¿È¡ÏÂÀ´¡£;* ;*CS0--8255CS,PB0~PB7ÒÀ´Î½Óled-A ~ led-dp led1 ½ÓµØ;*
DATA SEGMENT
IOPORT EQU 0A800H IO8255B EQU IOPORT+0A2H IO8255CON EQU IOPORT+0A6H
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
MESG1 DB 0DH,0AH,'Input a num (0--9),other key is exit:',0DH,0AH,'$' DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
MOV DX,IO8255CON ;ʹ8255µÄB¿ÚΪÊä³ö·½Ê½ MOV AX,90H OUT DX,AL
SSS: MOV DX,OFFSET MESG1 ;ÏÔʾÌáʾÐÅÏ¢ MOV AH,09H
INT 21H
MOV AH,01 ;´Ó¼üÅ̽ÓÊÕ×Ö·û INT 21H
CMP AL,'0' ;ÊÇ·ñСÓÚ0 JL EXIT ;ÈôÊÇÔòÍ˳ö CMP AL,'9' ;ÊÇ·ñ´óÓÚ9 JG EXIT ;ÈôÊÇÔòÍ˳ö
SUB AL,30H ;½«ËùµÃ×Ö·ûµÄASCIIÂë¼õ30H
MOV BX,OFFSET LED ;bxΪÊýÂë±íµÄÆðʼµØÖ· XLAT ;Çó³öÏàÓ¦µÄ¶ÎÂë MOV DX,IO8255B ;´Ó8255µÄA¿ÚÊä³ö OUT DX,AL
JMP SSS ;תSSS EXIT: MOV AH,4CH ;·µ»Ø INT 21H CODE ENDS
END START
ʵÑé½á¹û£ºÏȰÑÌøÏßð°Îµô£¬ÔÙ´Ó¼üÅÌÊäÈë0~9µÄÈÎÒâÊý×Ö£¬LEDÊýÂë¹ÜÏÔʾÏà
Ó¦µÄÊý×Ö£¬È磺¼üÅÌÊäÈë9£¬ledÊýÂë¹ÜÏÔʾÊý×Ö9¡£
2¡¢¶¯Ì¬ÏÔʾ
;* LEDÊýÂë¹ÜʵÑé ¶¯Ì¬ÏÔʾ¡°56¡± ;*
;* led jumpµ÷Ïßñȫ²¿È¡ÏÂÀ´,CS0--8255CS,PB0~PB7ÒÀ´Î½Óled-A~led-dp led2<->PA0,LED1<->PA1;*
DATA SEGMENT
IOPORT EQU 0A400H
IO8255A EQU IOPORT+0A0H IO8255B EQU IOPORT+0A2H
IO8255CON EQU IOPORT+0A6H
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;¶ÎÂë BUFFER1 DB 5,6 ;´æ·ÅÒªÏÔʾµÄ¸öλºÍʮλ BZ DW ? ;λÂë DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA
MOV DS,AX
MOV DX,IO8255CON ;½«8255ÉèΪB,A¿ÚÊä³ö MOV AL,80H
OUT DX,AL
MOV DI,OFFSET BUFFER1 ;ÉèdiΪÏÔʾ»º³åÇø LOOP2: MOV BH,02
LLL: MOV BYTE PTR BZ,BH
PUSH DI DEC DI ADD DI, BZ
MOV BL,[DI] ;blΪҪÏÔʾµÄÊý POP DI MOV BH,0
MOV SI,OFFSET LED ;ÖÃledÊýÂë±íÆ«ÒÆµØÖ·ÎªSI ADD SI,BX ;Çó³ö¶ÔÓ¦µÄledÊýÂë
MOV AL,BYTE PTR [SI]
MOV DX,IO8255B ;×Ô8255BµÄ¿ÚÊä³ö OUT DX,AL
MOV AL,BYTE PTR BZ ;ʹÏàÓ¦µÄÊýÂë¹ÜÁÁ MOV DX,IO8255A OUT DX,AL PUSH AX MOV AX,05
DELAY1:
MOV CX,60000
DELAY: LOOP DELAY ;ÑÓʱ DEC AX
JNZ DELAY1 POP AX
MOV BH,BYTE PTR BZ SHR BH,1 JNZ LLL
MOV DX,0FFH MOV AH,06
INT 21H
JE LOOP2 ;Óмü°´ÏÂÔòÍ˳ö MOV DX,IO8255B
MOV AL,0 ;¹ØµôÊýÂë¹ÜÏÔʾ OUT DX,AL
MOV AH,4CH ;·µ»Ø INT 21H CODE ENDS
END START
ʵÑé½á¹û£ºÔÚLEDÊýÂë¹ÜÉÏÃæ¶¯Ì¬ÏÔʾÊý×Ö56£¬Ò²Òª°ÑÌøÏßðȫ²¿°ÎÏ¡£
3¡¢¶¯Ì¬ÏÔʾ
;* LEDÊýÂë¹ÜʵÑé ¶¯Ì¬Ñ»·ÏÔʾ¡°00-99 led jumpµ÷Ïßñȫ²¿È¡ÏÂÀ´¡£ *;
;* CS0--8255CS,PB0~PB7ÒÀ´Î½Óled-A~led-dp led2<->PA0,LED1<->PA1 *;
DATA SEGMENT
IOPORT EQU 0A800H
IO8255A EQU IOPORT+0A0H
IO8255B EQU IOPORT+0A2H IO8255CON EQU IOPORT+0A6H
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;¶ÎÂë BUFFER1 DB 0,0 ;´æ·ÅÒªÏÔʾµÄʮλºÍ¸öλ BZ DW ? ;λÂë DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
MOV DX,IO8255CON ;½«8255ÉèΪA,B¿ÚÊä³ö MOV AL,80H OUT DX,AL
MOV DI,OFFSET BUFFER1 ;ÉèdiΪÏÔʾ»º³åÇø LOOP1: MOV CX,0100H ;Ñ»·´ÎÊý LOOP2: MOV BH,02
LLL: MOV BYTE PTR BZ,BH