DIRECT MEMORY ACCESS UNIT
10-24
Example 10-1. Initializing the DMA Unit (Continued)
MOV
DX, D0DSTH
MOV
AX, BX
; GET HIGH NIBBLE
OUT
DX, AX
; THE POINTER ADDRESSES HAVE BEEN SET UP. NOW WE SET UP THE TRANSFER COUNT.
MOV
AX, 29
; THE MESSAGE IS 29 BYTES LONG.
MOV
DX, D0TC
; XFER COUNT REG
OUT
DX, AX
; NOW WE NEED TO SET THE PARAMETERS FOR THE CHANNEL AS FOLLOWS:
;
;
DESTINATION
SOURCE
;
-----------
------
;
MEMORY SPACE
MEMORY SPACE
;
INCREMENT PTR INCREMENT PTR
;
; TERMINATE ON TC, NO INTERRUPT, UNSYNCHRONIZED, LOW PRIORITY RELATIVE
; TO CHANNEL 1, BYTE XFERS. WE START THE CHANNEL.
MOV
AX, 1011011000000110B
MOV
DX, D0CON
OUT
DX, AX
; THE UNSYNCHRONIZED BURST IS NOW RUNNING ON THE BUS...
; NOW SET UP CHANNEL 1 TO SERVICE THE DISK CONTROLLER.
; FOR THIS EXAMPLE WE WILL ONLY BE READING FROM THE DISK.
; THE SOURCE IS THE I/O PORT FOR THE DISK CONTROLLER.
MOV
AX, DISK_IO_ADDR
MOV
DX, D1SRCL
OUT
DX, AX
; PROGRAM LOW ADDR
XOR
AX, AX
MOV
DX, D1SRCH
; HI ADDR FOR IO=0
OUT
DX, AX
; THE DESTINATION IS THE DISK BUFFER IN MEMORY
MOV
AX, SEG DISK_BUFF
ROL
AX, 4
; GET HIGH 4 BITS
MOV
BX, AX
; SAVE ROTATED VALUE
AND
AX, 0FFF0H
; GET SHIFTED LOW 4 NIBBLES
ADD
AX, OFFSET DISK_BUFF
; NOW LOW BYTES OF POINTER ARE IN AX
ADC
BX, 0
; ADD IN THE CARRY
; TO THE HIGH NIBBLE
AND
BX, 000FH
; GET JUST THE HIGH NIBBLE
MOV
DX, D1DSTL
OUT
DX, AL
; AX=LOW 4 BYTES
MOV
DX, D1DSTH
MOV
AX, BX
; GET HIGH NIBBLE
OUT
DX, AX
; THE POINTER ADDRESSES HAVE BEEN SET UP. NOW WE SET UP THE TRANSFER COUNT.
Summary of Contents for 80C186XL
Page 1: ...80C186XL 80C188XL Microprocessor User s Manual...
Page 2: ...80C186XL 80C188XL Microprocessor User s Manual 1995...
Page 18: ...1 Introduction...
Page 19: ......
Page 27: ......
Page 28: ...2 Overview of the 80C186 Family Architecture...
Page 29: ......
Page 79: ......
Page 80: ...3 Bus Interface Unit...
Page 81: ......
Page 127: ......
Page 128: ...4 Peripheral Control Block...
Page 129: ......
Page 137: ......
Page 138: ...5 ClockGenerationand Power Management...
Page 139: ......
Page 154: ...6 Chip Select Unit...
Page 155: ......
Page 178: ...7 Refresh Control Unit...
Page 179: ......
Page 193: ......
Page 194: ...8 Interrupt Control Unit...
Page 195: ......
Page 227: ......
Page 228: ...9 Timer Counter Unit...
Page 229: ......
Page 253: ......
Page 254: ...10 Direct Memory Access Unit...
Page 255: ......
Page 283: ......
Page 284: ...11 Math Coprocessing...
Page 285: ......
Page 302: ...12 ONCE Mode...
Page 303: ......
Page 306: ...A 80C186 Instruction Set Additions and Extensions...
Page 307: ......
Page 318: ...B Input Synchronization...
Page 319: ......
Page 322: ...C Instruction Set Descriptions...
Page 323: ......
Page 371: ......
Page 372: ...D Instruction Set Opcodes and Clock Cycles...
Page 373: ......
Page 396: ...Index...
Page 397: ......