第六章 输入输出和中断技术

Click here to load reader

Upload: nickan

Post on 03-Feb-2016

173 views

Category:

Documents


4 download

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 Presentation

TRANSCRIPT

  • 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