2-微处理器指令系统第4讲
微机原理 第四章 微型计算机指令系统
例: 已知: DS=2000H; SI=1000H 指令: MOV [SI+disp],AX
青岛理工大学琴岛学院
寄存器间接相对寻址过程示意图
CPU
寄存器间接相对 SI=1000H
MOV [SI+20H] 程序 ,AX
CS 偏移1000H
DS
SS
ES
位移20H
青岛理工大学琴岛学院
寄存器相对寻址过程示意图
真正数据所在的地址
青岛理工大学琴岛学院
错误指令举例: 6)基址变址寻址: MOV [BX+CX],AX ; CX不能做变址寄存器 MOV [BX+BP],AX ; BP不能作为变址寄存器 操作数的有效地址 EA等于一个基址寄存器( BX或 MOV [BX+DI],ARRAY; BP)与一个变址寄存器( SI或DI)的内容之和;
总时间=基本执行时间+计算EA的时间+执行总线读/写周期的时间
指令的基本执行时间随指令类型的不同差异很大,访问存 储器既要执行总线的读/写周期,又要计算操作数的有效地址 EA,计算EA的时间又与指令的寻址方式有关。
青岛理工大学琴岛学院
4.2 8086/8088指令系统
数据传送类指令
算术运算类指令 位操作类指令 串操作类指令 控制转移类指令 处理器控制类指令
21000H 20 位 物 理 地 址 真正数据所在的地址 Memory DS … 20000H
…
78H 21000H 56H
青岛理工大学琴岛学院
4)寄存器间接寻址:
此方式的操作数存放在存储器单元中,指令给出的 16位寄存器值就是该操作数所在存储单元的EA。
例: 已知: (DS)=2100H,(DI)=2000H 指令: MOV AX,[DI] ;(AX) ((DI)) 注:使用BX、SI、DI,操作数在DS段;BP时在SS段 其中寄存器只能是BX、SI、DI、BP
《计算机组成原理》教程第4章指令系统
4
二 指令的格式
即指令字用二进制代码表示的结构形式
包括 操作码:操作的性质 操作码 地址码:操作数(operand)的存储位置,即参加操作的 operand , 地址码 数据的地址和结果数的地址
操作码域(op) 地址码域(addr)
5
1.操作码 操作码
指令的操作码表示该指令应进行什么性质的操作。 组成操作码字段的位数一般取决于计算机指令系统的 规模。 固定长度操作码:便于译码,扩展性差 . 可变长度操作码:能缩短指令平均长度 操作码的的位数决定了所能表示的操作数,n位操 作码最多表示2n种操作
(2). 堆栈工作过程 .
(一)进栈操作 ① 建立堆栈,由指令把栈顶地址送入SP,指针 指向栈顶。 ② 进栈:(A)→Msp, (sp)-1→SP ;Msp:存储 器的栈顶单元 (二)出栈操作 (SP)+1→SP, (Msp)→A
22
五.指令类型
一个较完善的指令系统应当包括: 数据传送类指令: 例)move、load、store等 算术运算类指令: 例)add、sub、mult、div、comp等 移位操作类指令: 例) shl,shr,srl,srr 逻辑运算类指令: 例)and、or、xor、not等 程序控制类指令: 例)jump、branch、jsr、ret、int等 输入输出指令: 例)in、out等 字符串类指令: 例)如alpha中cmpbge、inswh、extbl等 系统控制类指令: 例)push、pop、test等
18
10) *段寻址方式 段寻址方式 Intel 8086 CPU中采用了段寻址方式(基址寻址的特例)。 由16位段寄存器和16位偏移量产生20位物理地址 11)*自动变址寻址 自动变址寻址 指在变址方式中,每经过一次变址运算时,都自动改变变址寄存 器的内容,以后在PDP-11中详讲.
微机原理 第02章
存储器单元的地址
物理地址 12340H 67H 逻辑地址(段+偏移) 1234H:0000H
12341H
12342H 12343H 12344H
67H
67H 67H 67H
1234H:0001H
1234H:0002H 1234H:0003H 1234H:0004H
AH AL BH BL CH CL DH DL SP BP
DI SI
(图2-2) 数据寄存器
地址寄存器
总线 控制 逻辑 电路
外 总 线
运算寄存器 ALU 标志
执行部分 控制电路
1 2 3 4
指令队列缓冲器 4个字节 总线接口单元 (BIU)
执行单元 (EU)
指令预取
取指令1 执行指令1 取指令2 执行指令2 取指令3 执行指令3
存储器的分段管理
• 8086/8088将1MB存储器空间分成若干个逻辑段 来管理。每个段最大限制为64KB。 • 采用逻辑地址(段地址:偏移地址)的形式来表达 段中每个存储器单元的20位物理地址。 • 段地址和偏移地址都是16位二进制数。
段地址
• 段地址说明该逻辑段在内存中的起始位置,即该 段中的第一个内存单元的物理地址。 • 段地址必须是模16地址,即××××0H的形式, 故可采用16位二进制数据表示,保存在段寄存器 (CS,DS,ES,SS)中。
低地址
AL ... 操作码 05H ... 指 令 代 码 段
例: MOV AL, 05H
指令执行后: (AL)=05H
05H
高地址
低地址
例:MOV AX, 3064H
指令执行后: (AX)=3064H
大学计算机第4讲-冯-诺依曼计算机器-程序执行
自动存取:存储器的工作原理 (1)什么是存储器?
存储器的基本结构
概念映射
存储器
存储单元 存储位(存0或存1) 地址编码An-1…A0 单元控制线Wi 输出缓冲器 …
宿舍楼
房间 床位(住人/不住人) 房间号 房间钥匙 公共的走廊及大门 ……
从存储器与宿舍楼的概念对比中,你能发现什 么异同吗?
自动存取:存储器的工作原理 (2)存储器是怎样存储0和1的? 又是怎样控制存取的?
图灵机的思想与模型简介 (4)小结?
输入
程序&指令 (计算规则)
按计算规则(程序)对输 入进行变换得到输出
输出
输入/输出都是0和1的形 式表达
程序和指令也是0和1的形 式表达
程序可用状态转换 图来表达
冯.诺依曼计算机: 思想与构成
战德臣
哈尔滨工业大学 教授.博士生导师 教育部大学计算机课程教学指导委员会委员
OK Z hanD C
Research Center on Intelligent Computing for Enterprises & Services,
Harbin Institute of Technology
冯.诺依曼计算机: 思想与构成 (1)什么是冯.诺依曼计算机?
冯.诺依曼(Von.Neumann)计算机
基本目标: 理解程序是如何被执行的
基本思维:机器级算法与程序机器指令与指令系统存储器存储程序运 算器与控制器机器级程序的执行;算法程序化程序指令化指令存储化 执行信号化
机器指令与机器级程序
战德臣
哈尔滨工业大学 教授.博士生导师 教育部大学计算机课程教学指导委员会委员
OK Z hanD C
Research Center on Intelligent Computing for Enterprises & Services,
第二章-8086微处理器
答案:A
思考题
8086/8088的状态标志有 A)3 B)4 C)5 答案:D 个。 D)6
思考题
8086/8088的控制标志有 A)3 B)4 C)5 答案:A 个。 D)6
三、引脚信号和功能(图2-5 )
8086总线周期的概念: 为了取得指令或传送数据,就需要CPU的总线接 口单元(BIU)执行一个总线周期。 一个最基本的总线周期由4个时钟周期组成。 习惯上将4个时钟周期分别称为4个状态,即T1状 态、T2状态、T3状态和T4状态。 图2-17
2.方向标志DF(Direction Flag) 用于串操作指令中的地址增量修改(DF =0)还是减量修改(DF=1)。 STD使DF=1 CLD使DF=0
(三)标志寄存器-控制标志(续)
3.跟踪标志TF(Trap Flag) 若TF=1,则CPU按跟踪方式(单步方式) 执行程序,否则将正常执行程序。
思考题
指令队列的作用是 A)暂存操作数地址 。 B)暂存操作数
C)暂存指令地址
D)暂存预取指令 答案:D
思考题
8086的指令队列的长度是 A)4个 B)5个 C)6个 D)8个 字节。
答案: C
思考题
8088的指令队列的长度是 A)4个 B)5个 C)6个 D)8个 字节。
答案:A
思考题
第二章 8086/8088微处理器
8086/8088微处理器的结构 8086/8088典型时序分析
简 介
8086:16位微处理器 数据总线宽度16位:可以处理8位或16位数据 地址总线宽度20位:可直接寻址1MB存储单元和 64KB的I/O端口 8088:准16位处理器 内部寄存器及内部操作均为16位,外部数据总线8位 8088与8086指令系统完全相同,芯片内部逻辑结构、芯片引 脚有个别差异。 设计8088的目的主要是为了与Intel原有的8位外围接口芯片 直接兼容
微机原理接口技术03_指令系统
3.2.1 数据的寻址方式
基址变址寻址同样适用于数组或表格处理,首地 址存放在基址寄存器中,变址寄存器访问数组中各元
素。因两个寄存器都可以修改,所以它比寄存器相对
寻址方式更灵活。需要注意的是,两个寄存器不能均 为基址寄存器,也不能均为变址寄存器。
3.2.1 数据的寻址方式
7.基址变址相对寻址 (Relative Based Indexed Addressing) 操作数的有效地址为指令中规定的1个基址寄存 器和1个变址寄存器的内容及指令中指定的位移量三 者之和。 位移量[基址寄存器][变址寄存器] 可以表示成多种形式组合。寻址寄存器要放在方括 号中。
3.2.1 数据的寻址方式
4.寄存器间接寻址(Register Indirect Addressing) 操作数的有效地址存放在基址寄存器或变址寄存 器中,而操作数则在存储器中。对16位数进行寄存器 间接寻址时可用的寄存器是基址寄存器BX、BP和变 址寄存器SI、DI。使用BP时默认的段寄存器为SS, 使用其他寄存器默认的段寄存器为DS。 操作数有效地址格式为:[间接寻址的寄存器]。 寻址寄存器放在方括号中。
CPU执行指令时,指令是按顺序存放在存储器 中的,而程序执行顺序是由CS和IP的内容来决定的。 当程序执行到某一转移或调用指令时,需脱离程序 的正常顺序执行,而把它转移到指定的指令地址, 程序转移及调用指令通过改变IP和CS内容,就可改 变程序执行顺序。
3.2.2 程序转移地址寻址方式
根据程序转移地址相对于当前程序地址的关 系,可分为段内、段外;又根据转移地址是否直 接出现在指令中,分为直接、间接,所以有四种 程序转移寻址方式:段内直接寻址、段内间接寻
第3章
指令系统
指令是计算机用以控制各个部件协调
微型计算机指令系统
例:已知:(DS)=2100H,(DI)=2000H
指令: MOV AX,[DI] ;(AX)
物理地址=(DS) * 16 + (DI)
((DI))
=2100H * 16 + 2000H
=21000H + 2000H
=23000H
指令结果:将23000H单元内容送AL中,
将23001H单元内容送AH中。
3、1 8086/8088的寻址方式
本章主要介绍8086/8088的指令系统以及在指令中为 取得操作数地址所使用的寻址方式。
汇编指令:
操作码 操作数
操作码:指令操作类型; 操作数:指令所需操作数或操作数的地址;操作数可以 有一个,也可以有两个,一个源操作数,一个目的操作 数。 例: MOV AX,CX ;将CX的内容送入AX中。
5、相对基址变址寻址方式
操作数在存储器内,指令将基址寄存器(BX或BP)与 变址寄存器(SI或DI)的内容之和再加上位移量(8位 或16位),得到操作数所在单元的有效地址。
有效地址=
(BX)
(BP)
+
(SI)
DISP8
+
(DI)
DISP16
物理地址 = (DS)* 16 +(BX)产生的有效地址
物理地址 = (SS)* 16 +(BP)产生的有效地址
AA
AA 间接寻址 BB AX
0001
AH
AL
操作数在存储器中,指令中寄存器内容作为操作数所在 单元的有效地址。
(BX) 有效地址 =
(SI)
(DI)
段寄存器为DS 段寄存器为SS
(BP) 物理地址计算方法:
物理地址 = (DS)* 16 + (BX)或(SI)或(DI) 物理地址 = (SS)* 16 + (BP)
大工计算机原理第3章8086微处理器的指令系统(1)资料
第3章 8086微处理器的指令系统(1)3.1 指令系统概述● 指令系统是一台计算机所能(识别和执行)的全部指令的集合。
它与(微处理器)有着密切的关系,不同的微处理器有不同的指令系统。
8086CPU 包含133条指令● 指令是使计算机执行某种(特定操作)的二进制编码。
指令一般包括两个部分:(操作码域)和(地址域)。
填空操作码域:存放指令的操作码,即指明该指令应由计算机完成何种操作。
地址域:确定操作数的值或地址、操作结果的地址,有的指令的地址域还指出下一条指令的地址。
● 机器指令:计算机能(直接识别)的二进制代码。
● 汇编语言:汇编语言是一种符号语言,用助记符表示操作码,用符号或符号地址表示操作数或操作数地址,它与机器指令是一一对应的● 汇编程序:将汇编语言源程序翻译成机器语言(就是一条一条的机器指令),即目标程序。
3.2寻址方式● 根据(指令内容)确定(操作数地址)的过程,称为寻址。
● 根据寻址方式计算所得到的地址叫做(有效地址EA ),也就是(段内偏移地址)。
有效地址还需要与相应的(段基地址)组合才是20位的(物理地址PA) ,该工作由微处理器来完成。
牢记什么是EA ?什么是PA ?怎么计算?后面有关于EA 和PA 的解释及计算方法!● 寻址方式在两种方式下被涉及:(操作数)的寻址方式和(指令)的寻址方式。
如果没有特别说明,寻址方式是指源操作数的寻址方式。
1、隐含寻址(隐含了规定的操作数)例:DAA 指令,只有操作码,无操作数。
规定对AL 中的内容进行压缩BCD 码转换。
2、立即寻址(操作数(立即数)直接放在指令中,不需访问存储器)例:MOV AX ,1234H (若CS=1000H ,IP=100H )3、寄存器寻址(操作数就放在内部寄存器中,不需访问存储器)例:INC CX ;(CX)←(CX)+1 MOV AX ,BX ;执行后BX 内容不变 4、直接寻址(指令中直接给出操作数的存放地址) 例1:MOV AX ,[4000H] (DS =3000H )☞操作数寻址 可以进行寄存器寻址的寄存器: (16位)AX 、BX 、CX 、DX 、SI 、DI 、SP 、BP(8位) AH 、AL 、BH 、BL 、CH 、CL 、DH 、DL例2:MOV ES:[1234H],BL (ES =4000H )注意:(1)指令中给出的[4000H]和[1234H]是操作数的偏移地址。
第4章Intel 80868088指令系统
物理地址=30000H+1150H=31150H
执行后: (AX)=5678H。
第四章 Intel 8086/8088指令系统
5. 相对基址变址寻址
特点:操作数的有效地址是一个基址寄存器与一个变址寄 存器的内容之和再加上8位或16位位移量。同样,当基址寄存器 为BX时,用DS作为段寄存器; 而当基址寄存器为BP时,则用 SS作为段寄存器。因此物理地址为 (SI) 8位 位移量 物理地址=(DS)×16+ (BX)+ + (DI) 16位 (SI) 8位 位移量 + 物理地址=(SS)×16+ (BP)+ (DI) 16位
执行后: (AX)=1234H, (BX)不变。
第四章 Intel 8086/8088指令系统
4.1.4 存储器寻址
操作数在存储器中。存储器是分段管理的, 要找到操作数, 必须指明操作数所在的段(段基址由段寄存器指明)及段内偏 移地址(以有效地址EA的形成方式指出)。 1. 直接寻址方式 特点:指令中直接给出操作数在段内的偏移量,段基址隐 含给出或用段前缀指明。该寻址方式适用于处理单个变量。
4.1.1 8086/8088的通用指令格式 机器语言指令是由二进制代码组成的。一条指令是由操作 码与操作数字段构成的,其一般格式为 操作码字段 + 操作数字段 操作码字段指明计算机所要执行的操作(即功能);操作 数字段指出在指令执行过程中所需要的操作数。 例如: ADD AX, BX
第四章 Intel 8086/8088指令系统
变址寄存器内容之和。 (SI) 物理地址=(DS)×16+ (BX)+ (DI) (SI) 物理地址=(SS)×16+ (BP)+ (DI) 适用表格或数组处理,表格或数组首地址可存放在基址寄存器中。
第4章 指令系统(一)
功能:(OPD)--> IP,(OPD+2)-->CS
例4.1.13:JMP DWORD PTR [BX]
物理地址的形成过程如图4-9。
图4-9物理地址形成过程
作业
P137 4.1 4.2 4.3 4.4题
教学反馈
操作数直接放在指令中,以立即数或常数的形式出现,它是紧跟在指令操作码后面的一个可用8位或16位二进制补码表示的有符号数。
汇编语言格式:N
功能:指令下一单元的内容为操作数N,如图4-1。
图4-1立即寻址方式指令在存储器中存储形式
指令指明的寄存器就是操作数的存放地址,操作数在指令指明的寄存器中。
汇编语言格式:R
如:MOV AX, 0指令中的0为立即数操作数。
(2)寄存器操作数:指令中所需的操作数放在指定的寄存器中。
如:MOV AX, BX指令中的BX寄存器为寄存器操作数。
(3)存储器操作数:指令中所需的操作数放在指定的存储器中的存储单元中,而指令中的操作数提供存储单元的偏移地址。
如:MOV AX, [1000H]指令中的[1000H]为存储器操作数。
教学手段
多媒体教学
教学内容:
第4章8086/8088寻址方式及指令系统(一)
汇编语言程序是由一条一条的指令组成的,指令相当于高级计算机语言(如C语言)中的语句,它是人们操纵和控制计算机的工具,让计算机按人们的意图工作,即我们常常所说的编写程序。指令系统是微处理器所能执行的指令的集合,类似于小孩子玩具的积木,我们所编写的程序由指令组成。指令系统与微处理器有密切的联系,不同的微处理器有不同的指令系统。在本章中我们主要讨论INTEL公司生产的8086/8088微处理器指令系统,它有100多条指令,每条指令最多由四部分组成:标号场、操作场、操作数场、注释场。
微机原理、汇编语言及接口技术教程课后习题答案
!《16/32位微机原理、汇编语言及接口技术教程》部分习题参考解答第1章微型计算机系统概述〔习题〕什么是通用微处理器、单片机(微控制器)、DSP芯片、嵌入式系统〔解答〕通用微处理器:适合较广的应用领域的微处理器,例如装在PC机、笔记本电脑、工作站、服务器上的微处理器。
单片机:是指通常用于控制领域的微处理器芯片,其内部除CPU外还集成了计算机的其他一些主要部件,只需配上少量的外部电路和设备,就可以构成具体的应用系统。
~DSP芯片:称数字信号处理器,也是一种微控制器,其更适合处理高速的数字信号,内部集成有高速乘法器,能够进行快速乘法和加法运算。
嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合具体应用构成的控制系统,其典型的特点是把计算机直接嵌入到应用系统之中。
〔习题〕说明微型计算机系统的硬件组成及各部分作用。
〔解答〕CPU:CPU也称处理器,是微机的核心。
它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)。
处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。
存储器:存储器是存放程序和数据的部件。
(外部设备:外部设备是指可与微机进行交互的输入(Input)设备和输出(Output)设备,也称I/O设备。
I/O设备通过I/O接口与主机连接。
总线:互连各个部件的共用通道,主要含数据总线、地址总线和控制总线信号。
〔习题〕什么是总线微机总线通常有哪3组信号各组信号的作用是什么〔解答〕总线:传递信息的共用通道,物理上是一组公用导线。
3组信号线:数据总线、地址总线和控制总线。
(1)地址总线:传输将要访问的主存单元或I/O端口的地址信息。
#(2)数据总线:传输读写操作的数据信息。
(3)控制总线:协调系统中各部件的操作。
〔习题〕简答如下概念:(1)计算机字长(2)取指-译码-执行周期(3)ROM-BIOS(4)中断((5)ISA总线〔解答〕(1)处理器每个单位时间可以处理的二进制数据位数称计算机字长。
微处理器指令系统.ppt
常用命令:
-A 汇编
-U 反汇编
-T 单步执行
-G 断点执行
-D 数据显示
-R பைடு நூலகம்存器
启动方法
Windows 2000/XP/NT下运行CMD\COMMAND\“命令提 示符”)
;reg reg/mem
寄存器与寄存器之间对换数据 寄存器与存储器之间对换数据 不能在存储器与存储器之间对换数据
换码指令XLAT
XLAT ;al←ds:[bx+al]
将BX指定的缓冲区中、AL指定的位移处的
一个字节数据取出赋给AL
tab 00H
tab db 0,1,4,9,15,25;定义DS段数据 Mov bx,offset tab(lea bx,tab)
FFFDFHH
高地址
堆栈操作的特点
堆栈操作的单位是字,进栈和出栈只对字量 字量数据从栈顶压入和弹出时,都是低地址字
节送低字节,高地址字节送高字节 堆栈操作遵循先进后出原则,但可用存储器寻
址方式随机存取堆栈中的数据 堆栈段是程序中不可或缺的一个内存区,常用
来
临时存放数据 传递参数 保存中断断点、中断现场
8086/8088指令系统
指令主要种类 指令功能 指令格式 指令的寻址方式、执行时间 指令对标志位的影响 使用指令的注意事项
2.3数据传送类指令
数据传送是计算机中最基本、最重要的一种操 作,传送指令也是最常使用的一类指令
传送指令把数据从一个位置传送到另一个位置 除标志寄存器传送指令外,均不影响标志位 重点掌握
MOV指令-段寄存器传送
mov [si],ds mov ax,ds mov es,ax
第2章 微型计算机和微处理器的结构
2.1.1 微处理器(微处理机)
微处理器:是微型计算机的中央处理部件,是由一片 或几片大规模集成电路组成的中央处理器,一般也称 CPU(Center Process Unit)。其内部通常包括算术逻辑 部件,累加器、通用寄存器组,程序计数器,时序和控制 逻辑部件,内部总线等等。 2.1.2 存储器
存储结果 1
取指令 4
……
EU
……
译码 1
执行 1
译码 2
执行 2
……
(b)流水处理
如图: 8086/8088 CPU 由于指令执行部件EU和总线接口 部件BIU相互独立,可并行操作,进行流水线处理。若一条指 令执行过程中不需要从存储器取操作数和向存储器存储结果, 即不占CPU总线时间,总线接口部件便可对下一条要执行的指 令预取。可见。采用流水线技术提高了指令执行速度。
2.2.3 8086/8088微处理器的功能结构 从功能上来看,8086/8088 CPU可分为两部分,即总线接 口部件BIU(Bus Interface Unit)和执行部件EU(Execution Unit)。
图2.3 8086/8088CPU内部功能结构图
(1) 执行部件(EU)
功能:负责指令的执行。(主要进行8位及16位的各种运算) 组成:①ALU(算术逻辑单元); ②通用寄存器组; ③标志寄存器( FLAGS )。 ①通用寄存器(AX、BX、CX、DX) 8086 有4个16位的通用寄存器(AX、BX、CX、DX), 可以存放16位的操作数,也可分为8个8位的寄存器(AL、AH; BL、BH;CL、CH;DL、DH)来使用。其中AX称为累加器, BX称为基址寄存器,CX称为计数寄存器,DX称为数据寄存 器。这些寄存器在具体使用上有一定的差别,如表2-1所示。
第4讲 32位微处理器Pentium
四、Pentium的指令流水线技术
1.组成
总线接口部件
连接CPU和其他部件,取指令和存取操作数 能接收多个总线请求,按优先级选择
指令预取部件
从存储器读取指令到指令预取队列 使用总线的优先级最低
指令译码部件
对指令译码,然后放入译码指令队列
指令执行部件
U、V流水线(分别由ALU、一系列寄存器、地址生 成电路和连接数据Cache的接口组成) 14 执行指令
30
六、Pentium的主要信号
5.系统控制信号
INIT:系统初始化信号
6.总线仲裁信号
BREQ:总线周期请求信号 BOFF:强制让出总线请求
31
七、Pentium的总线状态
1.总线状态
T1状态:地址信号有效,ADS信号也有效。 T2状态:数据出现在数据总线上,如果BRDY有效, 则当前周期为突发式总线周期,否则为单数据传输的 总线周期。 T12状态:流水线式总线周期的特有状态。此时,系 统中有两个总线周期并行进行。第一个总线周期进入 T2状态,并且BRDY有效,第二个总线周期进入T1状 态,地址和ADS有效。
1
一、Pentium的先进技术
1.先进的体系结构 2.CISC和RISC相结合的技术 3.超标量流水线技术(最重要的创新技术) 4.先进的分支预测技术
2
一、Pentium的先进技术
1.先进的体系结构
内部总线32位,而外部数据总线64位,数 据传输率提高一倍。 设置了独立的片内指令Cache和数据Cache, 处理器能同时读一个指令字和一个数据字,避 免了访存冲突导致的不命中。 使用了两条流水线并行执行指令。 内部集成了增强型浮点处理部件。 对常用指令如ADD、MUL、INC、PUSH等采用 硬件实现,大大提高了执行速度。 采用分段和分页两级存储管理机制。 ……
第3章 Thumb-2指令系统
15
ARM Cortex-M3 Toolchain Flow
ARM Cortex-M3
The combination of a conditional instruction
r0
sequence IT (If/Then) with the same visible
NB: Most compilers automatically provide the Assembler code stubs shown here, allowing majority of code in High Level ‘C’ language
Assembler
Thumb C/C++ Compiler
上条指令结果的标志
IPSR+EPSR
IPSR+APSR
EPSR+APSR
xPSR = APSR+EPSR+IPSR 主堆栈指针
进程堆栈指针
常规异常屏蔽寄存器
常规异常的优先级阈值寄存器
等同BASEPRI,但是施加了写的限制:新的优先级比较比旧的高(更小的数)
fault 屏蔽寄存器(同时还包含了PRIMASK 的功能,因为faults 的优先级更高)
将移位后的寄存器值传送到寄存器中
将16位立即数传送到寄存器的高半字[31:16]中
将16位立即数传送到寄存器的低半字[15:0]中,
并将高半字[31:16]清零
将状态传送到寄存器中
精选版课传件送ppt到状态寄存器中
17
4. Cortex-M3常用的Thumb-2指令集(续)
(1)数据传送指令(续)
第4章 寻址方式与指令系统(二)
6
传送指令
作用
把数据或地址传送到寄存器或存储器单元中
分类
分四大类 共14条指令
《微机接口技术》
7
传送指令的列表
分组 助记符 MOV PUSH POP XCHG 累加器专用传送指 令 功能 传送 压栈 弹栈 交换 操作数类型 字节/字 字 字 字节/字
通用数据传送指令
XLAT
1000H BX 0200H DI 1206H BX 0200H DI
执行前
执行后
注意区别于: MOV BX, [BX+DI+6H]
《微机接口技术》
27
b)LDS指令和LES指令说明
LDS指令(Load pointer into register & DS) 格式:LDS REG, SRC 操作:将源操作数(SRC)指定的FAR型指 针装入指定寄存器(REG)和DS寄存器 说明:
04H AL 66H AL
执行前
执行后
《微机接口技术》
21
b)IN指令和OUT指令说明
IN指令(输入) 格式:IN AC, PORT 操作:把外设端口的内容输入到AL或AX OUT指令(输出)
格式:OUT PORT, AC 操作:把AL或AX的内容输出到外设端口
《微机接口技术》
22
IN指令和OUT指令的寻址方式
XCHG指令示例
XCHG AL, BL XCHG BX, CX
XCHG [BX], CX
XCHG DS:[2530H], CX
《微机接口技术》
17
XCHG指令示例
用XCHG指令改进“存储器中两个字节单元 内容的交换”的程序段
MOV BL, DS:[2035H] MOV CL, DS:[2045H] MOV DS:[2045H], BL MOV DS:[2035H], CL MOV BL, DS:[2035H]
第02章 微型计算机系统中的微处理器
主要引线(最小模式下):
8088是工作在最小还是最大模式由MN/MX端状态决 定。MN/MX=0工作于最大模式,反之工作于最小模式
AD7---AD0:低8位地址和数据信号分时复 用。在传送地址信号时为单 向,传送数据信号时为双向。 A19--- A16:高4位地址信号,分时复用。 A15--- A8 :输出8位地址信号。
第2章 微型计算机系统中的微处理器
2.1 微型计算机的组成及工作原理 2.1.1微型计算机基本结构(冯诺依曼结构)
存储程序工作原理是指把程序存储在计算机内, 使计算机能像快速存取数据一样地快速存取组 成程序的指令。为实现控制器自动连续地执行 程序,必须先把程序和数据送到具有记忆功能 的存储器中保存起来,然后给出程序中第一条 指令的地址,控制器就可依据存储程序中的指 令顺序周而复始地取指令、译码、执行,直到 完成全部指令操作为止,即控制器通过指令流 的串行驱动实现程序控制
2.1.2微处理器CPU
1、寄存器组 2、算术逻辑单元ALU 3、控制器 (1)程序计数器PC (2)地址寄存器AR (3)数据寄存器DR (4)指令寄存器IR和指令译码器ID (5)时许部件
2.1.3 总线
1、DB 2、AB 3、CB
2.1.4 存储器----P11 通常指内存,有读、写操作
图2-13 8086CPU最小模式下的典型配置
2.最大工作模式
由图2-4可知, 最大模式配 置和最小模 式配置有一 个主要的差 别: 最大模 式下多了 8288总线控 制器。
图2-4 8086CPU最大工作 模式下的典型配置
2.6 8086的总线时序
1.读周期的时序 2.写周期的时序
1.读周期的时序(图2-9)
第2章
4 微机原理第四章 16位微处理器
20 位
AX BX CX DX
16 位 段 寄 存 器
指令指针
SP
BP DI SI
CS DS SS ES IP 内部暂存器 外部总线
EU
16 位
数据总线
运 算 寄 存器
总线
BIU
执行 控制 电路
控制 逻辑
8088 8位 8086 16位
A L U
指令对列
1 2 3 4
标志寄存器
8086为 6 字节
(( 5 )在执行转移指令时,指令队列中的原有内容被自动清 (3) 4 在执行指令的时,需要访问 EU又没有总线访问时, M或I/O设备,8088 EU会请求 BIU 1)当指令列已满,而且 )每当 8086 的指令队列中有两个空字节( 有一 2 EU 准备执行一条指令时,它会从指令队列取指 除, BIU 会接着往指令队列中装入另一个程序段中的指令。 便进入空闲状态。 BIU ,完成访问内存或 I/O端口的操作。 个空字节)时, BIU就会自动把指令取到指令队列中。 令,然后用几个时钟周期去执行指令。
16 位
总线接 口单元 (BIU)
总线 控制 逻辑 外部总线
8088 8位 8086 16位
运 算 寄 存器
指令对列
A L U
执行 控制 电路
8086为 6 字节
1
2
3
4
标志寄存器
执行单元 (EU)
4.1 8086的结构 从功能上分为两部分:BIU和EU, 内部结构如图所示。
4.2.1 执行单元EU
片内总线等
1. 第一代——4位或低档8位微处理器 第一代微处理器的典型产品是Intel公司
1971年研制成功的4004(4位CPU)及1972年 推出的低档8位CPU 8008。
微机原理讲义
电子计算机的发展:
第一代:电子管计算机(1946-1956) 第二代:晶体管计算机(1957-1964) 第三代:中小规模集成电路计算机(1965-1970) 第四代:超大规模集成电路计算机(1971-今)
大型计算机/巨型计算机(Mainframe Computer) 中型计算机 小型计算机(Minicomputer) 微型计算机(Microcomputer) 单片计算机(Single-Chip Microcomputer)
100-200
8086/8088 80286 80386 32 80486 32 Pentium P/Pro P/MMX PII PIII P4 Itanium
六
32
七
64
0.13
550 133-200 450 166-233 750 233-450 >300 850 450-1200 1000 1300-2400 CPU:2.5K 800(20条指令 >3000 Cache:30K /时钟周期)
(2n1 1) ~ (2n1 1)
对应的原码是1111~ 0111。
33
数0的原码
8位数0的原码:+0 = 0 0000000 - 0 = 1 0000000
即:数0的原码不唯一。
34
反码[X]反
定义 若X>0 ,则 [X]反=[X]原 若X<0, 则 [X]反= 对应原码的符号位 不变,数值部分按位取反
D Dn 1 10 Dn 2 10 D0 10
1 n 1 n2 0
D1 10 D m 10
m
i m
D 10
i
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据块传送(字)
mov cx,200h
;设置循环次数:1K÷2=200H
mov si,offset sbuf
;设置循环初值:SI指向数据段源缓冲区开始
mov di,offset dbuf again:
;DI指向附加段目的缓冲区开始(附加段) mov ax,[si] ;循环体:实现数据传送 mov es:[di],ax ;每次传送一个字 add si,2 ;指向下一个(字)单元
;循环条件判定:循环次数减1,不为0转移(循环)
add di,2 loop again
子程序指令
子程序是完成特定功能的一段程序 采用CALL指令转移到该子程序的起始 处执行 采用RET指令回到主程序继续执行 用堆栈保存断点与现场 使用子程序时,注意堆栈的变化
子程序调用指令CALL
例题
题目:找出无符号数AL,BL,CL中的最大值, 设三个数不相等
CMP AL,BL AL>BL N Y CMP AL,CL AL>CL Y MAX=AL AL交换BL
CMP AL,BL JAE NEXT; XCHG AL,BL NEXT:CMP AL,CL JNB NEXT1 XCHG AL,CL NEXT1:MOV MAX,AL
JCXZ label;如果CX=0(直接判断),则转移到
label
label操作数采用相对短寻址方式 还有LOOPZ/LOOPE和LOOPNZ/LOOPNE两条指令
循环指令
LOOPZ/LOOPE label;为零/相等时循环 操作:(CX)← (CX)-1 若ZF=1且CX≠0,则转移到label;否则退出循 环 功能:将CX减1,如果CX为0或者ZF为0则退出 循环,在ZF=1且CX≠0时继续循环。 注意:CX中的值为0时,并不会影响标志位ZF。
间接寻址方式
目的地址从指令中寄存器或存储单元中间接获 得 例如:JMP [BX]
目标地址的寻址范围:段内寻址
段内转移——近转移(near) 在当前代码段64KB范围内转移 ( ±32KB范围) 只改变IP,CS不变 JMP START 段内转移——短转移(short) 转移范围可以用一个字节表达,在段 内-128~+127范围的转移 JNZ LP
例: 求两符号数较大值
cmp ax,bx ;比较AX和BX jge next ;若AX≥BX,转移 xchg ax,bx ;若AX<BX,交换 mov wmax,ax
next:
循环指令
8088设计有针对CX计数器的专门计数循环指令 LOOP label ;循环指令
;首先CX←CX-1;然后判断;若CX≠0,转移
相对寻址方式 直接寻址方式 间接寻址方式
相对寻址方式
指令中提供目的地址为:相对于当前IP的位移 量,转移后的IP值=当前IP值加上位移量
MOV BX,0678H LP:DEC BX JNZ LP;该指令中操作数部分为相对位移量
直接寻址方式
转移后的目标地址直接来自指令中提供的目标 逻辑地址 MOV BX,0678H LP:DEC BX JMP LP;指令中操作数部分为逻辑符号地址LP 的值
例:将数据段的sbuf开始的1KB数据传送到附加 段的Dbuf开始的区域
可以以字节或字为单位传送
以字节为单位传送:
一次传送1字节
利用循环 初始化源、目标地址和循环计数
数据块传送(字节)
mov cx,400h;设置循环次数:1K=400H mov si,offset sbuf;SI指向数据段源缓冲区首址 mov di,offset dbuf;DI指向附加段目的缓冲区首址 again:mov al,[si] ;循环体:实现数据传送 mov es:[di],al ;每次传送一个字节 inc si ;SI和DI指向下一个单元 inc di loop again;CX=CX-1,不为0转移(循环)
子程序返回指令RET
根据段内和段间、有无参数,分成4种类型
RET ;无参数段内返回 RET i16;有参数段内返回,SP+i16 RET ;无参数段间返回 RET i16;有参数段间返回,SP+i16 段内返回——出栈偏移地址IP IP←SS:[SP], SP←SP+2 段间返回——出栈偏移地址IP和段地址CS IP←SS:[SP],SP←SP+2 CS←SS:[SP],SP←SP+2
LOOPZ举例
设内存中存放一字符串,找出第一个不是a的 字符,并记下它的地址放在ADDR单元,如果 都是a字符,则将ADDR单元清0。 Dseg segment String db ‘aaaaaabaaaa….’ Agin: inc si Count db 50 cmp al,[si] Addr dw ? loopz agin Dseg ends jnz next Cseg segment mov si,0 Assume cs:cseg,ds:dseg Next: mov addr,si Start: mov ax,dseg mov ah,4ch mov ds,ax int 21h lea si,string Cseg ends mov cl,count end start mov ch,0 mov al,’a’ dec si
段内直接无条件转移
JMP label;
IP=偏移地址label
举例: START: INC BL ADD AL,BL JMP START
条件转移指令
条件转移指令Jcc根据指定的条件确定程序是 否发生转移。其通用格式为: Jcc label ;条件满足,发生转移 ;IP←IP+8位位移量; ;否则,顺序执行 label是一个标号 label只支持短转移的相对寻址方式
代 码 段
代 码 段
目标地址的寻址范围:段间寻址
段间转移——远转移(far) 从当前代码段跳转到另一个代码段, 可以在1MB范围 需要更改CS段地址和IP偏移地址
实际编程时,汇编程序会根据目标地址的 属性,自动处理成短转移、近转移或远转移 程序员可用操作符 short 、 near ptr 或 far ptr 强制成为需要的转移类型
Jcc指令的分类
Jcc指令不影响标志,但要利用标志(表2-3) 根据利用的标志位不同,分成两种情况比较有符号数 大小与比较无符号数高低)
判断单个标志位状态
⑴ JZ/JE和JNZ/JNE 利用零标志ZF,判断结果是否为零(或相等) ⑵ JS和JNS 利用符号标志SF,判断结果是正是负 ⑶ JO和JNO 利用溢出标志OF,判断结果是否产生溢出 ⑷ JP/JPE和JNP/JPO 利用奇偶标志PF,判断结果中“1”的个数是偶是奇 ⑸ JC/JB/JNAE和JNC/JNB/JAE 利用进位标志CF,判断结果是否进位或借位
2.6 控制转移类指令
控制转移类指令用于实现分支、循环、过 程(子程序)等程序结构 重点掌握: JMP/Jcc/LOOP/JCXZ CALL/RET INT n/IRET 常用系统功能调用
控制转移类指令通过改变 IP (和 CS )值,实现程 序执行顺序的改变
目标地址的寻址方式
子程序调用举例
将data单元中的一字节十六进制数转成两个 ASCII码,分别存放asch和ascl中
Dseg segment data db 8ah Asch db ? Ascl db ? Dseg ends Cseg segment Assume cs:cseg,ds:dseg Start: mov ax,dseg mov ds,ax Mov dl,data and al,0f0h Mov cl,4 Shr dl,cl Call htoasc mov asch,dl Mov dl,data And dl,0fh Call htoasc mov ascl,dl mov ah,4ch int 21h Htoasc proc … … ret Htoasc endp Cseg ends end start
例题
题目:判断AX与BX内容是否相等,如果相等, 则将MAX单元置0,不相等则置-1
CMP AX,BX JZ ZERO MOV MAX,0FFH JMP NXET
ZERO:MOV MAX,0 NEXT:
例题
题目:找出无符号数AL,BL,CL中的最大值, 设三个数不相等
CMP AL,BL AL>BL N Y CMP AL,CL AL>CL Y MAX=AL AL交换BL
CMP AL,BL JNC NEXT XCHG AL,BL NEXT:CMP AL,CL JNC NEXT1 XCHG AL,CL NEXT1:MOV MAX,AL
N AL交换CL
比较无符号数高低
无符号数的大小用高(Above)、低(Below) 表示,需要利用CF确定高低、利用ZF标志确定 相等(Equal) 两数的高低分成4种关系,对应4条指令 JB(JNAE):目的操作数低于(不高于等于)源操作数 JNB(JAE):目的操作数不低于(高于等于)源操作数 JBE(JNA):目的操作数低于等于(不高于)源操作数 JNBE(JA):目的操作数不低于等于(高于)源操作数
需要弹出CALL指令压入堆栈的返回地址
例: 十六进制转换为ASCII码的子程序
将DL低4位的一位16进制数转换成ASCII码
0-9:30h-39h(+30h)
A-F:41h-46h(+30h+07h)
PROC与ENDP必须成对出现, PROC 后可加参数 near和far分 例: 十六进制转换为 ASCII 码的子程序 别表示近过程和远过程,如 省略,为近过程 htoasc proc;定义子程序(过程)开始伪指令 and dl,0fh ;只取DL的低4位 or dl,30h ;+30h cmp dl,39h ;是0~9,还是0Ah~0Fh ? jbe htoend ;是0~9,转移 add dl,7 ;是0Ah~0Fh,再+7 htoend: ret ;子程序返回 htoasc endp;定义过程结束伪指令