΢»ú½Ó¿Ú¼¼ÊõʵÑ鱨¸æ ÏÂÔØ±¾ÎÄ

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