Download presentation
Presentation is loading. Please wait.
1
第四章 典型CPU及指令系统举例
2
学习内容 理解8086/8088CPU的寄存器结构、主存储器、堆栈结构。 掌握8086/8088指令系统的寻址方式。(本章的重点内容)
理解8086/8088指令类型。 了解提高CPU性能的一些措施与当前常用的实际CPU基本组成。
3
§ /8088CPU § /8088CPU的结构 /8088内部结构: 8086/8088CPU采用指令流水线结构,将取指令(或取操作数)与执行指令的功能分别由两个独立部件实现, 即总线接口部件BIU与执行部件EU 主要任务是完成CPU与主存储器或I/O之间的信息传送。 主要任务是执行指令
4
总线接口部件BIU与执行部件EU功能见教材P114。
5
2. 8086/8088主存地址的形成 段基值:在BIU中设置段寄存器,用以存放20位段起始地址的高16位,称为段基值。
偏移量:由EU或指令指针IP提供段内的偏移量,即一个主存单元与所在段的段基址之间的字节距离。
6
§ /8088寄存器 1. 段寄存器: CS(代码段寄存器)——用来存放程序的指令代码序列,用来存放当前代码段段首址的高16位,即段基值。 DS(数据段寄存器)——存放程序的有关数据,用来存放当前数据段的段基值。 SS(堆栈段寄存器)——用来存放按后进先出顺序存取的信息。存放当前堆栈段的段基值。 ES(附加段寄存器)——存放运算结果或辅助数据,存放当前附加段的段基值。
7
2 . 通用寄存器 (1)地址指针寄存 (2)数据寄存器 3. 用于控制的寄存器 (1)指令指针IP: (2)标志寄存器FR 进位标志位CF
2 . 通用寄存器 (1)地址指针寄存 (2)数据寄存器 3. 用于控制的寄存器 (1)指令指针IP: (2)标志寄存器FR 作用类似于PC,当现行指令执行完毕,由IP提供下一条指令地址 进位标志位CF 奇偶标志位PF 辅助进位标志位AF 零值标志位ZF 符号标志位SF 溢出标志位OF 单步(或跟踪)标志位TF 中断标志位IF 方向标志位DF
8
§4.2 主存储器 §4.2.2 主存储器的段结构 §4.2.3 逻辑地址与物理地址 §4.2.1 8086/8088主存储器的特点
§4.2 主存储器 § /8088主存储器的特点 § 主存储器的段结构 § 逻辑地址与物理地址 逻辑地址:段基值和偏移量 物理地址 逻辑地址的来源
9
§ /8088堆栈 § 堆栈组织 8086/8088的堆栈是由SS指定的一段存储区(≤64KB)构成,并采用向上(地址码减小)生成方式,由堆栈指针SP指向栈顶。 SS提供堆栈段的段基值,SP的内容为栈顶单元相对堆栈段段基址的字节距离(偏移量)。 8086/8088堆栈规定以字(2个字节)为单位进行存取。
10
§4.3.2 堆栈操作 先设置堆栈,主要是对堆栈段寄存器SS物堆栈指针SP赋初值。 对堆栈的操作均在栈顶进行的,其基本操作的:
§ 堆栈操作 先设置堆栈,主要是对堆栈段寄存器SS物堆栈指针SP赋初值。 对堆栈的操作均在栈顶进行的,其基本操作的: 压栈:用压栈指令PUSH可以将通用寄存器、段寄存器或字存储单元内容压入堆栈。 2. 出栈:用弹出指令POP可以将当前栈顶字单元内容取出送到通用寄存器、段寄存器或字存储单元中。
11
§ /8088指令系统 § /8088寻址方式 1 . 寄存器寻址方式:指令所需的操作数存放在CPU的寄存器(通用寄存器或段寄存器)中,通过指令中给出寄存器地址去找到操作数。
12
寻址过程: 例:(BX) =1234H MOV AX,BX :将BX中的内 容送到AX中 (AX) =1234H 操作码 REC Ri
操作数S 是指令代码中的寻址字段,表示操作数的寄存器地址
13
2. 立即数寻址方式 立即数寻址方式:指令所需的操作数直接在指令代码中,随着取指令一起取到BIU的指令队列中。 操作码 操作码 一条指令
AX AH AL AH AL AX 一条指令 34H F5H 12H (A)MOV AX,1234H (B)MOV AL,0F5H
14
3. 存储器寻址方式 在汇编语言程序中,一个存储单元的地址采用逻辑地址来表示:(形式:段基值:偏移量)
段基值:是由某个段寄存器提供,由指令隐含给出。 偏移量:是指存放操作数的存储单元与段起始(段基址)之间的字节距离,字由CPU的EU按指令中操作数的寻址方式计算而得到,又称为有效地址EA。 有效地址EA:由位移量、基地址、变址量三个地址分量的某种组合求得。
15
(1)直接寻址方式 定义:指令所需的操作数存放在存储单元中,操作数的有效地址EA直接由指令代码中的位移量提供。 寻址过程:
在源程序中,直接寻址方式可用数值地址或符号地址来表示。 操作码 … 位移量 EA
16
在采用直接寻址方式的汇编指令中,用数值表示操作数的有效地址,则操作数所在段的段寄存器必须指明,不能缺省。
用数值地址表示: 在采用直接寻址方式的汇编指令中,用数值表示操作数的有效地址,则操作数所在段的段寄存器必须指明,不能缺省。 MOV BX,DS:[1000H] 完成将当前数据段偏移1000H个字节的字单元内容1234H送入BX中。
17
在源程序中,常用符号地址表示存放操作数的存储单元,所以在汇编指令中,可用符号地址表示的直接寻址方式来存取操作数。
用符号地址表示: 在源程序中,常用符号地址表示存放操作数的存储单元,所以在汇编指令中,可用符号地址表示的直接寻址方式来存取操作数。 例题:P130 MOV BX,VAR MOV BX,DS:VAR MOV DA_BYTE,0FH MOV DS:DA_BYTE,0FH MOV CL,DA+3
18
(2)寄存器间接寻址方式 寄存器间接寻址方式:指令所需的操作数在存储单元中,操作数的有效地址EA直接从基址寄存器(BP或BX)或变址寄存器(SI或DI)中获得。 见P131的图4-22 寄存器间接寻址方式 MOV CH,[SI] MOV CH,DS:[SI] MOV [DI],BX MOV DS:[DI],BX MOV AL,[BX] MOV AL,DS:[BX] MOV CX,[BP] MOV CX,SS:[BP]
19
(2)寄存器间接寻址方式 操作码 MOD R/M 是指令代码中的寻址字段 SI OR DI EA OR BX OR BP 寻址过程
寄存器间接寻址方式实际上是将有效地址事先存放在一个寄存器中,如同一个地址指针。因此在程序中只要修改间址寄存器的内容,就可以用一条指令访问不同的存储单元。 DI EA OR BX OR BP 寻址过程
20
(3)变址寻址和基址寻址方式 使用SI或DI称为变址寻址。 使用BX或BP称为基址寻址。
变址寻址和基址寻址方式:指令所需的操作数在存储单元中,操作数的有效地址EA是基址寄存器(BP或BX)或变址寄存器(SI或DI)的内容与指令中给出的位移量(8位或16或)两个地址分量之和。 使用SI或DI称为变址寻址。 使用BX或BP称为基址寻址。
21
变址寻址和基址寻址方式 操作码 MOD R/M 位移量 SI OR DI OR EA + BX OR BP
22
变址或基址寻址方式用来访问顺序存放在主存中的一维数组、表格、字符串等。
寻址方式的使用格式: 变址或基址寻址方式用来访问顺序存放在主存中的一维数组、表格、字符串等。 典型用法:是将指令中不能修改的位移量作为基准地址,而变址或基址寄存器内容作为修改量 例题4-1:见教材132页。 MOV AX,10H[SI] MOV AX,DS:10H[SI] MOV TABLE[DI],12H MOV DS:TABLE[DI],12H MOV AX,ARRY[BX] MOV AX,DS:ARRY[BX] MOV TAB1[BP],CL MOV SS:TAB1[BP],CL
23
(4)基址变址寻址方式 操作码 MOD R/M 位移量 SI OR EA + DI BX OR BP 寻址过程
24
基址变址寻址方式用来访问存放在主存中的二维数组。(其寻址方式中有两地址分量可在程序执行过程中进行修改)
寻址方式的使用格式: 基址变址寻址方式用来访问存放在主存中的二维数组。(其寻址方式中有两地址分量可在程序执行过程中进行修改) 例题4-2:见教材 页。 MOV AX,200H[BX][SI] MOV AX,DS:200H[BX][SI] MOV TABLE[BX][DI],0FFH MOV DS:TABLE[BX][DI],0FFH MOV AX,ARRY[BP][SI] MOV AX,SS:ARRY[BP][SI] MOV TAB1[BP][DI],DL MOV SS:TAB[BP][DI],DL
25
4. 串操作寻址方式 串操作寻址方式: 串操作指令规定: 隐含使用SI作为在数据段中的源串(即源操作数)的地址指针
隐含使用DI作为在附加段中的目的串的地址指针。 SI 源串有效地址EA DI 目的串有效地址EA
26
§4.4.2 8086/8088指令 8086/8088指令按操作数地址划分: 双操作数指令:OPR DEST,SRC
§ /8088指令 8086/8088指令按操作数地址划分: 双操作数指令:OPR DEST,SRC 单操作数指令:OPR DEST 无操作数指令:OPR
27
8086/8088指令按功能划分: 传送类指令 算术运算类指令 位操作类指令 串操作类指令 程序转移类指令 处理器控制类指令 具体内容见课件
28
四、串操作类指令 “串”是指存储器中一序列字或字节单元,其内容是字符或数据。 串操作是对这一序列或字单元的内容进行某种操作。
29
1 . 取串指令 2 . 存串指令 指令格式:LODS源串 指令功能: (1)AX/AL (DS:(SI)) (2)SI (SI)±1或2
(3)对标志寄存器无影响 2 . 存串指令 指令格式:STOS目的串/STOSB/STOSW (1)ES:(DI) (AX)/(AL) (2)DI (DI)±1或2
30
3 .串比较指令 4. 串比较指令 指令格式:MOVS目的串、源串/MOVSB/MOVSW 指令功能:
(1)(ES:(DI)) (DS:(SI)) (2)SI (SI)±1或2,DI (DI)±1或2 (3)对标志寄存器无影响 4. 串比较指令 指令格式:CMPSI源串,目的串/CMPSB/CMPSW (1)(DS:(SI)—(ES:(DI)) (2) SI (SI)±1或2, DI (DI)±1或2 (3)影响标志位OF,SF,ZF,AF,PF,CF
31
5 .串搜索指令 6. 重复前缀指令(3条) 指令格式:SCAS目的串/SCASB/SCASW 指令功能:
(1)(AX/AL)—(ES:(DI)) (2)DI (DI)±1或2 (3)影响标志位OF,SF,ZF,AF,PF,CF 6. 重复前缀指令(3条) 指令格式:REP 重复执行串操作指令的条件是:(CX)≠0 指令格式:REPE/REPZ 重复执行串操作指令的条件是:(CX)≠0AND ZF=1 指令格式:REPNE/REPNZ 重复执行串操作指令的条件是:(CX)≠0 AND ZF=1
32
五、处理器控制指令 1. 标志位操作指令 2. 与外部事件同步的指令 3. 空操作指令
33
§4.5 提高CPU性能的一些措施 了解 自学
34
作业: 见教材P164,T3----27做在书上 作业:做在作业本上
1、编写一程序段,将AL的低4位与BL的低4位互换,AL和BL的高4位保持不变。 2、编写计算5X-Y+10多项式值的程序段。说明:多项式值存于AX中,X、Y是无符号数,设中间和最后结果不超过16位二进制数。
Similar presentations