提交 74d7c009 创建 作者: 赵鹏翀'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 "8250"]
path = 8250
url = https://zpc@www.codecode.net/engintime/Dream-Logic/Intel-classic-chips/8250.git
[submodule "8259A"]
path = 8259A
url = https://zpc@www.codecode.net/engintime/Dream-Logic/Intel-classic-chips/8259A.git
8086 @ 0646239b
Subproject commit 0646239b4d1645f6a0da63d7f4bb3142942e567c
8250 @ 577f5ba5
Subproject commit 577f5ba5b3fd8369e78b05d4a3cf4d472e3945ac
差异被折叠。
8259A @ e090530d
Subproject commit e090530dbe6c8add5b683e25ea969b581be5cfca
添加文件
差异被折叠。
# 说明
IO接口芯片地址译码模块
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<project id="3407fe40-bd78-42b5-914a-e269ea66b67f" name="Lab005" 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="ccd0d33d-b0a1-4eeb-82dc-f5dfad969b60" 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="3e762eeb-1746-442c-abb1-f8de08f3adcb" name="8250">
<file relativepath="8250\8250.dlsche"/>
<file relativepath="8250\8251.pdf"/>
<file relativepath="8250\ier.dlsche"/>
<file relativepath="8250\iir.dlsche"/>
<file relativepath="8250\lsr.dlsche"/>
<file relativepath="8250\RCL.dlsche"/>
<file relativepath="8250\README.md"/>
<file relativepath="8250\reg_rw.dlsche"/>
<file relativepath="8250\TCL.dlsche"/>
</filefolder>
<filefolder id="6fd53525-4ff7-4863-ba3a-83c45e8e5db1" name="8259A">
<file relativepath="8259A\8259A.dlsche"/>
<file relativepath="8259A\8259A.pdf"/>
<file relativepath="8259A\acs.dlsche"/>
<file relativepath="8259A\apply.dlsche"/>
<file relativepath="8259A\fsm.dlsche"/>
<file relativepath="8259A\initial.dlsche"/>
<file relativepath="8259A\IRR.dlsche"/>
<file relativepath="8259A\ISR.dlsche"/>
<file relativepath="8259A\PR.dlsche"/>
<file relativepath="8259A\README.md"/>
<file relativepath="8259A\sp.dlsche"/>
</filefolder>
<file relativepath="8250_test.dlsche"/>
<file relativepath="top.dlsche"/>
<file relativepath="README.md"/>
</files>
</project>
添加文件
差异被折叠。
# 说明
8086 微机系统的MEM主存储器,存储指令和数据
\ No newline at end of file
差异被折叠。
添加文件
;采用中断的方式,通过8250将外设字符传送到cpu内部寄存器bl
.int_table
intr0
.text
cli ; 关中断
; 初始化栈顶地址
mov sp, 0
;初始化用于接收字符的8250芯片
mov al, 0x0f
out 0x81, al ;允许中断
;初始化中断控制器8259芯片
mov al, 0x13
out 0x90, al ; 写ICW1,边沿触发,单片,需要设置ICW4
mov al, 0
out 0x91, al ; 写ICW2,设定IRQ0的中断号为0
out 0x91, al ; 写入ICW4,设定普通全嵌套方式,普通EOI方式(通过发EOI命令结束中断)
out 0x91, al ; 写OCW1,允许全部8级中断请求
sti ; 开中断
BEGIN:
mov al, 0x1a
UP:
inc al
cmp al, 0x84
jnz UP
DOWN:
dec al
cmp al, 0x19
jnz DOWN
jmp BEGIN
;=============================================
;中断服务程序,当接收器满的时候,触发CPU从8250取数据
intr0:
in al, 0x80 ;将端口0x80数据读入al寄存器
mov bl, al ;再将al移动到bl中
mov al, 0x20
out 0x90, al ;中断结束命令eoi
iret
@echo off
dmasm.exe ram.asm -o ram.rxm -l ram.lst -g ram.dbg
pause
添加文件
0001 ;采用中断的方式,通过8250将外设字符传送到cpu内部寄存器bl
0002
0003 .int_table
0004 00 40 intr0
0005
0006 .text
0007 10 74 cli ; 关中断
0008
0009 ; 初始化栈顶地址
0010 11 01 04 00 mov sp, 0
0011
0012 ;初始化用于接收字符的8250芯片
0013 14 01 00 0F mov al, 0x0f
0014 17 4E 00 81 out 0x81, al ;允许中断
0015
0016 ;初始化中断控制器8259芯片
0017 1A 01 00 13 mov al, 0x13
0018 1D 4E 00 90 out 0x90, al ; 写ICW1,边沿触发,单片,需要设置ICW4
0019 20 01 00 00 mov al, 0
0020 23 4E 00 91 out 0x91, al ; 写ICW2,设定IRQ0的中断号为0
0021 26 4E 00 91 out 0x91, al ; 写入ICW4,设定普通全嵌套方式,普通EOI方式(通过发EOI命令结束中断)
0022 29 4E 00 91 out 0x91, al ; 写OCW1,允许全部8级中断请求
0023
0024 2C 75 sti ; 开中断
0025
0026 BEGIN:
0027 2D 01 00 1A mov al, 0x1a
0028
0029 UP:
0030 30 78 00 inc al
0031 32 47 00 84 cmp al, 0x84
0032 35 55 30 jnz UP
0033
0034 DOWN:
0035 37 79 00 dec al
0036 39 47 00 19 cmp al, 0x19
0037 3C 55 37 jnz DOWN
0038 3E 57 2D jmp BEGIN
0039
0040
0041 ;=============================================
0042 ;中断服务程序,当接收器满的时候,触发CPU从8250取数据
0043 intr0:
0044 40 4B 00 80 in al, 0x80 ;将端口0x80数据读入al寄存器
0045 43 02 01 mov bl, al ;再将al移动到bl中
0046 45 01 00 20 mov al, 0x20
0047 48 4E 00 90 out 0x90, al ;中断结束命令eoi
0048 4B 5D 44 iret
0049
添加文件
# 说明
8250串行通信实验
# 原理图
![raw svg](8250_test.dlsche.svg)
![raw svg](top.dlsche.svg)
\ No newline at end of file
添加文件
差异被折叠。
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论