当前位置: 首页 > news >正文

Proteus仿真_01、 8086 IO译码仿真

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

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

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

一、画电路原理图

工具:Proteus7.10

1、整体全图

00001


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

2、芯片



3、IO部分

00030003


二、仿真

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模式下仿真

00040004




debug模式调试。

00050005



三、程序信号分析

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


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


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



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

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

00060006



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

00070007



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

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


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


疑问:

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

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

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















 

转载于:https://www.cnblogs.com/suncoolcat/p/3395316.html

相关文章:

  • CentOS 7之Postfix部署系列 (二) CentOS网络设置
  • AJAX PHP 请求实例
  • 使用Formik轻松开发更高质量的React表单(二)使用指南
  • HDU-3874 Necklace 线段树+离线
  • topcoder srm 590 div1 (max_flow_template)
  • JavaScript 代码格式化
  • ubuntu12.04下面安装eclipse开发环境
  • Java虚拟机详解03----常用JVM配置参数
  • SQL基础
  • P1338 末日的传说 逆序数对
  • [jobdu]不用加减乘除做加法
  • 一枚前端UI组件库 KUI for Vue
  • Activity的启动模式与flag详解
  • 登录内网账号后,连接不上内网网址
  • c#中获取中文简拼
  • 2019年如何成为全栈工程师?
  • Babel配置的不完全指南
  • E-HPC支持多队列管理和自动伸缩
  • Flannel解读
  • JavaScript设计模式系列一:工厂模式
  • JS变量作用域
  • python docx文档转html页面
  • python学习笔记 - ThreadLocal
  • Redis字符串类型内部编码剖析
  • supervisor 永不挂掉的进程 安装以及使用
  • Vue UI框架库开发介绍
  • 工程优化暨babel升级小记
  • 前端工程化(Gulp、Webpack)-webpack
  • 如何解决微信端直接跳WAP端
  • 数组的操作
  • Android开发者必备:推荐一款助力开发的开源APP
  • 仓管云——企业云erp功能有哪些?
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​决定德拉瓦州地区版图的关键历史事件
  • #if和#ifdef区别
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (论文阅读30/100)Convolutional Pose Machines
  • (十八)三元表达式和列表解析
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)c++ std::pair 与 std::make
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .Net下的签名与混淆
  • .net项目IIS、VS 附加进程调试
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • ::before和::after 常见的用法
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [AIGC] Spring Interceptor 拦截器详解
  • [Android]一个简单使用Handler做Timer的例子
  • [ARC066F]Contest with Drinks Hard
  • [CF543A]/[CF544C]Writing Code