µÚ°ËÕÂϰÌâ
END START
±àÒ»³õʼ»¯³ÌÐò£¬Ê¹8255AµÄPC5¶ËÊä³öÒ»¸ö¸ºÌø±ä¡£Èç¹ûÒªÇóPC5¶ËÊä³öÒ»¸ö¸ºÂö³å£¬Ôò³õʼ»¯³ÌÐòÓÖÊÇʲôÇé¿ö£¿
´ð£º£¨1£©ÉèÖÃPC5Ϊ¸ºÌø±ä£¨´Ó1µ½0£©£¬¼´ÉèÖÃPC5Òý½ÅΪ0Öµ£¬Æä¿ØÖÆ×ÖÓ¦ÉèÖÃΪ£º0000 1010£¨¼´0AH£©¡£
¹ÊÆä³õʼ»¯³ÌÐòΪ£ºMOV DX, 8255¿ØÖƶ˿ڵØÖ· MOV AL,0AH OUT DX, AL
£¨2£©¸ºÂö³åΪ£¨´Ó0µ½-1£©£¬¹ÊÆä¿ØÖÆ×ÖΪ£º0000 1011£¨¼´0BH£© ¹ÊÆä³õʼ»¯³ÌÐòΪ£ºMOV DX, 8255¿ØÖƶ˿ڵØÖ· MOV AL,0BH
OUT DX, AL
Éè8251AµÄ¿ØÖƺÍ״̬¶Ë¿ÚµØÖ·Îª52H£¬Êý¾ÝÊäÈë/Êä³ö¿ÚµØÖ·Îª50H£¨Êä³ö¶Ë¿ÚδÓã©£¬ÊäÈë50¸ö×Ö·û£¬½«×Ö·û·ÅÔÚBUFFERRËùÖ¸µÄÄڴ滺³åÇøÖС£Çëд³öÕâ¶Î³ÌÐò¡£
´ð£º·ÖÎö£º£¨1£©¹¤×÷·½Ê½Ñ¡Ôñ
±¾ÌâûÓн²ÇåÓÃͬ²½»òÒì²½£¬¹Ê¿É×ÔÑ¡£¬ÔÚ´ËÑ¡ÔñÒì²½´«ËÍ£¬²¨ÌØÂÊΪ16£¬Å¼Ð£Ñ飬ֹͣλΪ2λ£»8¸öÊý¾Ýλ¡£
´Ó¶øÈ·¶¨¹¤×÷·½Ê½Ñ¡Ôñ×ÖΪ£º1111 1110£¬¼´Îª0FEH£» £¨2£©²Ù×÷ÃüÁî¿ØÖÆ×ÖÑ¡Ôñ
¸ù¾ÝÌâÒ⣬ÊÇͨ¹ý8251A×÷ΪÊäÈë½Ó¿ÚÓ㬴ÓÍâÉèÊäÈë50¸ö×Ö·ûµ½Ö÷»úµÄ»º³åÇø£¬±ØÐëÔÊÐí½ÓÊÕ£¬ÔòÆäRXEλÐèÖÃ1£»¶ø8251A¼È¿É×÷ÊäÈë¡¢ÓÖ¿É×÷Êä³ö½Ó¿ÚÓã¬¹ÊÆä¿ØÖÆ×ÖÖбØÐëÉèΪ¼ÈÔÊÐí½ÓÊÕ£¨RXE/D2=1£¬ÓÖÔÊÐí·¢ËÍ£¨TXEN/D0=1£©£»µ«Ôڴ˼ÈÈ»×÷Ϊ½ÓÊÕÆ÷´ÓÍâÉ轫Êý¾ÝË͵½CPU£¬¹ÊÆäÇëÇó·¢ËÍλRTS/D5=0£»ÓÖÒòCPUËͳöÊý¾Ý£¬¹ÊÆäÊý¾ÝÖÕ¶Ë×¼±¸ºÃÐźÅDTR/D1=0¡£
ÓÉ´Ë£¬ÍƳöÆä¹¤×÷·½Ê½×Ö¿ÉÉèΪ 00010101£¬¼´Îª15H£» £¨3£©³õʼ»¯³ÌÐòΪ£º MOV DX£¬52H
MOV AL£¬FEH
OUT DX£¬AL £»ÒÔÉÏÈý¾ä½«¹¤×÷·½Ê½Ñ¡Ôñ×ÖË͵½¿ØÖƶ˿Ú52HÖÐ
£»-------------------------ÒÔÏÂÁ½¾äÉè²Ù×÷ÃüÁî¿ØÖÆ×ÖËÍË͵½¿ØÖƶ˿ÚÖÐ MOV AL£¬15H OUT DX£¬AL
£»---------------------------ÒÔ϶Ը÷¼Ä´æÆ÷½øÐгõʼ»¯£» MOV DX£¬ 50H £»½«Êý¾ÝÊäÈë¶Ë¿ÚºÅË͵½DXÖУ» MOV CX£¬32H £»½«´«ËÍ×Ö½ÚÊý50£¨¼´32H£©Ë͵½¼ÆÊý¼Ä´æÆ÷CX MOV DI£¬OFFSET BUFFER £»½«Äڴ滺³åÆ÷BUFFERµÄÆðʼµØÖ·Ë͸øDI
£»---------------------------²éѯÊäÈë¶Ë¿Ú״̬£¬ÒÔÈ·¶¨ÊÇ·ñ×¼±¸ºÃ´«ËÍÊý¾Ý
BEGIN£ºIN AL, 52H £»´Ó״̬¶Ë¿Ú52H¶ÁÈë״̬×ÖË͵½AL£» TEST AL£¬02H £»²âÊÔÆä״̬λRXRDYÊÇ·ñ×¼±¸ºÃ£»
JZ BEGIN
£»---------------------²éѯÆäÈý¸ö³ö´íУÑéλÊÇ·ñÓÐÎÊÌ⣻
TEST AL£¬ 38H£»¼ì²âÆä³ö´íλ0011 10000£¬Èý¸ö³ö´í±ê־λ·Ö±ðÊÇ֡УÑé
£» ÉÁ³öУÑéºÍÆæÅ¼´í±ê־λ£»
JZ ERROR IN AL£¬ DX£»½«ÊäÈëÊý¾Ý¶Ë¿ÚºÅµÄÊý¾ÝË͵½AL MOV [DI]£¬AL£»½«ALÖеÄÊý¾ÝË͵½ÄÚ´æµØÖ·ÎªDIµÄµ¥ÔªÖÐ
INC DI
LOOP BEGIN £»Èçû´í£¬ÔòÔÙÊäÈëÏÂÒ»¸ö×Ö·û JUMP EXIT £»ÈçÊäÈëÂú×ã80¸ö×Ö·û£¬Ôò½áÊø
ERROR£º CALL ERR-0UT £»µ÷³ö´í´¦Àí EXIT£º¡¡
Éè״̬¶Ë¿ÚµØÖ·Îª86H£¬Êý¾Ý¶Ë¿ÚµØÖ·Îª87H£¬ÍⲿÊäÈëÐÅÏ¢×¼±¸ºÃ״̬±ê־ΪD7=1£¬ÇëÓòéѯ·½Ê½Ð´³ö¶ÁÈëÍⲿÐÅÏ¢µÄ³ÌÐò¶Î¡£ ´ð£ºLOP1: MOV DX, 86H IN AL, DX
£»×¢£º8λµØÖ·¿ÉÖ±½ÓÓÃÊäÈëÓï¾ä£¬¼´ÒÔÉÏÁ½¾ä¿ÉÓà IN AL, 86HÌæ»»¡£ TEST AL, 10H JZ LOP1
IN AL, 87H
HLT
Éè״̬¶Ë¿ÚµØÖ·Îª76H£¬Êý¾Ý¶Ë¿ÚµØÖ·Îª75H£¬ÍⲿÉ豸ÊÇ·ñ×¼±¸ºÃÐÅÏ¢ÓÉD7λ´«ËÍ£¬D7=1Ϊ׼±¸ºÃ£¬D7=0Ϊδ׼±¸ºÃ£¨Ã¦£©£¬ÇëÓòéѯ·½Ê½Ð´³ö£ºCPUÏòÍⲿ´«ËÍÊý¾ÝµÄ³ÌÐò¶Î¡£
´ð£º LOP1: IN AL, 76H TEST AL, 10H JZ LOP1 MOV AL, DATA OUT 75H, AL HLT ²¹³äÌ⣺
¼ÙÉè8255AµÄµØÖ·Îª0060~0063H£¬ÊÔ±àдÏÂÁÐÇé¿öµÄ³õʼ»¯³ÌÐò£º
A×éÉèÖÃΪ·½Ê½1£¬ÇÒ¶Ë¿ÚA×÷ΪÊäÈ룬PC6ºÍPC7×÷ΪÊä³ö£¬B×éÉèÖÃΪ·½Ê½1£¬ÇÒ¶Ë¿ÚB×÷ΪÊäÈë¡£
´ð£º¸ù¾ÝÌâÒ⣬8255AµÄ¿ØÖÆ×ÖӦΪ£º10110 110£¨¼´B6H£© ¹ÊÆä³õʼ»¯³ÌÐòΪ£º MOV DX, 0063H £»¿ØÖƶ˿ڵØÖ·Îª0063H MOV AL, B6H
OUT DX, AL