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