第六章 输入输出和中断技术
DESCRIPTION
第六章 输入输出和中断技术. 本章内容 基本概念 I/O 端口的编址 输入输出的基本方法: 无条件 、 查询 、 中断 、 DMA 中断 中断基本概念 8086/8088 中断系统 8259 中断控制器 * DMA* DMA 的基本概念 DMA 工作过程 DMA 的三种传输方式 . 地址总线 AB. CPU. I/O 接 口. 输 出 设 备 O. I/O 接 口. 存 储 器 M. 输 入 设 备 I. 数据总线 DB. 控制总线 CB. 微型计算机中 I/O 接口的作用. CPU. I/O 接口 - PowerPoint PPT PresentationTRANSCRIPT
-
I/O DMA8086/80888259*DMA*DMADMADMA
-
I/O
I/OI/OCPUPCI/OI/OCPU
-
6.1 /I/O6.1.1 I/O I/O(Buffer)() (A/DD/A) () ()()
-
I/O CPU I/O
-
I/O I/O (IO)(O)(I)
()6.1.2 I/O
-
I/O
-
/
: MCS-510(1MB)(960KB)I/O(64KB)FFFFFHEFFFFHF0000H1.
-
: I/OI/O00000H(1MB)I/O(64KB)FFFFHFFFFFHI/O0000H2. : 8088/8086
-
MCS-51
-
8088/80862016
-
8088/8086 D15/D7~D0D15/D7~D0
-
I/O() /0 I/O/MI/O2016/8A15/7 A0I/O64K(65536)/256I/O0FFFFH/0~FFHIBM PC10 A9 A0 1024I/O(03FFH) : , 8088/8086 CPUI/O
-
A15 A0 OUT IN 1(,)16 16 6.1.3 I/O 4(8255/8253)2F0H2F3H2F0HA15A2A1A04: A0~A15=?
I/O(4)A0A1CSA0A1A2~A15I/O(1)
CSA0~A15
-
: (): PC(): : PC()6.1.4 I/O
-
6.2 6.2.1
DBD0-D7 CB(IORIOW ABA0-A15or or
-
CPU/I/OPort)I/O(80X86 64K) ----CPU/I/O/ ()()
-
/(/) /() () CPU I/O321()I/O
-
8088CPU, I/O
-
8088CPU, I/O
-
()
-
874LS2446.3A0~A15IORD0~D7ABE
-
83FCH83FFH NEXT1NEXT2
MOV DX83FCHIN AL DXAND AL0FFHJZ NEXT1JMP NEXT2000000000111111110
K1
I1
K5
K3
K4
K6
K7
K2
K0
I2
+5V
I0
I3
D0-D7
DO0
DO7
~
74LS244
E1
E2
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
IOR
I4
I5
I6
I7
-
D:8D(+8)(6.56.6)74LS273(D6.5)74LS374(D6.8)=1=1.........+5VRD0D7CPQ0Q7...D0D7A0A15IOW74LS273R6-6MOV DX0FFFFHMOV AL01000001BOUT DXAL : 1774LS3746-9
-
(I/O)(I/O)
-
/7/87p255 6.1074LS273774LS273F0H74LS244K0K374LS244F1H0000111170F7
-
abcdefghabCdefghcomabcdefghcom
-
0~F7
-
O1 I1O2 I2O3 I3O4 I4E1 K0K3+5VG1
G2A
G2BCBA174LS244D0 Q0 | Q1D7 Q2 Q3 Q4CP Q5 Q6 Q7 abcdefgh7406874LS273Rx8174LS138D0D7IOWIORY0Y174LS273 00F0 H = 0000 0000 1111 0000 B74LS244 00F1 H = 0000 0000 1111 0001 B&1A7A4A15A8A3A2A1A0D0D1D2D37
-
Seg7DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,67H,77H,7CH,39H,5EH,79H,71HLEABX, Seg77MOVAH, 0GO:MOVDX, 0F1HF1HINAL, DXANDAL, 0FH4MOVSI, AX7MOVAL, BX+SI7 :XLATMOVDX, 0F0H7F0HOUTDX, ALJMPGO
-
CPUI/O/CPUCPU(1) (2) ( )(3) (4) DMA ( Direct Memory Access ) ()
-
CPU(-) MOV DX, 284H IN AL, DX: CPUALA15~A0284H0000 0010 1000 0100B0174LS244 E1/E2:
-
A15~A0288H0000 0010 1000 1000B01:LED74LS273
-
() CPU I/O 1. CPU(7) 2.
()
-
() CPUI/O 1. CPU; 2. CPU; 3. .()P259 6.15-
-
I/O
-
D7=1
+5vSTBMOV DX, 288HIN AL, DXMOV DX, 28CHIN AL, DXD0:D7READY
-
50Hbuffer
-
STATUS EQU 28CH
MOV AX, SEG buffer ; MOV DS, AX LEA DI, buffer MOV CX, 50H ; next: MOV DX, STATUS ask IN AL, DX ; TEST AL, 1000 0000B ;80H, D7 JZ ask ;D7=0,MOV DX, 288H IN AL, DX ;MOV [DI], AL ; INC DI ; LOOP next ;.: 83H80H,?
-
I/O
-
D0 = 0 MOV DX, 288HOUT DX, ALMOV DX, 28CHIN AL, DXREADY (BUSY)
-
buffer80H
-
STATUS_PORT EQU 28CHDATA_PORT EQU 288H MOV AX, SEG buffer ; MOV DS, AX LEA SI, buffer MOV CX, 80H ; next: MOV DX, STATUS_PORT ask IN AL, DX ; TEST AL, 0000 0001B ;D0 JNZ ask ;D0=1, MOV AL, [SI] ; MOV DX, DATA_PORT OUT DX, AL ; INC SI ; LOOP next ; .
-
1. CPU 2. CPU 3. CPU 4. CPU
-
CPU---NMI INTR(CALL)---INT nINTO(CALL)
-
1234
-
CPU
-
1. CPU, CPU 2. CPU3. , 4. DMA
-
DMA 3I/O: CPU CPU 1CPUPIO2I/OCPUCPU KB/ DMA
DMAC
-
DMA () 1. DMA (DMAC) 2. DMAC CPUHOLD 3. CPUHLDA 4. DMAC
-
DMA (i8237)
-
DMAC11DMACDMA1DMACDMAC
-
DMA
-
DMA1. CPUDMA2 . DMACPUDMA3 .CPU
-
1. CPU, 2. DMA
-
*I/O()
-
CPU CPUDMADMAC,
-
6.3 ()(DMA, Direct Memory Access)
-
6.3.1 (7)
-
6.3.2 ()CPUCPU
-
?READY?YNYNNY6.15
-
3FBH5(D5)=1=0 3F8H1 0
-
D5
D7-D0
A9|A3
1&A15 |A10
1IOW
D7-D0
3F8HD7D6D5D4D3D2D1D0
BUSY
CPQ7Q6Q5Q4Q3Q2Q1Q0
G
G2AG2B
CBAA2A1A074LS138Y0
1IOR
Y3OE74LS374CPQQDSSTROBE3FBH: 1/0=1=0
-
6.3.3 : CPUCPUCPUCPUCPUCPU
-
6.3.4 DMA I/O: CPU CPU 1CPUPIO2I/OCPUCPU KB/ DMA
-
DMA: CPUDMADMACCPU/DMACDMAMB/
-
materslaveDMACslaveDMACmasterDMA:MEMI/OMEMMEM I/O I/O
-
I/OI/O(DMAC)CPUDMA
-
DMA
CPU
DMAC
AENIOWMEMWMEMRIORMEMWMEMRIOWIORAENHOLDHLDADRQDACKAENIOWIORMEMWMEMR DMA DMACCPU CPU DMACDMA DMAC DMACHOLD CPUHLDA
-
DMA1DMADMADMADRQ2DMACPUHOLD3CPUHOLDCPUCPUDMAHLDA4DMAHLDADMADACK
-
DMA5DMAI/OAEN6DMADMACPUHOLDCPUHOLDHLDA
-
/
-
DMA:DMACDREQDMAI/O (I/OFIFO)
-
YNDMADMADMACCPU, DMACDMADMACYN
-
NYNDMADMACCPU, DMACDMADMACYI/ODREQ DMA
-
NYCPU, DMACDMAI/ODREQ DMADMADMACYNYN
-
TDMACnDMA1DMA2DMAnCPUCPUTDMAnDMA1DMA2DMAnDMA3TDMAkDMAn-kFIFOFIFOFIFOFIFODMA:
-
6.4 6.4.1 ?
-
CPU()CPU()INTIRET
-
: CPU CPU(INT n)CPU 8086/8088INTRNMIINTRIF IF=1CPU NMICPU
-
CPUCPU()(/)
-
/ ()/
/ IRET / INT n
-
1CPUINTRNMINMIINTR () CPU8086/80888259A(PIC)CPU (I/O) PIC (8259) CPU
-
2.1CPU 6.186.19()nCPU8086/8088
-
2CPUFIFO:x86PIC(8259)CPU(8086/8088)
-
(1) (2)
-
1.
88
-
8CPU(2) 8A2A1A0111000
-
CPUB2B1B0 A2A1A0B2B1B0ABAB1CPU(CPU)AB1CPUINTRCPU
-
CPU()2INTR ?8A2A1A0
-
INTAinCPU
INTA
INTR
121233
1IREQIREQIREQ6.20 INTAinINTAin2. E
-
INTAinIREQINTR& 1INTAoutDBnE
-
3 CPUINTRNMICPU(CPUINTRNMI)INTR:STIIRETLOCKREPINTRCPUIF=1(RESET)(HOLD)NMI INTR NMI
-
3CPUINTRINTA;,IF=TF=0() CSIPFLAGS----PUSH CS/IP/FLAGS---JMP CS:IP----MCS-51, : X86?
-
4FAR farIRET ---POP FLAGS/IP/CS(PUSH regs) IF=1(STI) --- ---(POP regs) (IRET) IRET PUSH STI POP CLI STI
-
5IRETIRETCPUIPCSFLAGS ---POP IP/CS/FLAGS IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG
-
6.4.2 8088/8086 8088/80861 001TF=13INT 34INTO OF=14INT nn(0-255)
-
---1 CPUTF TF=1CPU1CPU CPU1CPUTFIFCPUCPU 28086/8088TFTF PUSHF PHSHF POP AX POPAX OR AX0100H TF AND AX0FEFFHTF PUSH AX PUSH AX POPF POPF
ODITSZAPC1502467891011FLAGS
-
2 NMIINTRINTANMI2CPUINTRnPIC(8259)IF=1CPU,CPUINTA
-
NMIINTR
8259APIC
8086/8088 CPU8086/8088n43012n /\\INTA/DB INT nn=0~255
-
8088/8086nn 43012INT n nPIC8259nCPUINTRINTA(p273 6.24)PIC2 n CPU
-
INTRINTAn LOCKCPU p273 6-24
-
IVT CS:IPCSIP 00000H003FFH1KB256()4 BytesIPCSn: (n)IVT4n ()
-
n48Hint48h()
88
-
CLI PUSH DS MOV AX0 XOR AXAX MOV DSAX MOV SI48H*4 MOV AXOFFSET int48h MOV [SI]AX MOV AXSEG int48h MOV [SI+2]AX POP DS STI RETI
Int48h48H*4
-
8086/8088 CPU INTA(0134)(n) PUSH FLAGS IF=TF=0() PUSH CS PUSH IP IPCSPUSH CS/IP/FLAGSJMP CS:IP
-
NMI(2) INTR INTA1PIC INTA2PICnDBCPU PUSH FLAG IF=TF=0() PUSH CS PUSH IP IPCS
-
8088/8086
()NMIINTR
-
8086/8088NYNYNNNNNYY?IF=1??NMI?INTR?TF=1?=0255=2=1FLAGTEMPTFIF=TF=0CSIPCS IPNMI?TEMP=1?CSIPFLAGSYYYYNIRET
-
NMIINTRDIVTF=IF=1INTRNMIPUSH FLAGSCSIPCLEAR IF & TFCS:IPNMI(IF=TF = 0)PUSH FLAGSCSIPCLEAR IF & TFCS:IPNMI(IF=TF = 0) INTR(IF=TF = 1) INTRINTRINTRPUSH FLAGSCSIPCLEAR IF & TFCS:IP (IF=TF = 0)PUSH FLAGSCSIPCLEAR IF & TFCS:IP(IFTF = 0) (IFTF = 1)
-
6.5 8259APICProgrammable Interrupt ControllerCPU8 (8) 64(964) ()x86n(11)8259A
-
8259A
-
8259A
-
6.5.18259A8259A p276 6.27IRRIR0IR7=1IRi ISR =1IRi IMR=1IRi CPUISR
-
6.5.2 8259A8259AIRiIRR1IRiCPUINT1INTAISRi=1IRRi=0 2INTAISRi=1 n DBAEOI2INTAISRiCPUEOIISRi
-
6.5.3 8259A8259A
-
IRi8259AIR0IR7IR7IR6IR5IR4IR3IR2IR1IR07654321032107654IR7IR6IR5IR4IR3IR2IR1IR0
-
IRi IR7IR6IR5IR4IR3IR2IR1IR07654321021076543ISRIR7IR6IR5IR4IR3IR2IR1IR0IR40101000001000000IR4ISRi
-
8259A
-
8259A
: 8259A8259A 8259A8259A
-
D.8259AIR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
INTIR0-IR2INTIR0-IR2(IR3-IR7)C.IR3,IR4B.IR4IR5-IR7A.INTE.8259AINTIR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
CPU
-
IRiISRISRi=1ISRiISRi=08259AEOIEOIEOIAEOI EOIEOINSEOIEOIEOISEOI EOI
-
AEOI2INTA8259AISRiAEOISEOICPUSEOIEOIISR NSEOICPUEOIEOIISRi=1
-
PICEOIPICISR0PICEOIYIRETNEOIPICPICEOI
-
IMRIRiIMi=1 IMi=0 IR6IM6=1IR6SEOI
-
IR4CLIMOV AL68H OCW30 1 1 0 1 0 0 0OUT 0C0HAL IN AL0C2H OR AL10H IR4OUT 0C2HAL STI IR7CLI IN AL0C2H AND AL0EFH IMR4OUT 0C2HALMOV AL48H OCW30 1 0 0 1 0 0 0OUT 0C0HAL STI IR4MOV AL20H OCW20 0 1 0 0 0 0 0 (EOI)OUT 0C0ALIRET
-
IRi IRi,1INTAIRi
-
8259A88259A64n8259A7n+18259A()8259ACAS0-CAS2SP/ENIRiINT
-
1864SP/EN+5V;SP/EN
8259A(1)
INT
SP/EN
IR7
D0-D7
INTA
IR0
IR2
IR3
IR4
IR5
IR6
IR1
8259A(2)
D0-D7
INTA
INT
SP/EN
IR7
IR0
IR2
IR3
IR4
IR5
IR6
IR1
CAS0
CAS1
CAS2
CAS0
CAS1
CAS2
8259A()
D0-D7
INTA
INT
SP/EN
IR7
IR0
IR2
IR3
IR4
IR5
IR6
IR1
VCC
CAS0
CAS1
CAS2
ABDBCB
A0
CS
A0
A0
CS
CS
RD
WR
WR
RD
WR
RD
-
6.5.4 8259A8259A:ICWICW1ICW48259AICWOCW OCW1OCW38259AOCW
-
8259ACSA0RDWRD4D3 CPUA082C59A211
-
8259A 8259 ICW1ICW2ICW3ICW4?ICW4NNYY
-
8259A8259AICW1ICW18259AICW18259AISRIMR(0)IR0IR7IRR
-
ICW1LTIM: =1 =0 SNGL: =1 =0 IC4: ICW4=1 ICW4=0 ICW4ICW40A0 D7D6 D5 D4 D3 D2 D1 D0 0 x x x 1 LTIM x SNGL IC4
-
: 808682C59AICW420H21HICW10001001113HICW1
MOV AL13H OUT 20HAL
-
ICW2T7T3: 5T2T0: 3IRn000111IR0IR78259A ICW248HIR048HIR74FH A0 D7D6 D5 D4 D3 D2 D1 D0 1 T7 T6 T5 T4 T3 x x x
-
: 8259A,, ICW4, IR008H,ICW1,ICW2. 8259A: 20H,21H ICW1= 0001 0011B ;,,ICW4 ICW2= 0000 1 000B
MOV AL,00010011B OUT 20H,AL MOV AL,00001000B OUT 21H,AL
-
ICW3 Si=1 IRi A0 D7D6 D5 D4 D3 D2 D1 D0 1 S7 S6 S5 S4 S3 S2 S1 S0 ID2ID0 IR 000111IR0IR7 A0 D7D6 D5 D4 D3 D2 D1 D0 1 0 0 0 0 0 ID2 ID1 ID0
-
ICW3ICW3IR4INTICW3=10HICW3=04HCAS2-CAS0ICW3CAS2-CAS0
-
: 8259AIR3IR62. : 20H,21H; 1#:A0H,A1H ICW3.: ICW3= 0100 100B =48H1#: ICW3= 0000 0011 =03H2#: ICW3= 0000 0110 =06H ICW3: MOV AL,48H OUT 21H,AL 1#ICW3: MOV AL,03H OUT 0A1H,AL
-
ICW4 SFNM: 1 0
AEOI: EOI1 EOI0 EOIA0 D7D6 D5 D4 D3 D2 D1 D0 1 0 0 0 SFNMBUF M/S AEOI 1BUF: M/S: /
BUF M/S 1 1 /PIC 1 0 /PIC 0 x /
-
: 808682C59A40H47H82C59A20H21H82C59A
-
82C59AICW382C59ASP*/EN*+5VICW4MS*0
82C59A MOV AL00011011B ICW1 OUT 20HAL ICW1 MOV AL01000000B ICW2 OUT 21HAL ICW2 MOV AL00000011B ICW4 OUT 21HAL ICW4
-
8259AOCW OCW8259OCWOCW1(A0=1)OCW2OCW3(A0=0)
-
OCW1 Mi=1 IRi() =0 IRi
OCW1IMRA0=1OCW1IMR
A0 D7D6 D5 D4 D3 D2 D1 D0 1 M7 M6 M5 M4 M3 M2 M1 M0
-
OCW2 L2L0: R: SL: EOI: R SL EOI 0 0 1 EOI (NSEOI) 0 1 1 EOI (SEOI)L2-L0ISR 1 0 1 NSEOI 1 0 0 EOI 0 0 0 EOI() 1 1 1 SEOI L2-L0(L2-L0) 1 1 0 L2-L0(L2-L0) A0 D7D6 D5 D4 D3 D2 D1 D0 0 R SL EOI 0 0 L2 L1 L0
-
OCW3 ESMM: SMM: ESMM SMM1 1 1 0 0 x
P(Polling): =1 =0 A0 D7D6 D5 D4 D3 D2 D1 D0 0 0 ESMM SMM 0 1 P RR RISRR: RIS: ISR/IRRRR RIS1 1 ISR1 0 IRR0 x
-
OCW38259ACPUD2=1OCW3 I x x x x R2 R1 R0 I=1R2-R0 IRR/ISRIRRISR
-
8259A8259A20H21H8259AICW4IR0-IR308H-0BHIR4-IR7ICW1 = 00010010 = 12HICW2 = 08H OCW1 = 11110000 = 0F0H
-
8259A
INIT8259AMOVDX20HA0=0ICW1MOVAL12HICW4OUTDXALMOVDX21HA0=1ICW2OCW1MOVAL08HICW2OUTDXALMOVAL0F0HOCW1IR4-IR7OUTDXAL
-
6.4.5 PC1 8259A STI
2EOISTIIRET
-
PC8259AI/O20H21H08HIR60EH;movah35hmoval0eh int21h es:bxmovsave_ipbx movsave_cses
-
;pushdsmovdxoffset my_intmovaxseg my_intmovdsaxDS:DXmy_intmovah25hmoval0ehint21h popds;movspmy_stack_top ;8259Ainal21handal10111111bIR6out21halsti
-
my_int proc farpusha popamoval20hEOI00100000B out20halOCW2stiiretmy_int endp
-
6.5 DMA 8237A 8237A 8237A
-
1 DMA8237A8237A4DMA4DMADMADMADMA464KB8237A
-
1.1 8237A
-
8237
-
(1) DREQ0DREQ3DMADMADREQHRQ8237AHRQCPUHLDA8237ACPUHLDADACK0DACK3DMA8237ADMA
-
(2) DMAA0A78DB0DB78ADSTBDMADB0DB78AEN8816
-
(2) DMAMEMR*MEMW*IOR*I/OIOW*I/OREADYDMAS3SwREADY4S4EOP*DMADMA
-
(3) DB0DB78237AA0A3CS*8237A8237AIOR*I/O8237AIOW*I/O8237ACLKRESET8237A
-
8237A8237ACPUDMACDMA
-
8237A
CPUCLKRESETA0A3CS*DB0DB7IOR*IOW*HRQHLDAAENADSTBREADYEOP*A0A7DB0DB7IOR*IOW*MEMR*MEMW*DREQ0DREQ3DACK0DACK3
-
1.2 8237A8237ADMA8237ACPU8237A8237A8237ACS*CPU8237A/8237ADREQ
-
1.2 8237A8237ADMA8237ADMADMACPUDMA
-
DMAS116AENDMAS2DMADMAMEMR*IOW*DMAIOR*MEMW*S3SwSwS4
-
1.3 8237ADMA DMA DMA DMA DMA
-
(1) DMADMA111HRQ8237ACPU0FFFFHDMADMACPUDMA
-
(2) DMADREQ0FFFFHDMADREQDACKDMACPUDMA
-
(3) DMADREQDREQDMA8237ACPUDMADREQDMA0FFFFHDMADREQ
-
(4) DMA8237AHRQHLDADREQDACK
-
DMAMEMR*IOW*DMAIOR*MEMW*DMA8237ADMAI/O
DMA
-
0101108408237A41
-
DMA0123DMA
-
DMAEOP*DMADMA
-
1.4 8237A8237A1038237AA0A3
-
(1) DMA11CPU
-
(2) DMA1CPU010FFFFHNN1
-
CPU8237A88237A16CPU8237A8237A/
-
/01016/A3A2A1A01100/
-
3/A3A2A1A01100/A3A2A1A01101/1DMARESETA3A2A1A011104DMA
-
DMA2DMA
-
00 01 10 11 0 11 10 1 00DMA01DMA10DMA11D7D61100 001 110 211 3
D7 D6D5D4D3 D2D1 D0
-
8237A8237ADMAD218237ADMA
-
D7D6D5D4D3D2D1D0
-
DMADMADMA0
-
D7 D6 D5 D4 D3D2D1 D0
-
DMA03DMA4DMA44DMADMA
-
D7 D6 D5 D4 D3D2D1 D0
-
Di0 IDi1 I
D7 D6 D5 D4D3D2D1D0
-
CPU4TC14DMA1
-
CPU
-
1.5 8237A8327A4
-
1.5 8237A1DMADMADMA1DMA
-
DMA0out 0dh,al;DMACmov al,0out 08,al;DMACmov al,0out 00,al;0out 00,al;0mov al,0ffhout 01,al;0out 01,al;0mov al,58h out 0bh,al;0mov al,0out 0ah,al;0IBM PC/XT
-
1.5 8237A2DMATC4DACKDMA
-
2 8237A8237APCDMADMA
-
2.1 8237AIBM PCIBM PC/XT8237A0DRAM1SDLC23IBM PC/AT8237ADMAC1038DMAC24757164
-
(1) 8237A8237A0DREQDACK017PCDMADMA15sPCDMA8237A
-
(2) DMACPUDMAC1038237AA0A1516A16A238DMAC2578237AA1A1616A007A17A23DMA
-
2.2 DMA
-
1mov al,45h;1;out 0bh,alnop;nopout 0ch,al;/DMA
-
1mov al,0out 02h,al;8mov al,50hout 02h,al;8mov al,04hout 83h,al;8DMA
-
1mov ax,2048-1;AX1out 03h,al;8mov al,ahout 03h,al;8mov al,01out 0ah,al;1DMA;DMA
-
1dmalp:in al,08h;and al,02h;1jz dmalp;;DMADMA
-
2.3 DMAROM-BIOSDMADMA2DMA2I/O
-
2push cx;CXcli;out 0ch,al;/push ax;pop axout 0bh,al;AL2DMA
-
mov ax,esmov cl,4rol ax,cl;4mov ch,al;CHand al,0f0hadd ax,bx;jnc j33inc ch;j33:push ax;AXDMA
-
2out 04h,al;mov al,ahout 04h,almov al,chand al,0fhout 81h,al;DMA
-
mov ah,dh;sub al,al;AX256shr ax,1;AX128push ax;AXmov bx,6call GET-PARM;mov cl,ah;AH0/1/2/3pop ax;AXshl ax,cl;AXDMA DMA
-
2dec ax;1push ax;out 05h,al;mov al,ahout 05h,alsti;DMA
-
pop cx;pop ax;16add ax,cx;CFpop cx;CXmov al,02h;2DMAout 0ah,alret;DMADMA
-
8237A1. 8237A2. 8237A3. 8237A4. 8237AIBM PC
-
CPU: p292 - 6.1, 6.2, 6.5, 6.7, 6.17() CPUI/O(2) ( ) CPUI/O(3) CPUI/OCPU(4) DMA --- MI/OCPUDMAC4