最近在学习一些微机原理与接口技术方面的知识。

参考书籍《微机原理与接口技术---基于8086Proteus仿真》 顾晖 梁惺彦 编著

实验一、利用8086 芯片来实现对I/O设备的读取和控制,这理的I/O设备是LED灯。(参考章节 6.3 第8章,13.1)

一、画电路原理图

工具:Proteus7.10

1、整体全图

2、芯片及地址数据译码电路

3、IO部分

0003

二、仿真

1、仿真源码 io.asm

.MODELSMALL
.8086
.code
.startup

L:mov dx,030h      ; 将IO设备的端口地址 30H送给dx。这里是有疑问的,我这一点也没有看懂,若懂得的可以千万要告诉我呀!

; 第三部分(书267页)说LED端口的地址和开关端口地址都是0030H。我从图13-3可以看出003对应的是A15~A4,

;但为什么地址A3~A0也0那???从电路中那一部分可以看出那??

in al,dx      ;从dx里的端口中读取数据,读到al中。

out dx,al      ;把al的数据写到端口为dx的设备中,这里我们在调试时可以手动的设置al的值的。

jmp L

.data
.stack
END

2、debug模式下仿真

0004

debug模式调试。

0005

三、程序信号分析

将8086芯片的频率调成1KHZ, 同样我们在电路中添加一个时钟信号发生器来模拟CLK,基频率也是1KHZ.

同样我们在电路中添加一个时钟信号发生器来模拟CLK,其频率也是1KHZ.

我们分析的其它信号还有 RD', ER' , M/IO', 地址数据线AD0~AD4,以及地址有效线IO3.

至于Digital Analysis的模拟方法可以参考 proteus的VSM手册 见附件:VSMTUT.chm。

a、模拟信号全图,模拟时间是

0006

b、放大程序执行一次信号

0007

总结:通过添加CLK仿真信号,我们可以清楚直观的看到RD,WR,M/IO' 读写内容/IO,以及AD地址数据线复用的信号。在不同的时钟的状态。

也可以更好的理解总线周期 8086总线占用4个时钟周期。

而至于8086中各指令执行时所花费的时钟周期数可参通过《Intel微处理器全系列:结构、编程与接口》--Barry B.Brey著  附录B中 查得。

疑问:

1、从电路中为什么可以看出IO端口的地址是030H, 我不找到确定AD3~AD0也是0000的电路。

2、程序执行一次查手册一花费是35个周期,而执行时却用一41个周期,这又是为什么那?

有知道亲,还望不吝指教呀!!!!!

Proteus仿真_01、 8086 IO译码仿真的更多相关文章

  1. CCSDS标准的LDPC编译码仿真

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  2. Arduino UNO仿真开发环境设置和仿真运行

    一. Proteus仿真平台简介 Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司).它不仅具有其它EDA工具软件 ...

  3. 工艺成型及仿真、铸造工艺及仿真ProCAST软件入门认识介绍

    视频源:技术邻 关键词:ProCAST.工艺成型及仿真.铸造工艺及仿真 简介:ProCAST 软件是由美国 USE 公司开发的铸造过程的模拟软件采用基于有限元(FEM)的数值计算和综合求解的方法,对铸 ...

  4. 搭建Modelsim SE仿真环境-使用do文件仿真

    本章我们介绍仿真环境搭建是基于Modelsim SE的.Modelsim有很多版本,比如说Modelsim-Altera,但是笔者还是建议大家使用Modelsim-SE,Modelsim-Altera ...

  5. stm32 MDK5软件仿真之查看io口输出

    软件MDK5 stm32的pack     打开MDK,添加工程 一.首先找到Project的Options选项,里面的Debug选为Use Simulator,也就是选择软件仿真. 然后再Logic ...

  6. 8086 IO读写操作

    如图所示,通过8086来读写io口,实现流水灯以及开关.本电路是基于8086最小模式下的三总线结构添加的,三总线结构原理较为复杂本篇就不对其原理进行介绍了,大家可以自行查阅相关引脚的功能从而实现. 本 ...

  7. 【仿真】Lattice_Diamond_调用Modelsim_仿真

    仿真前的准备工作:在modelsim中添加lattice仿真库:1.去除modelsim安装目录下modelsim.ini的只读属性.2.打开modelsim,更改目录File>Change d ...

  8. 【CCS仿真】如何将CCS仿真时memory中的数据以Hex、Integer、 Long 、Float、 Addressable Unit类型保存到PC

    2013-12-04 19:07:05 将在CCS中仿真的数据导入电脑上时,可以选择不同的数据类型,以便分析,具体方法如下: 在CCS菜单中,选择File—>Data—>Save,弹出以下 ...

  9. Thinking in Java---多线程仿真:银行出纳员仿真+饭店仿真+汽车装配工厂仿真

    多线程一个非常有意思的作用就是用于仿真,这篇博客就会结合几个仿真实例来综合运用一下前面所学的多线程并发知识. 一.银行出纳员仿真 问题描写叙述:银行会有非常多来办业务的顾客,他们会排队等待服务:对于银 ...

随机推荐

  1. ASP.NET缓存策略经验谈

    要提升ASP.NET应用程序的性能,最简单.最有效的方式就是使用内建的缓存引擎.虽然也能构建自己的缓存,但由于缓存引擎已提供了如此多的功能,所以完全不必如此麻烦.在很大程度上,ASP.NET开发者在W ...

  2. [Papers]NSE, $u_3$, Lebesgue space [NNP, QM, 2002; Zhou, JMPA, 2005]

    $$\bex u_3\in L^p(0,T;L^q(\bbR^3)),\quad \frac{2}{p}+\frac{3}{q}=\frac{1}{2},\quad 6< q\leq \inft ...

  3. Hadoop中的InputFormat解析

    1.InputFormat InputFormat是Hadoop平台上Mapreduce输入的规范,仅有两个抽象方法. List<InputSplit> getSplits(), 获取由输 ...

  4. MyBatis 入门到精通(一) 了解MyBatis获取SqlSession

    MyBatis是什么? MyBatis是一款一流的支持自定义SQL.存储过程和高级映射的持久化框架.MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去设置参数和获取检索结果.MyBatis ...

  5. Cyborg Genes

    题意: 给两个字符串,求最短的以两字符串为子序列的字符串和个数 分析: 最长公共子序列的变形,num[i][j]表示个数 #include <map> #include <set&g ...

  6. CCMoveTo 等函数理解

    CCMoveTo: 使用CCMoveTo action来让对象从右侧屏幕外移动到屏幕左侧.注意可以通过指定duration参数控制这一过程需要多久,这里我们随机给他2-4秒的时间. CCCallFun ...

  7. <转>python version 2.7 required,which was not found in the registry

    安装PIL-1.1.7.win32-py2.7的时候,不能再注册表中识别出来python2.7 方法:新建一个register.py 文件,把一下代码贴进去,保存 # # script to regi ...

  8. [原创]Android应用 - YE启动器APP(YeLauncherApp)

      支持解冻.冻结APP 支持在本APP列表隐藏指定APP 支持检测系统核心APP,防止误点冻结导致手机变砖 支持清理APP缓存 支持强制停止APP Apk文件仅仅47KB 自用.开源 类似APP:A ...

  9. linux下简单文本处理

    1. 根据第二列的数据来确定第一列的值 awk '{if(a!=$0)i++;print i,$0;a=$0}' arr >arr.out 2. 补齐长度 seq arr.out|awk '{p ...

  10. Tkinter教程之Scrollbar篇

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811319 '''Tkinter教程之Scrollbar篇'''#Scrollbar(滚动条) ...