10-23
DIRECT MEMORY ACCESS UNIT
Example 10-1. Initializing the DMA Unit
$MOD186
name
DMA_EXAMPLE_1
; This example shows code necessary to set up two DMA channels.
; One channel performs an unsynchronized transfer from memory to memory.
; The second channel is used by a hard disk controller located in
; I/O space.
; It is assumed that the constants for PCB register addresses are
; defined elsewhere with EQUates.
CODE_SEG
SEGMENT
ASSUME CS:CODE_SEG
START:
MOV
AX, DATA_SEG
; DATA SEGMENT POINTER
MOV
DS, AX
ASSUME DS:DATA_SEG
; First we must initialize DMA channel 0. DMA0 will perform an
; unsynchronized transfer from SOURCE_DATA_1 to DEST_DATA_1.
; The first step is to calculate the proper values for the
; source and destination pointers.
MOV
AX, SEG SOURCE_DATA_1
ROL
AX, 4
; GET HIGH 4 BITS
MOV
BX, AX
; SAVE ROTATED VALUE
AND
AX, 0FFF0H
; GET SHIFTED LOW 4 NIBBLES
ADD
AX, OFFSET SOURCE_DATA_1
; 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, D0SRCL
OUT
DX, AL
; AX=LOW 4 BYTES
MOV
DX, D0SRCH
MOV
AX, BX
; GET HIGH NIBBLE
OUT
DX, AX
; SOURCE POINTER DONE. REPEAT FOR DESTINATION.
MOV
AX, SEG DEST_DATA_1
ROL
AX, 4
; GET HIGH 4 BITS
MOV
BX, AX
; SAVE ROTATED VALUE
AND
AX, 0FFF0H
; GET SHIFTED LOW 4 NIBBLES
ADD
AX, OFFSET DEST_DATA_1
; 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, D0DSTL
OUT
DX, AX
; AX=LOW 4 BYTES
Содержание 80C186EA
Страница 1: ...80C186EA 80C188EA Microprocessor User s Manual...
Страница 2: ...80C186EA 80C188EA Microprocessor User s Manual 1995...
Страница 19: ......
Страница 20: ...1 Introduction...
Страница 21: ......
Страница 28: ...2 Overview of the 80C186 Family Architecture...
Страница 29: ......
Страница 79: ......
Страница 80: ...3 Bus Interface Unit...
Страница 81: ......
Страница 129: ......
Страница 130: ...4 Peripheral Control Block...
Страница 131: ......
Страница 139: ......
Страница 140: ...5 ClockGenerationand Power Management...
Страница 141: ......
Страница 165: ......
Страница 166: ...6 Chip Select Unit...
Страница 167: ......
Страница 190: ...7 Refresh Control Unit...
Страница 191: ......
Страница 205: ......
Страница 206: ...8 Interrupt Control Unit...
Страница 207: ......
Страница 239: ...INTERRUPT CONTROL UNIT 8 32...
Страница 240: ...9 Timer Counter Unit...
Страница 241: ......
Страница 265: ......
Страница 266: ...10 Direct Memory Access Unit...
Страница 267: ......
Страница 295: ...DIRECT MEMORY ACCESS UNIT 10 28...
Страница 296: ...11 Math Coprocessing...
Страница 297: ......
Страница 314: ...12 ONCE Mode...
Страница 315: ......
Страница 318: ...A 80C186 Instruction Set Additions and Extensions...
Страница 319: ......
Страница 330: ...B Input Synchronization...
Страница 331: ......
Страница 334: ...C Instruction Set Descriptions...
Страница 335: ......
Страница 383: ...INSTRUCTION SET DESCRIPTIONS C 48...
Страница 384: ...D Instruction Set Opcodes and Clock Cycles...
Страница 385: ......
Страница 408: ...Index...
Страница 409: ......