提交 085b3d6d 创建 作者: 李川's avatar 李川

Merge branch 'lab6' into 'master'

...@@ -2,3 +2,6 @@ ...@@ -2,3 +2,6 @@
path = 8086 path = 8086
url = https://www.codecode.net/engintime/Dream-Logic/Intel-classic-chips/8086.git url = https://www.codecode.net/engintime/Dream-Logic/Intel-classic-chips/8086.git
branch = master branch = master
[submodule "8237"]
path = 8237
url = https://lichuan@www.codecode.net/engintime/Dream-Logic/Intel-classic-chips/8237.git
8237 @ 2cb9d712
Subproject commit 2cb9d7127efb4cb4d91a7b7f91f0954054585c6d
...@@ -28,8 +28,17 @@ ...@@ -28,8 +28,17 @@
<file relativepath="IO\IO.dlsche"/> <file relativepath="IO\IO.dlsche"/>
<file relativepath="IO\README.md"/> <file relativepath="IO\README.md"/>
</filefolder> </filefolder>
<file relativepath="top.dlsche"/> <filefolder id="f94a044a-c2cb-4ab9-a5d7-fa4fa72823ca" name="8237">
<file relativepath="8237\8237A.dlsche"/>
<file relativepath="8237\8237A.pdf"/>
<file relativepath="8237\channel.dlsche"/>
<file relativepath="8237\fmall.dlsche"/>
<file relativepath="8237\README.md"/>
<file relativepath="8237\regs.dlsche"/>
<file relativepath="8237\write_read.dlsche"/>
</filefolder>
<file relativepath="README.md"/> <file relativepath="README.md"/>
<file relativepath="top.dlsche"/>
</files> </files>
</project> </project>
没有这种文件类型的预览
差异被折叠。
;test ;DMA存储器到存储器的传送测试程序
.text .text
BEGIN: ;8237初始化,在执行cmp指令时,通过DMA传送,将block2程序块传送到block1处,传送完成后,
mov al, 0x1a ;将执行block2程序块,而不是block1
mov al,0xfc
out 0x8b, al ;写通道0模式寄存器,地址递减
mov al, 0x3f
out 0x80, al ;将传送源地址写入通道0的当前地址计数器中
mov al, 0xfd
out 0x8b, al ;写通道1模式寄存器,地址递减
mov al, 0x39
out 0x82, al ;将传送目的地址写入通道1的当前地址计数器中
mov al, 5 ;传送6个字节,字节数从5到0
out 0x83, al ;将传送字节数写入通道1的当前字节计数器中
mov al, 1
out 0x88, al ;启动存储器到存储器之间的数据传送
UP: UP:
out 2, al
inc al inc al
cmp al, 0x84 cmp al, 0x84
jnz UP
dec al block1:
mov bl, 0
DOWN: add bl, 20
out 2, al
dec al block2:
cmp al, 0x19 mov cl, 1
jnz DOWN adc cl, 2
jmp BEGIN jmp UP
没有这种文件类型的预览
0001 ;test 0001 ;DMA存储器到存储器的传送测试程序
0002 .text 0002 .text
0003 0003
0004 BEGIN: 0004 ;8237初始化,在执行cmp指令时,通过DMA传送,将block2程序块传送到block1处,传送完成后,
0005 10 01 00 1A mov al, 0x1a 0005 ;将执行block2程序块,而不是block1
0006 0006
0007 UP: 0007 10 01 00 FC mov al,0xfc
0008 13 4E 00 02 out 2, al 0008 13 4E 00 8B out 0x8b, al ;写通道0模式寄存器,地址递减
0009 16 78 00 inc al 0009
0010 18 47 00 84 cmp al, 0x84 0010 16 01 00 3F mov al, 0x3f
0011 1B 55 13 jnz UP 0011 19 4E 00 80 out 0x80, al ;将传送源地址写入通道0的当前地址计数器中
0012 1D 79 00 dec al 0012
0013 0013 1C 01 00 FD mov al, 0xfd
0014 DOWN: 0014 1F 4E 00 8B out 0x8b, al ;写通道1模式寄存器,地址递减
0015 1F 4E 00 02 out 2, al 0015
0016 22 79 00 dec al 0016 22 01 00 39 mov al, 0x39
0017 24 47 00 19 cmp al, 0x19 0017 25 4E 00 82 out 0x82, al ;将传送目的地址写入通道1的当前地址计数器中
0018 27 55 1F jnz DOWN 0018
0019 29 57 10 jmp BEGIN 0019 28 01 00 05 mov al, 5 ;传送6个字节,字节数从5到0
0020 0020 2B 4E 00 83 out 0x83, al ;将传送字节数写入通道1的当前字节计数器中
0021 0021
0022 0022 2E 01 00 01 mov al, 1
0023 31 4E 00 88 out 0x88, al ;启动存储器到存储器之间的数据传送
0024
0025 UP:
0026 34 78 00 inc al
0027 36 47 00 84 cmp al, 0x84
0028
0029 block1:
0030 39 01 01 00 mov bl, 0
0031 3C 0E 01 14 add bl, 20
0032
0033 block2:
0034 3F 01 02 01 mov cl, 1
0035 42 16 02 02 adc cl, 2
0036 45 57 34 jmp UP
0037
0038
0039
没有这种文件类型的预览
没有这种文件类型的预览
差异被折叠。
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论