pcdma.asm
来自「此程序是微机与接口技术的课程设计源程序 」· 汇编 代码 · 共 66 行
ASM
66 行
;FILENAME: PCDMA.ASM
;内容:DMA数据传输
DATA SEGMENT
MESS1 DB 'INPUT SOURCE DMA ADDR' ,0DH,0AH,'$'
MESS2 DB 'INPUT DIRECTION DMA ADDR ',0DH,0AH,'$'
SBUF DB 5 DUP(?)
DBUF DB 5 DUP(?)
DATA ENDS
STACK SEGMENT STACK 'STACK'
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK
START: MOV AX,DATA
MOV DX, AX
MOV BX, 0000H
MOV AL,05H ;设置通道1的屏蔽字
OUT 0AH, AL
OUT 0CH,AL ;清除先后触发器
MOV AL, 01001001B
OUT 0BH,AL ;设置通道1的模式字:单字节,读传输
MOV AL,BL ;设置传输起始地址为60000H
OUT 02H, AL
MOV AL, BH
OUT 02H,AL
MOV AL, 06H
OUT 83H,AL
MOV AL,00H ;传输字节数为800H
OUT 03H,AL
MOV AL, 08H
OUT 03H,AL
MOV AL,01H ;去除通道1的屏蔽字
OUT 0AH, AL
PUSH AX ;延迟
POP AX
WAIT0: IN AL,08H ;测试DMA状态字
AND AL, 02H
JZ WAIT0 ;传输没结束则循环等待
MOV AL,05H ;设置通道1屏蔽字
OUT 0AH, AL
OUT 0CH,AL ;清除先后触发器
MOV AL, 01000101B ;
OUT 0BH, AL ;设置通道1为单字节写传输
MOV AL ,BL ;设置传输起始地址为70000H
OUT 02H, AL
MOV AL ,BH
OUT 02H, AL
MOV AL, 07H
OUT 83H,AL
MOV AL,00H ;传输字节数为800H
OUT 03H,AL
MOV AL, 08H
OUT 03H,AL
MOV AL,01H ;去除通道1的屏蔽
OUT 0AH, AL
PUSH AX
POP AX
WAIT1: IN AL,08H
AND AL,02H ;等待DMA传送结束
JZ WAIT1
MOV AX, 4C00H ;返回DOS
INT 21H
CODE ENDS
END START
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?