总线操作及时序
总线操作
指CPU通过总线对外的各种操作
8086的主要操作有:
- 存储器读、I/O读操作
- 存储器写、I/O写操作
- 中断响应操作
- 总线请求及响应操作
- CPU正在进行内部操作、并不进行实际对外操作的空闲状态Ti
操作控制器与时序产生器
操作控制器在各寄存器之间建立数据通路(传送信息的通路)
操作控制器的功能:就是根据指令操作码和持续信号产生各种操作控制信号,以便正确的建立数据通路,从而完成取指令和执行指令的控制
- 1. 硬布线控制器
- 2. 微程序控制器
时序产生器产生并发出计算机所需要的时序控制信号
指令的执行过程和指令周期
指令的执行过程
- 读取指令
- 分析指令
- 按指定规定内容执行指令
- 检查有无中断请求
指令周期的基本概念
指令周期:CPU从内存取出一条指令,并执行完这条指令的时间总和(取指时间加执行指令时间)
CPU周期:又称机器周期(总线周期),CPU访问内存所花的时间较长,因此用CPU从内存读取一条指令字的所需最短时间来定义
时钟周期:通常称为节拍脉冲或T周期。一个CPU周期包含若干个时钟周期T
相互关系:
- 一个指令周期=若干个CPU周期
- 一个CPU周期=若干个T周期
时序产生器和控制方式
CPU如何辨别数据和指令?
- 从时间上来说:取指令事件发生在指令周期的第1个CPU周期中,即发生在“取指令”阶段,而取数据事件发生在指令周期的后面几个CPU周期中发生在“执行指令”阶段。
- 从空间上来说:如果取出的代码是指令,那么一定经DR传送到指令寄存器IR,如果取出的代码是数据,那么一定送往运算器
故时间控制对计算机来讲非常重要
时序信号的作用和体制
计算机的协调动作需要时间标志,而且需要采用多级时序体制,而时序标志则用时序信号来体现。
硬布线控制器中,持续信号往往采用主状态周期-节拍定位-节拍脉冲三级体制
- 主状态周期(指令周期):包含若干个节拍周期,可以用一个触发器的状态持续时间来表示
- 节拍电位(机器周期):表示一个CPU周期的时间,包含若干个节拍脉冲
- 节拍脉冲(时钟周期):表示较小的时间单位
微程序控制器中,持续信号一般采用节拍电位-节拍脉冲二级体制
数据准备好后,以电位的方式送触发器
控制信号来到后,用一个脉冲信号把数据装入触发器
时序信号产生器
时钟脉冲源:提供频率稳定且电平匹配的方波时钟脉冲信号(由石英晶体振荡器组成)
环形脉冲发生器:产生一组有序的间隔相等或不等的脉冲序列
控制方式
- 同步控制方式 已定的指令在执行时所需的CPU周期数和时钟周期数固定不变。例如采用完全统一的机器周期执行各种不同的指令(可能会浪费时间)
- 异步控制方式 控制器发出某一操作控制信号后,等待执行部件完成操作后发“回答”信号再开始新的操作(一直会有个信号探测)
- 联合控制方式 同步控制和异步控制结合
指令系统的概念、指令格式
汇编语言
- 一种面向机器的低级程序设计语言
- 以助记符形式表示每一条计算机指令
- 用助记符表示的指令就是汇编语言中的汇编格式指令
- 汇编格式指令以及使用它们编写程序的规则就形成汇编语言
- 用汇编语言书写的程序就是汇编语言程序或称汇编语言源程序( .ASM)
- 汇编程序将汇编语言程序“汇编”成机器代码目标模块( .OBJ)
- 助记符是便于人们记忆。并能描述指令功能和指令操作数的符号
- 助记符一般就是表明指令功能的英语单词或其缩写
汇编语言的主要特点:
- 汇编语言程序与处理器指令系统密切相关
- 程序员可直接有效的控制系统硬件
- 形成的可执行文件运行速度快占用主存容量少
汇编语言程序与汇编程序是两个概念
微机的软件
(1)系统软件:DOS平台
- MS DOS 6.22
- Windows 9. x的DOS实地址方式
- MS DOS虚拟环境
(2)应用软件:开发汇编语言程序涉及
- 文本编辑器
- 汇编程序
- 连接程序
- 调试程序
- 集成化开发环境
文本编辑器
- 用于编辑无任何格式的文档
- 程序设计时要采用文本编辑器编写源程序
- 常见的文本编辑软件有很多
- MS DOS的EDIT全屏幕编辑器
- Windows的Noteepad记事本
- 程序开发系统中的程序编辑器,例如Turbo C编辑器
- MASM集成开发环境PWB的编辑器
微机中任何一个文本编辑器都可以编写汇编语言源程序
汇编程序
- 汇编程序将汇编语言源程序翻译(称为“汇编”)成机器代码目标模块
- 80×86CPU的汇编程序主要有微软的宏汇编程序MASM。较著名的还有Bor land公司的TASM,无实质差别
连接程序。
- 连接程序将汇编后的目标模块转换成可执行程序(.obj→.exe)
- 每个程序开发环境都有连接程序
- 连接程序的文件名通常是:LINK.EXE
调试程序
- 调试程序进行程序排错、分析等
- DOS的DEBUG程序 MASM采用CodeView 其他还有Turbo Debugger等
如下图
集成化开发环境
- 集成化开发环境是进行程序设计所用到的各种软件的有机结合,其中,有文本编辑器,有语言翻译程序,有连接程序,还组合有调试程序等。
- 大型的程序设计项目往往要借助这种集成开发环境,也就是软件开发工具(包)
- MASM的程序员工作平台PWB是指编辑、汇编、连接和调试为一体的综合开发环境
程序 指令 指令系统 指定格式
计算机的程序是由一系列的指令组成
指定是要计算机执行某种操作的命令
指令系统是一台计算机中所有指令的集合
- 决定计算机的基本功能软件与硬件的界面
- 是计算机系统设计的一个核心问题
指令格式是用二进制代码表示的指令形式
- 由操作码字段和地址码字段组成
- 操作码:表示指令进行什么性质的操作
- 地址码:指定参与操作的操作数地址
指令操作码与地址码
两个字段:操作码字段(OC)+操作数地址字段(AC)
(1)操作码
操作码是指明指定操作性质的命令码,提供指令的操作控制信息
每条指令都是要求他的操作码必须是唯一的
(2)操作数地址码
地址码是用来描述该指令的操作对象
㈠指令格式
1.零地址指令格式
这是一种没有操作数地址部分的责任格式
有两种可能:
- 无需任何操作数。如空操作指令、停机指令等
- 所需的操作数是默认的:堆栈(1. 对于“中断”技术,堆栈必不可少,保存“断点”和“现场”。2. 实现程序调用,子程序嵌套调用和递归调用)
2. 一地址指令格式
指令中给出的一个地址即为操作数的地址,又是操作结果的储存地址(如加1、减1、移位等单操作数指令)
- PUSH AX: 把AX寄存器的内容压入堆栈
- INC AH:AH里的内容自加1
3. 二地址指令格式
(1)把保存操作前原来操作数的地址称为源地址,把保存操作执行结果的地址称为目的地址
(2)将源点与终点操作数进行操作码规定的操作后,将提供存入目的地址。通常二地址指令又称双操作数指令。
4. 三地址指令格式
其操作是对AC1 AC2指出的两个操作数进行操作码所规定的操作,并将结果存入AC3中,例如:
ADD X Y Z 含义为(X):(Y)→Z 即X单元内容加上Y单元内容结果送至Z单元中。
5. 多地址指令格式
例如四地址指令格式 含义:
ADD X Y Z W
A. (X) :(Y)→ Z
B. (W)→ 下一条指令地址
对操作数的寻址方式
与数据有关的寻址方式
某个操作数或某条指令存放在某个存储单元时,其存储单元的编号就是该操作数或指令在存储器中的地址
寻址方式:形成指令或操作数的内存地址的方式,或者说查找指令或数据的方式
〖寻址方式的类别〗
- 指令寻址方式:用于行程指令在内存中的地址
- 数据(操作数)寻址方式:用于形成操作数在内存中的地址,一般也包括数据在寄存器的情况
又可分为顺序寻址方式 和 跳跃寻址方式
顺序寻址方式
跳跃寻址方式 多用于程序的循环或者控制转移上
常用数据寻址方式
- 隐含寻址 指令中不明显的给出操作数的地址
- 立即寻址 指令的地址字段指出的不是操作数的地址,而是操作数本身
- 直接寻址 在指令格式的地址字段中直接给出操作数在内存的地址
- 寄存器寻址 指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号。即操作数不放在内存中,而是放在通用寄存器中
- 寄存器间接寻址 指令中指定的计算机的内容不是操作数,而是操作数的地址
- 基址(寄存器相对)寻址 基址寄存器的内容加上指令中给定的形式地址(偏移量),形成操作数的有效地址
1. 立即数寻址方式
此方式中指令操作数部分直接给出指令的操作数,它与指令操作码相接,顺序存放在代码段中。立即数有8位和16位之分。
〖例〗
MOV AH. 36H ;AH ← 立即数36H
MOV BX. 1234H ;BH ← 立即数1234H
注意事项:
- 只能用于源操作数,主要用于给寄存器(存储器单元)赋值。立即数无法作为目标操作数。
- 立即数可以是无符号或带符号数,其数值应在可取值范围内。
2. 寄存器寻址方式
此方式的操作数放在寄存器内,由指令直接给出某个寄存器的名字,以寄存器的内容作为操作数。寄存器可以是16位的AX BX CX DX SI DI SP BP寄存器,也可以是8位的AH AL BH BL CH CL DH DL寄存器。
〖例〗
MOV AX. CX ; AX ← (CX)
DEC AL. ; AL ← (AL) 1
注意
- 寄存器选址方式的指令操作在CPU内部执行,不需要执行总线周期,执行速度快。
- 寄存器寻址方式,既适用于指令的源操作数也适用于目的操作数,并且可以同时用于源操作数和目的操作数
3.直接寻址方式
此方式的操作数在存储器中,指令直接给出操作数所在存储单元的有效地址。有效地址(EA)也称为偏移地址,它代表操作数所在存储单元距段首址的字节数。有效地址是一个无符号的16位二进制数。
〖例〗
MOV AH. 【2100H】;将DS段中2100H单元的内容送给AH
MOV AX. 【2100H】;将DS段中2100H单元的内容送给AL,2101H单元的内容送给AH
注意:
- 直接寻址方式的操作数所在存储单元的段地址一般在数据段寄存器DS中。
- 如果操作数在其他段,则需要在指令中用段超越前缀指出相应的段寄存器名。
〖例〗
MOV AH, ES: 【2000H】;
将附加段寄存器ES的内容乘16D(或10H),再加上2000H作为操作数所在存储单元的地址,取出该存储单元的内容送到寄存器AH中。
4. 寄存器间接寻址方式
此方式的操作数在存储器中,指令中寄存器的内容作为操作数所在存储单元的有效地址(偏移地址),寄存器可以是某个基址寄存器BX、BP,或某个变址寄存器SI、DI。
当使用寄存器BX、SI、DI时,操作数所在存储单元的段地址存在数据段寄存器DS中;当使用寄存器BP时,操作数所在存储单元的段地址存在堆栈段寄存器SS中。
注意
如果操作数所在存储单元不在数据段中,需要在指令中用段超越前缀表明其所在段的段名。
5.寄存器相对寻址方式
此方式的操作数在存储器内,指令中寄存器的内容与指令指定的位移量之和作为操作数所在存储单元的有效地址(偏移地址)。寄存器可以是基址寄存器BX BP,也可以是变址寄存器SI DI。位移量是一个8位或16位的有符号二进制数。
计算操作数所在存储单元的物理地址时与存储器间接寻址方式相同。使用BXSI DI寄存器时与数据段寄存器DS有关;使用BP寄存器时与堆栈段寄存器SS有关。
以寄存器SI 、8位位移量为例。物理地址=16×(DS)+(SI)+8位位移量
以寄存器BP、16位位移量为例。物理地址=16×(SS)+(BP)+16位位移量
累了,还有一点明天再补完吧