📄 t8237.asm
字号:
;T8237.ASM
;DMA传输实验
.386P
;***************根据CHECK配置信息修改下列符号值*******************
IOY0 EQU 9C00H ;IOY0起始地址
MY0_H EQU 0D9H ;片选MY0起始地址的最高位字节
MY0_M EQU 00H ;片选MY0起始地址的次高位字节
MY0_L EQU 0000H ;片选MY0起始地址的低两位字节
;*****************************************************************
MY8237_0 EQU IOY0+00H*4 ;通道0当前地址寄存器
MY8237_1 EQU IOY0+01H*4 ;通道0当前字节计数寄存器
MY8237_2 EQU IOY0+02H*4 ;通道1当前地址寄存器
MY8237_3 EQU IOY0+03H*4 ;通道1当前字节计数寄存器
MY8237_8 EQU IOY0+08H*4 ;写命令寄存器/读状态寄存器
MY8237_9 EQU IOY0+09H*4 ;请求寄存器
MY8237_B EQU IOY0+0BH*4 ;工作方式寄存器
MY8237_D EQU IOY0+0DH*4 ;写总清命令/读暂存寄存器
MY8237_F EQU IOY0+0FH*4 ;屏蔽位寄存器
ATDW EQU 92h ;存在的可读写数据段属性值
ATCE EQU 98h ;存在的只执行代码段属性值
Desc STRUC
LimitL DW 0 ;段界限(BIT0-15)
BaseL DW 0 ;段基地址(BIT0-15)
BaseM DB 0 ;段基地址(BIT16-23)
Attributes DB 0 ;段属性
LimitH DB 0 ;段界限(BIT16-19)(含段属性的高4位)
BaseH DB 0 ;段基地址(BIT24-31)
Desc ENDS
DSEG SEGMENT USE16
GDT LABEL BYTE
ID1 DESC <0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>
SCODE DESC <0FFFFH,CSEG,,ATCE,,>
DATAS DESC <D1LEN,DSEG1,,ATDW,,> ;源数据段描述符
DATAD DESC <2000H,MY0_L,MY0_M,ATDW,,MY0_H> ;目的数据段描述符
GDTLEN = $-GDT
SCODE_SEL = SCODE-GDT
DATAS_SEL = DATAS-GDT
DATAD_SEL = DATAD-GDT
ID2 DESC <0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH >
ID3 DESC <0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH >
DSEG ENDS
DSEG1 SEGMENT USE16
TDATA DD 00000000H,11111111H, 22222222H, 33333333H
D1LEN =$-1
DSEG1 ENDS
CSEG SEGMENT USE16
ASSUME CS:CSEG
START PROC
MOV DX,MY8237_D ;写总清命令
OUT DX,AL
MOV DX,MY8237_0 ;写通道0当前地址寄存器
MOV AL,00H
OUT DX,AL
MOV AL,00H
OUT DX,AL
MOV DX,MY8237_2 ;写通道1当前地址寄存器
MOV AL,0CH
OUT DX,AL
MOV AL,00H
OUT DX,AL
MOV DX,MY8237_1 ;写通道0当前字节计数寄存器
MOV AL,0BH
OUT DX,AL
MOV AL,00H
OUT DX,AL
MOV DX,MY8237_3 ;写通道1当前字节计数寄存器
MOV AL,0BH
OUT DX,AL
MOV AL,00H
OUT DX,AL
MOV DX,MY8237_B ;写通道0工作方式寄存器
MOV AL,88H
OUT DX,AL
MOV AL,85H ;写通道1工作方式寄存器
OUT DX,AL
MOV DX,MY8237_8 ;写命令寄存器
MOV AL,81H
OUT DX,AL
MOV DX,MY8237_F ;写屏蔽位寄存器
MOV AL,00H
OUT DX,AL
MOV DX,MY8237_9 ;写请求寄存器
MOV AL,04H
OUT DX,AL
INT 0FFH
START ENDP
CLEN =$-1
CSEG ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -