΢»úµÚÈý°æ½Ì²ÄϰÌâ²Î¿¼´ð°¸ Âíά»ª ÏÂÔØ±¾ÎÄ

ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2026/5/12 9:37:52ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£

΢»úÔ­ÀíÓë½Ó¿Ú¼¼Êõ£¨µÚÈý°æ£©¿ÎÌò¼Öü°ÐèÒª¹Ø×¢Ï°Ìâ²Î¿¼´ð°¸ 21

OUT 0A1H£¬AL

MOV AL£¬00000010B £»ICW3 OUT 0A0H£¬AL

MOV AL£¬00000001B £»ICW4 OUT 0A1H£¬AL

£¨2£©

MOV AL£¬00101000B £»Ö÷ƬOCW1 OUT 21H£¬AL

MOV AL£¬00100000B £»´ÓƬOCW1 OUT 0A1H£¬AL MOV SI£¬1000 MOV DI£¬2000 MOV AL£¬0AH OUT 20H£¬AL IN AL£¬20H MOV BL,AL INC SI MOV AL,0BH OUT 20H,AL IN AL£¬20H INC SI IN AL,21H MOV AL£¬0AH

OUT 0A0H£¬AL £»¶Á´ÓƬIRRÃüÁî IN AL£¬0A0H £»¶Á´ÓIRR½øALÖÐ MOV BH,AL INC DI MOV AL,0BH OUT 0A0H,AL

;¶Á´ÓƬISRÃüÁî

IN AL£¬0A0H £»¶Á´ÓƬISR½øALÖÐ MOV ES:[DI],AL ;´ÓƬISR´æÈëÄÚ´æ INC DI IN AL,0A1H MOV AL,BL MOV CX,8 MOV DL,0

;¼Æ1µÄ¸öÊý ;¶Á´ÓƬIMR ;È¡Ö÷ƬIRR

MOV ES:[DI],AL ;´ÓƬIMR´æÈëÄÚ´æ

;´ÓƬIRRÔÝ´æBH

MOV ES:[DI],AL ;´ÓƬIRR´æÈëÄÚ´æ

;¶ÁÖ÷ƬIMR

MOV DS:[SI],AL ;Ö÷ƬIMR´æÈëÄÚ´æ

;¶ÁÖ÷ƬISRÃüÁî £»¶ÁÖ÷ƬISR½øALÖÐ £»¶ÁÖ÷ƬIRRÃüÁî £»¶ÁIRR½øALÖÐ ;Ö÷ƬIRRÔÝ´æBL

£¨3£©

MOV DS:[SI],AL ;Ö÷ƬIRR´æÈëÄÚ´æ

MOV DS:[SI],AL ;Ö÷ƬISR´æÈëÄÚ´æ

22 IA-32 & Intel64΢»úÔ­ÀíÓë½Ó¿Ú¼¼Êõ£¨µÚÈý°æ£© ²¼ÖõÄϰÌâ²Î¿¼´ð°¸

LP10:

LP11:

LP20:

EIOP:

LRET: (4) INSTR:

STOP:

WRITEAA: RET0:

SHR AL,1 ADDC DL,0 LOOP LP10

CMP DL,2

;>=2?

JAE LP11 JMP LRET MOV AL,BH ;È¡´ÓƬIRR MOV CX,8 MOV DL,0

;¼Æ1µÄ¸öÊý SHR AL,1 ADDC DL,0 LOOP LP20

CMP DL,1

;=1? JZ EIOP JMP LRET MOV AL,20H

;EOIÃüÁî OUT 20H,AL ;OCW3 OUT 0A0H,AL MOV AL,BL NOT AL

;¶ÔÖ÷ƬIRRÈ¡·´ OUT 21H,AL

;ÆÁ±ÎÖ÷ƬδÉêÇëµÄÖжÏ

MOV AL,BH NOT AL

;¶Ô´ÓƬIRRÈ¡·´ OUT 0A1H,AL

;ÆÁ±Î´ÓƬδÉêÇëµÄÖжÏ

NOP .EXIT PUSH AX

PUSH DX MOV DX,3C0H IN AX,DX

MOV WORD PTR DATABUF,AX CMP AX,2005H JA STOP CMP AX,0 JZ WRITEAA MOV AL,55H MOV DX,3C1H OUT DX,AL JMP RET0

MOV BYTE PTR DATABUF+5,0AAH MOV AL,20H

;EOIÃüÁî

΢»úÔ­ÀíÓë½Ó¿Ú¼¼Êõ£¨µÚÈý°æ£©¿ÎÌò¼Öü°ÐèÒª¹Ø×¢Ï°Ìâ²Î¿¼´ð°¸ 23

OUT 20H,AL OUT 0A0H,AL POP DX POP AX IRET CLI

MOV DX,OFFSET INSTR MOV AX,2577H INT 21H IN AL,0A1H OUT 0A1H,AL STI

MOV DX,OFFSET INSTALL INT 27H

;¶ÁIMR

AND AL,01111111B ;´ò¿ª´ÓƬIR7ÖжÏ

;ÖжÏÀàÐͺÅ77H(¶ÔÓ¦´ÓƬµÄIR7)

(5) INSTALL:

7-12 Èçͼ7.16ËùʾµÄ8259¼¶ÁªÏµÍ³£¬Èç¹ûÖ÷ƬµØÖ·Îª0300HºÍ0302H£¬´ÓƬµØÖ·Îª0304HºÍ0306H£¬Ôò£º

(1) Èç¹ûÖ÷ƬÖжÏÀàÐͺÅΪ50H~57H,´ÓƬÖжÏÀàÐͺÅΪ98H~9FH,Ö÷Æ¬ÎªÌØÊâȫǶÌ×·½Ê½£¬Ð´³öÓÐ

¹Ø³ÌÐòƬ¶Î¡£

(2) Èç¹ûϵͳÖÐËùÓÐÖжÏÔ´ÎÞ·¨Çø·ÖÇø·ÖÓÅÏȼ¶±ð,Ôòд³öÏàÓ¦µÄ³ÌÐòƬ¶ÎÒÔÊÊÓ¦ÕâÖÖÓÅÏȼ¶ (3) Èç¹ûÖ÷Ƭ8259µ±Ç°×î¸ßÓÅÏȼ¶ÎªIR5£¬²¢Ê¹¸ÃÇëÇó±äΪÏÂÒ»¸öÑ­»·µÄ×îµÍÓÅÏÈ£¬ÔòOCW2µÄ

¸ñʽÔõÑù£¿

½â£º£¨1£©ÉèÖÃÖжÏÀàÐͺţ¬ÌØÊâȫǶÌ×

Ö÷Ƭ£º

MOV DX£¬300H MOV AL£¬00010001B OUT DX£¬AL INC DX

MOV AL£¬50H OUT DX£¬AL OUT DX,AL OUT DX£¬AL ´ÓƬ£º

MOV DX£¬304H MOV AL£¬00010001B OUT DX£¬AL INC DX

MOV AL£¬98H

£»Ð´ICW1

£»Ð´ICW2 ;дÖ÷ƬICW3 £»Ð´ICW4

MOV AL,00000100B MOV AL£¬00010101B

£»Ð´ICW1

24 IA-32 & Intel64΢»úÔ­ÀíÓë½Ó¿Ú¼¼Êõ£¨µÚÈý°æ£© ²¼ÖõÄϰÌâ²Î¿¼´ð°¸

OUT DX£¬AL OUT DX,AL OUT DX£¬AL MOV DX£¬300H

£»Ð´ICW2 ;д´ÓƬICW3 £»Ð´ICW4

MOV AL,00000010B MOV AL£¬00000001B £¨2£©Ó¦¸ÃÑ¡ÔñÑ­»·ÓÅÏÈ·½Ê½ MOV AL£¬10000000B OUT DX£¬AL MOV DX£¬304H MOV AL£¬10000000B OUT DX£¬AL £¨3£©

MOV DX£¬300H MOVAL£¬11000101B OUT DX£¬AL MOV DX£¬304H MOVAL£¬11000101B OUT DX£¬AL

£»´ÓƬOCW2

7-16 ÈçºÎ¼ÓÔØÖжÏÏòÁ¿£¿Ð´³ö¼ÓÔØÖжÏÀàÐͺÅΪ50Hµ½ÄÚ´æµÄ³ÌÐòƬ¶Î¡£

´ð£º¼ÓÔØÖжÏÏòÁ¿ÓÐÁ½ÖÖ»ù±¾·½Ê½£¬Ò»ÖÖÊÇÖ±½Ó×°Èë·½·¨£¬Ò»ÖÖÊÇÀûÓÃϵͳ¹¦Äܵ÷ÓüÓÔØ·½·¨¡£ÆäÖÐÖ±½Ó×°Èë·¨Êǽ«ÖжÏÏòÁ¿µÄ¶ÎµØÖ·ºÍÆ«ÒÆµØÖ·Ö±½ÓдÈëÖжÏÏòÁ¿±í¶ÔÓ¦µØÖ·ÇøÓò£¬¶øÏµÍ³¹¦Äܵ÷Ó÷¨ÊÇÀûÓÃDOS¹¦Äܵ÷ÓõÄÈë¿Ú²ÉÓÃÈí¼þÖ¸ÁîÀ´¼ä½Ó×°ÈëÖжÏÏòÁ¿µ½ÖжÏÏòÁ¿±íÖС£

Ö±½Ó×°È뷨д50HºÅÖжϵÄÖжÏÏòÁ¿µÄ³ÌÐòƬ¶Î£º

MOV AX,0

MOV ES,AX £»Ê¹ESÖ¸Ïò0¶Î

MOV BX,50H*4 £»ÖжÏÀàÐͺÅΪ50H (´Ó0-255) MOV AX,OFFSET INTSR £»ÖжϷþÎñ³ÌÐòÆ«ÒÆµØÖ· MOV ES:WORD PTR [BX],AX £»Æ«ÒƵØÖ·Ð´ÈëÏòÁ¿±í MOV AX,SEG INTSR £»ÖжϷþÎñ³ÌÐò¶ÎµØÖ·

MOV ES:WORD PTR [BX+2],AX £»Ê¹ESÖ¸Ïò0¶Î£¬¶ÎµØÖ·Ð´ÈëÏòÁ¿±í ©©

INTSR: PUSH AX;ÖжϷþÎñ³ÌÐò PSUH BX ©©

POP BX POP AX IRET £»ÖжϷµ»Ø

£»Ð´Ö÷ƬOCW2

£»Ð´´ÓƬOCW2

£»Ö÷ƬOCW2

ϵͳ¹¦Äܵ÷Ó÷¨Ð´50HºÅÖжϵÄÖжÏÏòÁ¿µÄ³ÌÐòƬ¶Î£º

MOV DX,SEG INTSR £»È¡ÏÖÖжϷþÎñ³ÌÐòÈë¿ÚµØÖ·µÄ¶ÎµØÖ·¡úDS

MOV DS,DX

MOV DX,OFFSET INTSR £»È¡ÖжϷþÎñ³ÌÐòÈë¿ÚµØÖ·µÄÆ«ÒÆµØÖ·¡úDX MOV AH,25H MOV AL£¬50H £»ÖжÏÀàÐͺÅÔÚALÖУ¨50H£© INT 21H £»×°ÈëÖжÏÏòÁ¿

??

INTSR: PUSH AX;ÖжϷþÎñ³ÌÐò PSUH BX