1 / 92

第四章 典型 CPU 及指令系统举例

第四章 典型 CPU 及指令系统举例. 学习内容:. 4 . 1 8086/8088 CPU 的结构 4 . 2 主存储器 4 . 3 8086/8088 堆栈 4 . 4 8086/8088 指令系统 4 . 5 提高 CPU 性能的一些措施. 学习目标. 理解 8086/8088CPU 的寄存器结构、主存储器、堆栈结构。 掌握 8086/8088 指令系统的寻址方式。 (本章的重点内容) 理解 8086/8088 指令类型。 了解提高 CPU 性能的一些措施与当前常用的实际 CPU 基本组成。. 重点难点:

stacey
Download Presentation

第四章 典型 CPU 及指令系统举例

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第四章 典型CPU及指令系统举例

  2. 学习内容: • 4.1 8086/8088 CPU的结构 • 4.2 主存储器 • 4.3 8086/8088堆栈 • 4.4 8086/8088指令系统 • 4.5 提高CPU性能的一些措施

  3. 学习目标 • 理解8086/8088CPU的寄存器结构、主存储器、堆栈结构。 • 掌握8086/8088指令系统的寻址方式。(本章的重点内容) • 理解8086/8088指令类型。 • 了解提高CPU性能的一些措施与当前常用的实际CPU基本组成。

  4. 重点难点: • 8086/8088指令系统的寻址方式。 • 课时安排:6课时。 • 媒体使用: • 使用多媒体投影,主要采用PowerPoint准备的电子教案。

  5. §4.1 8086/8088CPU §4.1.1 8086/8088CPU的结构 1. 8086/8088内部结构: • 8086/8088CPU采用指令流水线结构,将取指令(或取操作数)与执行指令的功能分别由两个独立部件实现, • 即总线接口部件BIU与执行部件EU 主要任务是完成CPU与主存储器或I/O之间的信息传送。 主要任务是执行指令

  6. 1、执行部件EU:包括一个16位算术逻辑部件ALU、一组通用寄存器、暂存器、标志寄存器和EU控制器。1、执行部件EU:包括一个16位算术逻辑部件ALU、一组通用寄存器、暂存器、标志寄存器和EU控制器。 2、EU主要任务是执行指令。 3、执行部件EU功能见教材P114。

  7. 1、总线接口部件BIU:包括一段寄存器、指令指针、6字节的指令队列、20位总线地址形成部件和总线控制逻辑。1、总线接口部件BIU:包括一段寄存器、指令指针、6字节的指令队列、20位总线地址形成部件和总线控制逻辑。 2、BIU主要任务是完成CPU与主存储器或I/O端口之间的信息传送。 3、总线接口BIU功能见教材P115。 • 总线接口部件BIU见教材P115。

  8. 2. 8086/8088主存地址的形成 段基值:在BIU中设置段寄存器,用以存放20位段起始地址的高16位,称为段基值。 偏移量:由EU或指令指针IP提供段内的偏移量,即一个主存单元与所在段的段基址之间的字节距离。(16位) 段基址:由段基值左移4位后,得到一个物理地址。 二者相加形成20位主存单元的物理地址。

  9. 2. 8086/8088主存地址的形成

  10. 2. 8086/8088主存地址的形成 我们把提供一个20位地址的两个寄存器中的值分别称之为: 20位寄存器中的值称之为段基址(Segment base value) 16位寄存器中的值称之为偏移量(Offset)或有效地址(Effective address) 段基址是由四个段寄存器提供20位的高16位,低四位补0形成的 偏移量是由CPU内的EU部分提供的

  11. §4.1. 8086/8088寄存器 • 1. 段寄存器: • CS(代码段寄存器)——用来存放程序的指令代码序列,用来存放当前代码段段首址的高16位,即段基值。 • DS(数据段寄存器)——存放程序的有关数据,用来存放当前数据段的段基值。 • SS(堆栈段寄存器)——用来存放按后进先出顺序存取的信息。存放当前堆栈段的段基值。 • ES(附加段寄存器)——存放运算结果或辅助数据,存放当前附加段的段基值。

  12. ————8086/8088CPU 1.段寄存器

  13. 2 . 通用寄存器 (1)地址指针寄存 (2)数据寄存器 3. 用于控制的寄存器 (1)指令指针IP: (2)标志寄存器FR 作用类似于PC,当现行指令执行完毕,由IP提供下一条指令地址

  14. §4.2 主存储器§4.2.1 8086/8088主存储器的特点 • 8086/8088CPU有20条地址引出线,因此具有1M字节(210*210=220)的寻址能力,即可以在1M个字节单元中寻找出所需的一个存储单元。 • 在8086/8088主存中,一个字节数据占用一个存储单元。一个字(Word)数据(16位)则占用二个相邻的存储单元,数的低8位(低字节)存放在低地址单元;高8位(高字节)存放在高地址单元,并以低字节所在存储单元地址作为字数据的单元地址。

  15. §4.2.2 主存储器的段结构 • 8086/8088把1MB主存空间按需要划分为若干段(segment)。每个段都由连续的字节单元组成,最大长度为64K(即65536),可作为独立寻址的逻辑单位。 • 一个段起始单元的地址,称为对应段的段基址(20位)。

  16. §4.2.2 主存储器的段结构 • 在程序中设置的段称为逻辑段。 • 主存可分成任意多个段,但在某一时刻,一个程序只能访问4个段寄存器指向的当前段的内容。4个段寄存器CS、DS、SS和ES,分别保存代码段、数据段、堆栈段和附加段这4个当前段的段基址的高16位——段基值。

  17. §4.2.3 逻辑地址与物理地址 • 逻辑地址——段基值:偏移量(书写形式) (1) 段基值:由某个段寄存器(CS,DS,SS,ES)给出,它是段基址的高16位。 (2) 偏移量:(也称偏移地址)由IP或EU按寻址方式产生的有效地址提供,它是段内某存储单元与段基址之间的字节距离。 • 物理地址——是指实际的20位主存单元地址,1MB主存空间的每个存储单元只对应惟一的物理地址,其范围为00000H—FFFFFH。

  18. 逻辑地址——物理地址的转换方式: 将段基值左移4位形成20位段基址,再加上偏移量,产生20位物理地址。 • 逻辑地址的来源 • CPU在执行指令时,是按指令所需的操作类型从不同的来源获得存储单元的逻辑地址,然后形成对应的物理地址以访问主存。(具体内容见教材的P124表4-2逻辑地址的来源)

  19. §4.3 8086/8088堆栈 §4.3.1 堆栈组织 • 8086/8088的堆栈是由SS指定的一段存储区(≤64KB)构成,并采用向上(地址码减小)生成方式,由堆栈指针SP指向栈顶。 • SS提供堆栈段的段基值,SP的内容为栈顶单元相对堆栈段段基址的字节距离(偏移量)。 • 8086/8088堆栈规定以字(2个字节)为单位进行存取。

  20. §4.3.2 堆栈操作 堆栈组织

  21. §4.3.2 堆栈操作 • 先设置堆栈,主要是对堆栈段寄存器SS物堆栈指针SP赋初值。 • 对堆栈的操作均在栈顶进行的,其基本操作的 • 压栈 • 出栈

  22. 压 栈 • 压栈----用压栈指令PUSH可以将通用寄存器、段寄存器或字存储单元内容压入堆栈。 • 执行压栈指令PUSH的操作过程分二步进行: (1)(SP)-2——SP;首先修改栈顶指针,SP减2以指向空字单元(即新栈顶) (2)数据——(SP);将寄存器或存储单元内容送入SP指向的空字单元中

  23. 压栈指令 (BL)=78H (BH)=56H (SP)-2→SP; (BX) →(SP) BX 56 78 (AL)=34H (SP)-2→SP; (AX) →(SP) AX 12 34 (AH)=12H 压栈之前(SP)

  24. 出栈 • 出栈----用弹出指令POP可以将当前栈顶字单元内容取出送到通用寄存器、段寄存器或字存储单元中。 • 执行出栈指令POP的操作过程分二步进行: (1)((SP))——寄存器/字单元;将栈顶单元内容送到指定的寄存器或字单元 (2)(SP)+2——SP;修改栈顶指针,SP加2以指向新栈顶

  25. (SP) →BX; (SP)+2→SP (BL)=78H BX 56 78 (BH)=56H (AL)=34H (SP) →AX; (SP)+2→SP AX 12 34 (AH)=12H BX 出栈之后(SP) AX

  26. 堆栈操作-1.压栈 2.出栈

  27. §4.4 8086/8088指令系统 • §4.4.1 8086/8088寻址方式 1 . 寄存器寻址方式:指令所需的操作数存放在CPU的寄存器(通用寄存器或段寄存器)中,通过指令中给出寄存器地址去找到操作数。

  28. 操作码 REC Ri 操作数S 是指令代码中的寻址字段,表示操作数的寄存器地址 • 寻址过程: 例:(BX) =1234H MOV AX,BX :将BX中的内 容送到AX中 (AX) =1234H

  29. 2. 立即数寻址方式 • 立即数寻址方式:指令所需的操作数直接在指令代码中,随着取指令一起取到BIU的指令队列中。 操作码 操作码 一条指令 AX AX 一条指令 34H F5H 12H (A)MOV AX,1234H (B)MOV AL,0F5H

  30. 3. 存储器寻址方式 • 在汇编语言程序中,一个存储单元的地址采用逻辑地址来表示:(形式:段基值:偏移量) • 段基值:是由某个段寄存器提供,由指令隐含给出。 • 偏移量:是指存放操作数的存储单元与段起始(段基址)之间的字节距离,字由CPU的EU按指令中操作数的寻址方式计算而得到,又称为有效地址EA。 • 有效地址EA:由位移量、基地址、变址量三个地址分量的某种组合求得。

  31. 段基值左移四位 段基址 段基值

  32. (1)直接寻址方式 • 定义:指令所需的操作数存放在存储单元中,操作数的有效地址EA直接由指令代码中的位移量提供。 • 寻址过程: • 在源程序中,直接寻址方式可用数值地址或符号地址来表示。 EA

  33. 用数值地址表示: • 在采用直接寻址方式的汇编指令中,用数值表示操作数的有效地址,则操作数所在段的段寄存器必须指明,不能缺省。 • MOV BX,DS:[1000H] • 完成将当前数据段偏移1000H个字节的字单元内容1234H送入BX中。

  34. 用符号地址表示: • 在源程序中,常用符号地址表示存放操作数的存储单元,所以在汇编指令中,可用符号地址表示的直接寻址方式来存取操作数。 • 若指令中不必给出数据段寄存器名,即隐含使用DS;其他须指定。 • 例题:P130

  35. (2)寄存器间接寻址方式 • 寄存器间接寻址方式:指令所需的操作数在存储单元中,操作数的有效地址EA直接从基址寄存器(BP或BX)或变址寄存器(SI或DI)中获得。 • 见P131的图4-22 寄存器间接寻址方式。 • 若以BX,SI或DI间接寻址时,隐含使用的段寄存器是DS,若以BP间接寻址时,隐含使用的段寄存器是SS。

  36. (2)寄存器间接寻址方式 是指令代码中的寻址字段 寄存器间接寻址方式实际上是将有效地址事先存放在一个寄存器中,如同一个地址指针。因此在程序中只要修改间址寄存器的内容,就可以用一条指令访问不同的存储单元。 SI OR DI EA OR BX OR BP 寻址过程

  37. (3)变址寻址和基址寻址方式 • 变址寻址和基址寻址方式:指令所需的操作数在存储单元中,操作数的有效地址EA是基址寄存器(BP或BX)或变址寄存器(SI或DI)的内容与指令中给出的位移量(8位或16或)两个地址分量之和。 • 使用SI或DI称为变址寻址。 • 使用BX或BP称为基址寻址。

  38. 变址寻址和基址寻址方式 SI OR DI OR EA + BX OR BP

  39. 寻址方式的使用格式: • 变址或基址寻址方式用来访问顺序存放在主存中的一维数组、表格、字符串等。 • 典型用法:是将指令中不能修改的位移量作为基准地址,而变址或基址寄存器内容作为修改量 • 例题4-1:见教材132页。

  40. (4)基址变址寻址方式 SI OR EA + DI BX OR BP 寻址过程

  41. 寻址方式的使用格式: • 基址变址寻址方式用来访问存放在主存中的二维数组。(其寻址方式中有两地址分量可在程序执行过程中进行修改) • 例题4-2:见教材133-134页。

  42. 上半部分表示由CPU的执行部件EU根据寻址方式计算有效地址EA。上半部分表示由CPU的执行部件EU根据寻址方式计算有效地址EA。 下半部分表示由总线接口部件BIU形成操作数的物理地址。按操作数的物理地址就可直接访问操作数的存储单元。

  43. 4. 串操作寻址方式 • 串操作寻址方式: • 串操作指令规定: • 隐含使用SI作为在数据段中的源串(即源操作数)的地址指针 • 隐含使用DI作为在附加段中的目的串的地址指针。 SI 源串有效地址EA DI 目的串有效地址EA

  44. 5. I/O端口寻址 • 了解

  45. §4.4.2 8086/8088指令 • 8086/8088指令按操作数地址划分: 双操作数指令:OPR DEST,SRC 单操作数指令:OPR DEST 无操作数指令:OPR

  46. 8086/8088指令按功能划分: 传送类指令 算术运算类指令 位操作类指令 串操作类指令 程序转移类指令 处理器控制类指令

  47. 一、传送类指令 • 分类:(仅存标志指令SAHF、标志出栈指令POPF对标位有影响)  数据传送类指令  交换指令  标志位传送指令  地址传送指令

  48. 1.数据传送类指令(Move) • 格式:MOV DEST,SRC • 功能: DEST (SRC)  将源地址的内容(源操作数)传送到目的地址中。传送指令执行后源操作数保持不变。

  49. 1.数据传送类指令(Move) • 注意: • MOV指令中的两个操作数可同为字或字节,但两者位数必须一致。 • 目的操作数不能为立即数。 • 两个操作数不能同时为存储器操作数。 • MOV指令中立即数不能直接传送给段寄存器,而且段寄存器之间也不能直接传送数据,但可以通过寄存器实现间接传送。 • 一条MOV指令不能完成两个存储单元之间的数据传送,但可以用两条指令来实现。

  50. 数据传送指令(Move)(指令中只允许两个操作数的其中一个在主存储器中,立即数不能直接送段寄存器,段寄存器也不能之间直接传送)数据传送指令(Move)(指令中只允许两个操作数的其中一个在主存储器中,立即数不能直接送段寄存器,段寄存器也不能之间直接传送)

More Related