当前课程知识点:微机原理与接口技术 >  第4周 数据传送指令 >  第17讲 输入输出指令 >  输入输出指令

返回《微机原理与接口技术》慕课在线视频课程列表

输入输出指令在线视频

输入输出指令

下一节:加法运算指令

返回《微机原理与接口技术》慕课在线视频列表

输入输出指令课程教案、知识点、字幕

下面我们来学习数据传送类指令的第二小类

就是输入输出

这一类指令

从名字上 大家应该已经感觉到

它是针对输入输出接口所操作的指令

确实是这样

在8086整个指令集中

针对输入输出接口的指令

一共就只有两条

所以下边要学习的这一个小类

或者说 这两条指令

对大家来讲 是非常重要的

学习这一类指令的时候

请大家关注这样几点

除了指令助记符的格式

指令对操作数的要求以外

这一类指令 大家学习中容易出错误的一点

就是指令中间所谓的寻址方式

这里的寻址方式

是我们在现在这样的语境下所提到的寻址方式

跟我们前面提到的寻址方式呢

虽然总体上来讲 都是寻找操作数的方法

但是在表现形式上 它们是不太一样的

为了把这一类指令讲清楚

我们先来介绍一个名词 端口

我们知道 所有CPU和外部设备之间的交互

是需要通过输入输出接口的

那么 什么是端口呢?

端口就是输入输出接口中

用来存放数据

可以被CPU直接访问的一些寄存器

因为CPU的内部也有寄存器

为了避免名字出现冲突

所以接口里面的寄存器

我们就起了另外的名字

就叫端口

在整个输入输出系统中间

有若干这样子的接口控制电路

或者说 每一个接口控制电路

或者是 若干个接口控制电路

它可能是一个芯片

那么 也就是说

有多个这样的接口芯片

那么 每一个接口电路里面

可能又有一个或者多个端口

所以 从整个计算机输入输出系统的角度来讲

整个系统就可能是这样的

可能有一个接口 两个接口

或者每一个端口里又有一个接口

或者两个端口 或者N个端口

所以总的来讲 就是若干个端口

因为刚才我们说 端口是用来存放数据的

而且是能够被CPU直接去访问的

我们现在回忆第二章曾经讲过的

介绍8088主要引线的时候

我们曾经讲过一个引脚信号

叫IOM非

就是说 当IOM引脚为低电平的时候

表示访问内存

为高电平的时候 表示访问接口

访问接口干什么呢?

访问接口

实际上是从接口里写数据或者读数据出来

那么 其实在接口里能够存储数据的

就是这些端口

所以 我们去访问的 实际上就是端口

从整个系统的角度来讲 端口有很多个

那么 我们向哪个端口写数据或者读数据呢?

所以 在整个IO系统里头

每一个端口也必须像内存单元一样 有地址

这种地址在指令中间怎么表示?

这就是我们后面要讲的

有关指令的所谓寻址方式

IO输入输出指令 或者 IO指令

它就是专门用来向IO端口里进行

写或者读操作的命令

这种端口地址在指令中间的表现形式

我们就称为 在这个指令语境下的

这种寻址方式

输入输出指令的主要功能

就是从端口地址里

读入数据到累加器

或者是 向端口地址里写入数据进去

它的指令一共有两条

一条是输入指令IN

一条是输出指令OUT

这两条指令的助记符也是很形象的

在这两条指令里头

IN指令里面 有一个PORT

OUT指令里面 也有一个PORT

这个PORT是什么?

PORT就是端口地址

那么 另外一个操作对象是acc

这是累加器的标识符

不是正式的操作数的名字

这里 acc既可以是累加器AL

也可以是AX

请大家注意 这里没有AH
所以在IN和OUT指令里头

它的两个操作数或者说是操作对象

是非常固定的

一个是端口地址

一个是累加器的AL或者是AX

绝对不能是AH

下面我们来看端口地址的表现形式

就是我们所谓的寻址方式

当端口地址是8位时

这个时候

就可以直接在指令中给出

此时 能够寻址或者管理的端口数量为256个

最多

那么什么是端口地址为8位呢?

端口地址为8位

意味着在整个IO系统中端口的数量

不会超过256个

那么你说

一个系统最多可以有多少个端口呢?

在8086系统中

它能够管理的最多端口数量

是64K个 因为它是一个16位的体系结构

所以 当端口地址为16位时

这时 端口地址不允许在指令中直接给出

必须把这个端口地址

用DX来表示

DX在之前讲寄存器是提到过

DX里面的值

它里面的16位数 绝大多数情况下

就是运算数据本身

只有在IN和OUT指令里头

它里面一定是端口地址

这个时候 因为端口地址为16位

最多就有64K个编码

最多能够寻址的端口数量就为64K个

IN OUT指令的具体使用

我们在之后讲接口电路时具体应用

所以在这里呢

我们只是从指令原理的角度来帮助大家了解

下面我们来通过一些练习

加深一下大家对这部分内容的理解

这条指令中

源操作数的80H不是一个立即数

而是端口地址的含义

所以 这条指令的执行

是从80H端口读入一个16位数据到AX

大家可以这样理解

就是说

相当于现在输入输出系统中
端口数量没有超过256个

所以端口地址的编码 可以是8位的字长

按照IN OUT指令的格式要求

是8位字长的时候

8位的端口地址可以直接在指令中给出

这两条指令中

第一条指令

就是我们前面很熟悉的MOVE指令

在这条指令中

2400H是一个常数

如果没有下一行指令

2400H就是一个一般的常数

什么意义也没有

但是因为它出现在IN OUT指令里

在IN指令中 DX的值是端口地址的含义

所以

这两条指令共同的执行结果

就是讲2400H端口读入8位数据到AL

这条指令大家也可以这样理解

相当于 输入输出系统端口数量比较多

已经超出了256个

所以需要用16位二进制码

来对端口进行编址

但是这个端口 目前又比较小

它只存放了8位二进制码

所以 端口地址是16位

但是端口里读入的数是8位的

这条指令 目标操作数是端口地址

OUT指令前面已经学过

是将累加器的内容写入到端口中

所以这条指令的执行

就是将一个16位数

写入到端口地址为35H的端口

我们看看下面这条指令

指令这条

OUT的含义 是将数据

是将累加器中的数据写入到端口里

这条指令 目标变成了AX

所以这条指令

显然就是格式上错误

所以大家在

未来使用IN和OUT指令的时候

千万要注意这一点

IN OUT指令 因为是针对接口的操作

而我们要从第六章开始 真正学习接口的控制

所以这两条指令 我们会从那个时候大量使用到

在今天

我们只是从指令格式

以及指令对操作数的要求上

我们帮助大家建立一些概念

下面我们给大家留一个简单的思考题

大家看一下这段程序的功能是什么?

这里 我们不作解答

我们未来会在论坛上讨论这个题目的答案

微机原理与接口技术课程列表:

第1周 微型计算机基础概论

-第1讲 关于本课程

--关于本课程

-第2讲 微型计算机系统

--微机系统_01

--微机系统_02

-第3讲 微型计算机一般工作过程

--微机的一般工作过程_01

--微机的一般工作过程_02

-第4讲 数制与编码

--常用计数制及其转换

--计算机中的编码

-第5讲 计算机中数的表示与运算

--数的表示

--符号数的表示

--数的表示与运算

-第6讲 基本逻辑运算与逻辑电路

--基本逻辑运算与逻辑门

--常用逻辑运算及电路

-第7讲 本周小结

--本周小结

-第1周 微型计算机基础概论--第一周单元测验

第2周 8088微处理器

-第8讲 8088微处理器

--8088 CPU_01

--8088 CPU_02

-第9讲 8088 CPU主要引线及机构

--8088 CPU主要引线

--8088 CPU内部结构

--8088 CPU内部寄存器

-第2周 8088微处理器--第二周单元测验

第3周 实模式存储器寻址与总线

-第10讲 实模式存储器寻址

--实模式存储器寻址_01

--实模式存储器寻址_02

--实模式存储器寻址_03

-第11讲 8088系统总线

--8088系统总线

-第12讲 微处理器小结

--微处理器小结

-单元测验--作业

第4周 数据传送指令

-第13讲 指令概述

--指令概述

-第14讲 寻址方式

--寻址方式

-第15讲 通用数据传送指令

--通用数据传送指令_01

--通用数据传送指令_02

--通用数据传送指令_03

-第16讲 地址传送指令

--地址传送指令

-第17讲 输入输出指令

--输入输出指令

-第4周 数据传送指令--第四周单元测验

第5周 算术运算、逻辑运算与移位操作指令

-第18讲 算术运算指令

--加法运算指令

--减法指令

--乘除运算指令

-第19讲 逻辑运算指令

--逻辑运算指令_01

--逻辑运算指令_02

-第20讲 移位操作指令

--移位操作指令

-第5周 算术运算、逻辑运算与移位操作指令--第五周单元测验

第6周 串操作指令

-第21讲 关于串操作指令的说明

--串操作指令说明

-第22讲 串传送与串比较

--串传送与串比较

-第23讲 串扫描指令

--串扫描指令

-第24讲 串装入与串存储指令

--串装入与串存储指令

-第六周单元测验--作业

第7周 程序与处理器控制

-第25讲 程序控制指令说明

--程序控制类指令说明

-第26讲 转移类指令

--无条件转移指令

--条件转移指令

-第27讲 循环控制指令

--循环控制指令

-第28讲 过程调用指令

--过程调用指令

-第29讲 中断指令

--中断指令

-第30讲 处理器控制指令

--处理器控制指令

-第31讲 指令系统小结

--指令系统小结

-第7周 程序与处理器控制--第七周单元测验

-第7周 程序与处理器控制--第七周作业

第8周 汇编语言程序设计

-第32讲 汇编语言源程序

-- 汇编语言源程序_01

-- 汇编语言源程序_02

-第33讲 伪指令

--数据定义伪指令

--符号与段定义伪指令

--汇编语言源程序结构例

--其它伪指令

-第34讲 系统功能调用

--系统功能调用_01

--系统功能调用_02

-第35讲 汇编语言程序设计示例详解

--程序设计示例1

--汇编语言程序设计示例_02

-第36讲 汇编语言程序设计小结

--汇编语言程序设计小结

-第8周 汇编语言程序设计--第八周单元测验

-第8周 汇编语言程序设计--第八周作业

第9周 半导体存储器

-第37讲 半导体存储器概述

--半导体存储器概述

-第38讲 内存单元编址

--存储单元编址

-第39讲 随机存取存储器RAM

-- RAM_01

--RAM_02

-第40讲 只读存储器ROM

--ROM_01

--ROM_02

-第九周单元测验--作业

第10周 半导体存储器扩展技术

-第41讲 半导体存储器扩展

--半导体存储器扩展_1

--存储器扩展_2

--半导体存储器扩展_3

-第42讲 半导体存储器小结

--半导体存储器小结

-第十周单元测验--作业

-第十周作业--作业

第11周 输入输出与中断技术

-第43讲 基本I/O接口

--I/O系统概述_01

--I/O系统概述_02

-第44讲 简单接口芯片

--简单接口芯片

-第45讲 基本输入输出方法

--基本I/O方法

-第46讲 简单I/O控制系统设计

--简单I/O控制系统设计1

--简单I/O控制系统设计2

-第47讲 中断技术

--中断技术1

--中断技术2

-第48讲 输入输出与中断技术小结

--本周小结

-第十一周单元测验--作业

第12周 可编程并行数字接口

-第49讲 可编程定时计数器

--可编程定时计数器8253_01

--可编程定时计数器8253_02

--可编程定时计数器8253_03

-第50讲 可编程并行接口

--可编程并接口8255_01

--可编程并行接口8255_02

--可编程并行接口8255_03

-第51讲 可编程接口小结

--本周小结_01

--本周小结_02

-第十二周单元测验

第13周 模拟量的输入输出

-第52讲 模拟量的输入输出

--模拟量的输入输出

-第53讲 D/A转换器

--D/A转换器_01

--D/A转换器_02

-第54讲 A/D转换器

-- A/D转换器_01

--A/D转换器_02

-第十三周单元测验--作业

第14周 系统综合设计示例详解

-第55讲 I/O接口系统综合设计示例详解I

--综合设计示例详解I_01

--综合设计示例详解I_02

-第56讲 综合设计示例详解II

--综合设计示例详解II_01

--综合设计示例详解II_02

-第57讲 结束语

--结束语

输入输出指令笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。