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

Initial commit

上级
*.cir
*.xml
*.bak
/.vs
\ No newline at end of file
[submodule "8086"]
path = 8086
url = https://zpc@www.codecode.net/engintime/Dream-Logic/Intel-classic-chips/8086.git
[submodule "8255"]
path = 8255
url = https://zpc@www.codecode.net/engintime/Dream-Logic/Intel-classic-chips/8255.git
8086 @ 0646239b
Subproject commit 0646239b4d1645f6a0da63d7f4bb3142942e567c
8255 @ 3579b6d7
Subproject commit 3579b6d7edcc93923c5467c914b30d9e4d0ce331
差异被折叠。
添加文件
差异被折叠。
# 说明
IO接口芯片地址译码模块
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<project id="1fe6d24a-a171-4021-af70-f669c3431eba" name="Lab002" version="1">
<files>
<filefolder id="d7502e9e-b220-4715-a645-2f139d9b4f34" name="MEM">
<file relativepath="MEM\MEM.dlsche"/>
<file relativepath="MEM\ram.asm"/>
<file relativepath="MEM\ram.bat"/>
<file relativepath="MEM\ram.rxm"/>
<file relativepath="MEM\README.md"/>
</filefolder>
<filefolder id="c6ec748e-8eff-4fcb-9ff0-d62ba30af439" name="IO">
<file relativepath="IO\IO.dlsche"/>
<file relativepath="IO\README.md"/>
</filefolder>
<filefolder id="74236ec3-74ad-4811-a2c1-a5e3e2546f63" name="8086">
<file relativepath="8086\8086.dlsche"/>
<file relativepath="8086\8086.pdf"/>
<file relativepath="8086\ALU.dlsche"/>
<file relativepath="8086\BRANCH.dlsche"/>
<file relativepath="8086\CU.dlsche"/>
<file relativepath="8086\FLAG.dlsche"/>
<file relativepath="8086\PC.dlsche"/>
<file relativepath="8086\README.md"/>
<file relativepath="8086\REGS.dlsche"/>
<file relativepath="8086\rom.bat"/>
<file relativepath="8086\rom.masm"/>
<file relativepath="8086\rom.rxm"/>
<file relativepath="8086\uPC_NEXT.dlsche"/>
</filefolder>
<filefolder id="db853ade-d473-4291-b22c-c29be86fe63f" name="8255">
<file relativepath="8255\8255.dlsche"/>
<file relativepath="8255\8255.pdf"/>
<file relativepath="8255\A0.dlsche"/>
<file relativepath="8255\A2.dlsche"/>
<file relativepath="8255\ac.dlsche"/>
<file relativepath="8255\ACh.dlsche"/>
<file relativepath="8255\AIN1.dlsche"/>
<file relativepath="8255\AOUT1.dlsche"/>
<file relativepath="8255\B0.dlsche"/>
<file relativepath="8255\bc.dlsche"/>
<file relativepath="8255\BCl.dlsche"/>
<file relativepath="8255\BIN1.dlsche"/>
<file relativepath="8255\BOUT1.dlsche"/>
<file relativepath="8255\README.md"/>
<file relativepath="8255\wrc.dlsche"/>
</filefolder>
<file relativepath="8255_test.dlsche"/>
<file relativepath="top.dlsche"/>
<file relativepath="README.md"/>
</files>
</project>
添加文件
差异被折叠。
# 说明
8086 微机系统的MEM主存储器,存储指令和数据
\ No newline at end of file
差异被折叠。
添加文件
; 8255初始化。要求A口设定为输出数据,工作方式为方式0;B口设定为输入数据,工作方式为方式1;C口高四位输入,低四位输出。地址为80H~86H
.text
mov dl, 0x83 ; 控制口地址
mov al, 0x8E ; 工作方式控制字
OUT dl, al ; 控制字送到控制口
mov dl, 0x82 ;首先将端口C初始化为0
mov al, 0
out dl, al
mov bl, 2 ;检测IBFB(PC1)信号是否有效(高电平),若有效,表示当前已经有一个新的8位数据(地址)进入端口B的缓冲器中,CPU可以从B口读入数据了。
;在此处即可按下按键A,从C口输入数据
testC:
mov dl,0x82 ;从端口C输入一数据
in al, dl ;读端口C
and al, bl ;al与0000 0010按位与,留下al的第二位
sub al, bl ;若AL=BL=2,CPU可以从B口读入数据了
jz INOUT ;
jmp testC
INOUT: ;从B端口读地址,然后将地址单元内容输出到A端口
mov dl, 0x81 ;从端口B读地址
in al, dl ;将端口B输入数据(地址)读入al中
mov dl, al ;将al中的内容(地址)转移到dl寄存器中
mov al, [dl] ;将dl指定存储单元的内容传送到al中
mov dl, 0x80 ;设置A端口地址
out dl, al ;将al的内容输出到A端口
jmp testC ;检测新的地址
@echo off
dmasm.exe ram.asm -o ram.rxm -l ram.lst -g ram.dbg
pause
添加文件
0001 ; 8255初始化。要求A口设定为输出数据,工作方式为方式0;B口设定为输入数据,工作方式为方式1;C口高四位输入,低四位输出。地址为80H~86H
0002
0003 .text
0004 10 01 03 83 mov dl, 0x83 ; 控制口地址
0005 13 01 00 8E mov al, 0x8E ; 工作方式控制字
0006 16 4D 03 OUT dl, al ; 控制字送到控制口
0007
0008
0009 18 01 03 82 mov dl, 0x82 ;首先将端口C初始化为0
0010 1B 01 00 00 mov al, 0
0011 1E 4D 03 out dl, al
0012
0013 20 01 01 02 mov bl, 2 ;检测IBFB(PC1)信号是否有效(高电平),若有效,表示当前已经有一个新的8位数据(地址)进入端口B的缓冲器中,CPU可以从B口读入数据了。
0014
0015
0016 ;在此处即可按下按键A,从C口输入数据
0017 testC:
0018 23 01 03 82 mov dl,0x82 ;从端口C输入一数据
0019 26 4C 30 in al, dl ;读端口C
0020 28 2A 10 and al, bl ;al与0000 0010按位与,留下al的第二位
0021 2A 18 10 sub al, bl ;若AL=BL=2,CPU可以从B口读入数据了
0022 2C 54 30 jz INOUT ;
0023 2E 57 23 jmp testC
0024
0025
0026 INOUT: ;从B端口读地址,然后将地址单元内容输出到A端口
0027 30 01 03 81 mov dl, 0x81 ;从端口B读地址
0028 33 4C 30 in al, dl ;将端口B输入数据(地址)读入al中
0029 35 02 03 mov dl, al ;将al中的内容(地址)转移到dl寄存器中
0030 37 04 30 mov al, [dl] ;将dl指定存储单元的内容传送到al中
0031 39 01 03 80 mov dl, 0x80 ;设置A端口地址
0032 3C 4D 03 out dl, al ;将al的内容输出到A端口
0033 3E 57 23 jmp testC ;检测新的地址
0034
0035
添加文件
# 说明
可编程并行接口芯片8255
# 原理图
![raw svg](8255_test.dlsche.svg)
![raw svg](top.dlsche.svg)
\ No newline at end of file
添加文件
差异被折叠。
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论