΢»úÔ­ÀíÓë½Ó¿Ú¼¼ÊõʵÑ鱨¸æ

MOV CX,4

AGA: ROL DX,4

MOV AL,DL AND AL,0FH CMP AL,10

JC NEXT2 ADD AL,7

NEXT2: ADD AL,30H

MOV AH,0EH

INT 10H LOOP AGA

RET

SHWORD ENDP CODE ENDS END START Áù£®ÊÕ»ñÌå»á¡£

±¾´ÎÊÔÑéÖУ¬¶ÔÕâ´ÎʵÑé¶ÔÖжÏÌØÐÔºÍ8259ÖжϿØÖÆÆ÷µÄ¹¤×÷Ô­ÀíÓÐÁËÒ»¶¨µÄÀí½â,ÔÚʵ¼ù²Ù×÷ÖÐÐ޸ijÌÐòµÄʱºòûÓаѶÁÈëµÄɨÃèÂëAL´«µÝµ½DLÖÐ,µ¼ÖÂʵÑé½á¹û²»¶Ô,×îºóÔÚÀÏʦµÄÖ¸µ¼ÏÂÐÞ¸ÄÕýÈ·¡£¶ÔÖжϵÄÀí½âÔÚºÜ¶àµØ·½´æÔÚ×ÅÈÏʶ²»×㣬¶ÔÓÚÖжϳÌÐòµÄÉè¼Æ»¹ÓдýÇ¿»¯¡£Ï£Íû¿ÉÒÔ¼ÓÇ¿¶ÔÀíÂÛ֪ʶµÄÈÏʶÖð²½ÔöÇ¿ÔÚÕâ·½ÃæµÄʵ¼ùÄÜÁ¦¡£

ʵÑéÆß¡¢PCI×ÜÏßÖжÏÓ¦ÓÃ

Ò»£®ÊµÑéÄÚÈÝ 1£®¡¾Ê¾Àý¡¿±àдһʵÑé³ÌÐò£¬ÀûÓÃʵÑé×°ÖÃÌṩµÄÖжÏÔ´£¬Íê³Éÿ°´¶¯Ò»´ÎÂö³å¿ª¹Ø£¬²úÉúÒ»´ÎÖжϣ¬ÏòÏÔʾÆ÷Êä³ö×Ö·û¡°7¡±¡£ 2£®ÐÞ¸ÄʾÀý³ÌÐò£¬¿ØÖÆÖжÏÏìÓ¦´ÎÊýΪ10´Î£¬¼´µ±µÚ11´ÎÒÔºó°´¶¯Âö³å¿ª¹Ø£¬ÆÁÄ»Éϲ»ÔÙÏÔʾ¡°7¡±¡£ ¶þ£® ·ÖÎöÉè¼ÆË¼Ïë

1£®TD-PIT-BʵÑéϵͳ±à³ÌÐÅÏ¢¼òҪ˵Ã÷

£¨1£©£®±¾ÊµÑéµÄ½Ó¿Úµç·ÊÇÔÚPD-PIT-BʵÑé×°ÖÃÉÏ´î½ÓÍê³É£¬¶øPC»ú×÷ΪÖ÷»ú¿ØÖƸÃʵÑé×°Ö᣶þÕßÖ®¼äͨ¹ýPCI×ÜÏßÀ©Õ¹¿¨¼°×ª½ÓÂß¼­ÔÚPD-PIT-BʵÑé×°ÖÃÉÏÌṩÁËÒ»¸ö·ÂÕæISAµÄ×ÜÏß½Ó¿Ú£¬Óû§¿ÉÒÔ»ùÓڸýӿڶԳ£ÓýӿÚоƬ½øÐÐÓ¦Óñà³Ì¡£TD-PIT-BʵÑéϵͳµÄÓ²¼þ»·¾³£¬²Î¼û¸½Â¼¡£

£¨2£©£®ÒªÀûÓ÷ÂÕæISAµÄ×ÜÏß½Ó¿Ú×ÊÔ´£¬À©Õ¹½Ó¿Úµç·£¬Ê×ÏȱØÐëÕÆÎÕʵÑé×°ÖûñÈ¡µÄϵͳÅäÖÃ×ÊÔ´£¬¼´PCI×ÜÏß×ÊÔ´ÅäÖõÄÓйØÄÚÈÝ¡£

Ö´ÐÐPCI_BIOS.EXE£¬»ñȡʵÑéÓÃPCI×ÜÏßÀ©Õ¹¿¨·ÖÅäµÄµØÖ·¿Õ¼ä¼°ÖжÏÇëÇóÏß¡£¼ÙÉèÖ´ÐÐPCI_BIOS.EXEºóÆÁÄ»ÏÔʾ£º

25

´ÓÒÔÉÏ»ñÈ¡µÄÐÅÏ¢¿ÉÖªµÀ£¬±¾ÊµÑéÓõÄPCI×ÜÏßÀ©Õ¹¿¨ÉêÇëÁË£º ? 4¸öI/O¿Õ¼ä£¨×îºóһλΪ1À´±íʾ£©£¬ÆäÊ×µØÖ··Ö±ðÊÇ£º0B800H£¬0BC00H£¬0C000H£¬

0C400H¡£ ? ?

Ò»¸ö´æ´¢Æ÷¿Õ¼ä£¨×îºóһλΪ0À´±íʾ£©£¬ÆäÊ×µØÖ·ÊÇ£º5000000H¡£ Ò»¸öÖжÏÇëÇóIRQ9

£¨3£©£®È·¶¨TD-PIT-BʵÑé×°ÖÃÖи÷½Ó¿Úµç·ËùʹÓõĶ˿ڵØÖ·

±¾ÏµÍ³ÖÐPCIÅäÖÿռäµÄÊ×µØÖ·ÊÇPCI×ÜÏßÀ©Õ¹¿¨ÉêÇëµÄµÚÒ»¸öI/O¿Õ¼ä£¨¼´BASE 0£©¡£ËùÒÔPCI¸÷¿ØÖƼĴæÆ÷µÄµØÖ·¶¨ÒåΪ£º

BASE 0µÄÊ×µØÖ·0B800H + ¸÷¿ØÖƼĴæÆ÷µÄÆ«ÒÆµØÖ·

¶øI/O²¿·ÖʵÑéʹÓõÄÊÇPCI×ÜÏßÀ©Õ¹¿¨ÉêÇëµÄµÚÈý¸öI/O¿Õ¼ä£¨¼´BASE 2£©¡£¸÷I/O½Ó¿ÚоƬµÄ¶Ë¿ÚµØÖ·¶¨ÒåΪ£º

BASE 2µÄÊ×µØÖ·0C000H + ¸÷¶Ë¿ÚµÄÆ«ÒÆµØÖ· 2£®ÊµÑé˵Ã÷¼°´¦ÀíÁ÷³Ì

±¾ÊµÑéʹÓÃʵÑé×°ÖÃÌṩµÄÖжÏÇëÇóÐźÅIRQ£¬ÀûÓÃKK1µÄ¸ºÂö³å×÷ΪÖжÏÔ´£¬Ã¿°´Ò»´ÎKK1£¬ÔÚÖжϴ¦ÀíÖÐÍê³É×Ö·û¡°7¡±µÄÏÔʾ¡£

ʹÓÃʵÑé×°ÖÃÌṩµÄIRQÐźţ¬³ýÁËÒª²Ù×÷PC»úµÄ8259¼Ä´æÆ÷£¬»¹ÐèÒª²Ù×÷TD-PIT-PCI×ÜÏßÀ©Õ¹¿¨ÉϵĿØÖƼĴæÆ÷¡°INTCSR¡±ºÍ¡°IMB4¡±£¬²Å¿ÉÒÔʵÏÖÖжϵijõʼ»¯¡¢Çå³ýµÈ¡£

?

PCI_BIOS.EXEʵÑé×°ÖûñÈ¡µÄϵͳÅäÖÃ×ÊÔ´£¬È·¶¨¿ØÖƼĴæÆ÷INTCSR£¨Æ«ÒÆ38H~ 3BH£©ºÍIMB4¼Ä´æÆ÷£¨Æ«ÒÆ1FH£©µÄ¶Ë¿ÚµØÖ·£º

BASE 0µÄÊ×µØÖ·0B800H + ¸÷¿ØÖƼĴæÆ÷µÄÆ«ÒÆµØÖ·

¼°ÖжϺÅIRQ9¡£

? ³õʼ»¯PCIÖжÏ

£¨1£© ³õʼ»¯INTCSR£ºÏòINTCSRµÄ¶Ë¿ÚдÈë003F1F00H£¬¼´0B838Hд00H£¬0B839H

д1FH£¬0B83AHд3FH£¬0B83BHд00H¡£ £¨2£© ³õʼ»¯ÖжÏÏòÁ¿£ºÔÚÐÞ¸ÄÖжÏÈë¿ÚµØÖ·Ê±£¬½¨ÒéÏȱ£´æÔ­À´µÄÈë¿ÚµØÖ·¡£²é±í

7-1»ñµÃIRQ9¶ÔÓ¦µÄÖжÏÏòÁ¿ºÅΪ71H£¬ÖжÏÈë¿ÚµØÖ·¼´Îª01C4H£¬²¢½«¸ÃµØÖ·±£´æ£¬Ì滻ΪÓû§×Ô¼ºµÄÖжϷþÎñ³ÌÐòÈë¿ÚµØÖ·¡£

£¨3£© ÉèÖÃPC»ú8259ÖÐ¶ÏÆÁ±Î¼Ä´æÆ÷£¬¶ÔӦλΪ0£¬ÔÊÐíÖжϡ£21HÖÐÉèÖÃ0~7ºÅ

ÆÁ±Î룬A1HÖÐÉèÖÃ8~15ºÅÆÁ±Îλ¡£Í¬Ñù±£´æÔ­ÏÈµÄÆÁ±Îλ¡£IRQ9ºÅÖжÏÐë

?

½«A1HÖеÄλ1ÖÃ0¡£ Çå³ýʵÑéÓÃÖжϵÄÖжÏÔ´

£¨1£© ÇåPCI°å¿¨µÄÖжϱêÖ¾£º¶ÔIMB4¼Ä´æÆ÷µÄµÚ3×Ö½Ú£¨IMB_BYTE3£©×öÒ»¶Á²Ù

×÷£¬¶Ë¿ÚµØÖ·Îª0B81FH£¬È»ºóÏòINTCSRµÚ2×Ö½Ú£¨0B83AH£©Ð´Èë3FH¡£ £¨2£© ÇåPC»ú8259ÖжϱêÖ¾£ºÉèÖÃ8259µÄOCW2£¬¸´Î»ÖжϱêÖ¾¡££¨IRQ9ÖжÏÏò

A0HдÈë61H£¬Ïò20HдÈë62H¡££©

£¨3£© Í˳ö³ÌÐò·µ»ØDOSʱ»Ö¸´ÏµÍ³µÄ³õʼ»¯µÄÉèÖãºÊ×ÏȽ«±£´æµÄÆÁ±ÎÃüÁî×Ö»Ö¸´

26

µ½ÆÁ±Î¼Ä´æÆ÷ÖУ¬ÖжϷþÎñ³ÌÐòÈë¿ÚµÄ¶ÎµØÖ·ºÍÆ«ÒÆµØÖ·»Ö¸´µ½ÖжÏÏòÁ¿±íÖУ¬

?

È»ºó·µ»ØDOS¡£

²Î¿¼ÊµÑéÁ÷³ÌÈçͼ12-1Ëùʾ¡£

Èý£®³ÌÐòÇåµ¥¼°Ïà¹Ø×¢½â

£»ÏÈÖ´ÐÐPCI_BIOS.EXE£¬»ñµÃPCI°å¿¨ÉêÇëµÄµÚÒ»¸öI/O¿Õ¼äµÄÊ×µØÖ·¼° £»ÖжϺţ¬ÐÞ¸ÄÏÂÃæCPU·ÃÎÊPCI²Ù×÷¼Ä´æÆ÷µÄ¶Ë¿ÚµØÖ·¡£

£»ÓÉÖжϺÅÈ·¶¨ÏàÓ¦ÖжÏÏòÁ¿¼°OCW1¡¢OCW2ÃüÁî×Ö¡£

INTCSR_BYTE0 EQU 9438H £»ÐÞ¸ÄPCI²Ù×÷¼Ä´æÆ÷µÄ¶Ë¿ÚµØÖ· INTCSR_BYTE1 EQU 9439H INTCSR_BYTE2 EQU 943AH INTCSR_BYTE3 EQU 943BH IMB4_BYTE3 EQU 941FH DATA SEGMENT CSBAK DW ? IPBAK DW ? MKBAK DB ? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: CLI

MOV AX,DATA

MOV DS,AX £»³õʼ»¯PCI¼Ä´æÆ÷ MOV DX,INTCSR_BYTE0 MOV AL,00H OUT DX,AL

MOV DX,INTCSR_BYTE1 MOV AL,1FH OUT DX,AL

27

MOV DX,INTCSR_BYTE2 MOV OUT MOV MOV

AL,3FH DX,AL

DX,INTCSR_BYTE3 AL,00H

OUT DX,AL £»±£´æºÍÌæ»»ÖжÏÈë¿ÚµØÖ· MOV AX,0000H

MOV ES,AX

MOV DI,01CCH £»INT 73H,01CCH=73H*4£¬¸ù¾ÝÖжϺÅÐÞ¸Ä MOV AX,ES:[DI]

MOV IPBAK,AX £»IP MOV AX,OFFSET MYINT CLD STOSW

MOV AX,ES:[DI] £»CS MOV CSBAK,AX

MOV AX,SEG MYINT

STOSW £»±£´æÖÐ¶ÏÆÁ±Î×ּĴæÆ÷ÄÚÈÝ IN AL,0A1H

MOV MKBAK,AL

AND AL,0F7H £»´ò¿ªÖÐ¶ÏÆÁ±Î룬¸ù¾ÝÖжϺÅÐÞ¸Ä OUT 0A1H,AL

STI £»µÈ´ý A1: NOP

CALL BREAK JMP A1 £»========ÖжϷþÎñ³ÌÐò=========== MYINT: PUSH DS PUSH AX

PUSH DX £»ÇåPCI°åÖжϱêÖ¾ MOV DX,IMB4_BYTE3 IN AL,DX

MOV DX,INTCSR_BYTE2 MOV AL,3FH

OUT DX,AL£»Çå8259ÖжϱêÖ¾ MOV AL,63H £»¸ù¾ÝÖжϺÅÐÞ¸Ä OUT 0A0H,AL

MOV AL,62H

OUT 20H,AL £»ÏÔʾ×Ö·û¡®7¡¯ MOV AH,0EH MOV AL,37H

INT 10H POP DX POP AX

28

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)