提交 a07c7257 创建 作者: 赵鹏翀's avatar 赵鹏翀

fix ram.asm

上级 93314ff0
Subproject commit 0278cc57b2050c74e10bbda5a0b67fb99b83fd58 Subproject commit 58d7caeb77e6c4c59fba183da1abb7846e3f060a
8237 @ e70e96ac
Subproject commit 2cb9d7127efb4cb4d91a7b7f91f0954054585c6d Subproject commit e70e96acee1cccacd1bca18f5ceaf2d33387804a
;DMA存储器到存储器的传送测试程序 ;DMA存储器到存储器的传送测试程序
.text .text
;8237初始化,在执行cmp指令时,通过DMA传送,将block2程序块传送到block1处,传送完成后, ;8237初始化,在执行cmp指令时,通过DMA传送,将block2程序块传送到block1处,传送完成后,
;将执行block2程序块,而不是block1 ;将执行block2程序块,而不是block1
mov al,0xcc mov al,0xcc
out 0x8b, al ;写通道0的工作方式控制寄存器,地址递增 out 0x8b, al ;写通道0的工作方式控制寄存器,地址递增
mov al, 0x3D mov al, 0x3D
out 0x80, al ;将传送起始源地址写入通道0的当前地址计数器中 out 0x80, al ;将传送起始源地址写入通道0的当前地址计数器中
mov al, 0xcd mov al, 0xcd
out 0x8b, al ;写通道1的工作方式控制寄存器,地址递增 out 0x8b, al ;写通道1的工作方式控制寄存器,地址递增
mov al, 0x37 mov al, 0x37
out 0x82, al ;将传送起始目的地址写入通道1的当前地址计数器中 out 0x82, al ;将传送起始目的地址写入通道1的当前地址计数器中
mov al, 5 ;传送6个字节,字节数从5到0 mov al, 5 ;传送6个字节,字节数从5到0
out 0x83, al ;将传送字节数写入通道1的当前字节计数器中 out 0x83, al ;将传送字节数写入通道1的当前字节计数器中
mov al, 1 mov al, 1
out 0x88, al ;写操作方式命令字寄存器,允许存储器到存储器之间的传送并启动数据传送 out 0x88, al ;写操作方式命令字寄存器,允许存储器到存储器之间的传送并启动数据传送
BEGIN: ;主程序开始 BEGIN: ;主程序开始
mov al, 0x15 cmp al, 0x15 ;在此条指令的微指令中会查询 DMA 请求
block1: block1:
mov bl, 0 mov bl, 0
add bl, 20 add bl, 20
block2: block2:
sub al, 3 sub al, 3
adc al, 2 adc al, 2
jmp BEGIN jmp BEGIN
0001 ;DMA存储器到存储器的传送测试程序 0001 ;DMA存储器到存储器的传送测试程序
0002 .text 0002 .text
0003 0003
0004 ;8237初始化,在执行cmp指令时,通过DMA传送,将block2程序块传送到block1处,传送完成后, 0004 ;8237初始化,在执行cmp指令时,通过DMA传送,将block2程序块传送到block1处,传送完成后,
0005 ;将执行block2程序块,而不是block1 0005 ;将执行block2程序块,而不是block1
0006 0006
0007 10 01 00 CC mov al,0xcc 0007 10 01 00 CC mov al,0xcc
0008 13 4E 00 8B out 0x8b, al ;写通道0的工作方式控制寄存器,地址递增 0008 13 4E 00 8B out 0x8b, al ;写通道0的工作方式控制寄存器,地址递增
0009 0009
0010 16 01 00 3D mov al, 0x3D 0010 16 01 00 3D mov al, 0x3D
0011 19 4E 00 80 out 0x80, al ;将传送起始源地址写入通道0的当前地址计数器中 0011 19 4E 00 80 out 0x80, al ;将传送起始源地址写入通道0的当前地址计数器中
0012 0012
0013 1C 01 00 CD mov al, 0xcd 0013 1C 01 00 CD mov al, 0xcd
0014 1F 4E 00 8B out 0x8b, al ;写通道1的工作方式控制寄存器,地址递增 0014 1F 4E 00 8B out 0x8b, al ;写通道1的工作方式控制寄存器,地址递增
0015 0015
0016 22 01 00 37 mov al, 0x37 0016 22 01 00 37 mov al, 0x37
0017 25 4E 00 82 out 0x82, al ;将传送起始目的地址写入通道1的当前地址计数器中 0017 25 4E 00 82 out 0x82, al ;将传送起始目的地址写入通道1的当前地址计数器中
0018 0018
0019 28 01 00 05 mov al, 5 ;传送6个字节,字节数从5到0 0019 28 01 00 05 mov al, 5 ;传送6个字节,字节数从5到0
0020 2B 4E 00 83 out 0x83, al ;将传送字节数写入通道1的当前字节计数器中 0020 2B 4E 00 83 out 0x83, al ;将传送字节数写入通道1的当前字节计数器中
0021 0021
0022 2E 01 00 01 mov al, 1 0022 2E 01 00 01 mov al, 1
0023 31 4E 00 88 out 0x88, al ;写操作方式命令字寄存器,允许存储器到存储器之间的传送并启动数据传送 0023 31 4E 00 88 out 0x88, al ;写操作方式命令字寄存器,允许存储器到存储器之间的传送并启动数据传送
0024 0024
0025 BEGIN: ;主程序开始 0025 BEGIN: ;主程序开始
0026 34 01 00 15 mov al, 0x15 0026 34 47 00 15 cmp al, 0x15 ;在此条指令的微指令中会查询 DMA 请求
0027 0027
0028 block1: 0028 block1:
0029 37 01 01 00 mov bl, 0 0029 37 01 01 00 mov bl, 0
0030 3A 0E 01 14 add bl, 20 0030 3A 0E 01 14 add bl, 20
0031 0031
0032 block2: 0032 block2:
0033 3D 1E 00 03 sub al, 3 0033 3D 1E 00 03 sub al, 3
0034 40 16 00 02 adc al, 2 0034 40 16 00 02 adc al, 2
0035 43 57 34 jmp BEGIN 0035 43 57 34 jmp BEGIN
0036 0036
0037 0037
0038 0038
没有这种文件类型的预览
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论