1 / 34

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

第四章 典型 CPU 及指令系统举例. 学习内容. 理解 8086/8088CPU 的寄存器结构、主存储器、堆栈结构。 掌握 8086/8088 指令系统的寻址方式。 (本章的重点内容) 理解 8086/8088 指令类型。 了解提高 CPU 性能的一些措施与当前常用的实际 CPU 基本组成。. §4.1 8086/8088CPU. §4.1.1 8086/8088CPU 的结构 1. 8086/8088 内部结构: 8086/8088CPU 采用 指令流水线结构 ,将取指令(或取操作数)与执行指令的功能分别由两个独立部件实现,

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

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

  4. 总线接口部件BIU与执行部件EU功能见教材P114。

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

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

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

  8. §4.2 主存储器 • §4.2.1 8086/8088主存储器的特点 • §4.2.2 主存储器的段结构 • §4.2.3 逻辑地址与物理地址 • 逻辑地址:段基值和偏移量 • 物理地址 • 逻辑地址的来源

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

  10. §4.3.2 堆栈操作 • 先设置堆栈,主要是对堆栈段寄存器SS物堆栈指针SP赋初值。 • 对堆栈的操作均在栈顶进行的,其基本操作的: • 压栈:用压栈指令PUSH可以将通用寄存器、段寄存器或字存储单元内容压入堆栈。 2. 出栈:用弹出指令POP可以将当前栈顶字单元内容取出送到通用寄存器、段寄存器或字存储单元中。

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

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

  13. 2. 立即数寻址方式 • 立即数寻址方式:指令所需的操作数直接在指令代码中,随着取指令一起取到BIU的指令队列中。 操作码 操作码 一条指令 AX 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

  18. (2)寄存器间接寻址方式 • 寄存器间接寻址方式:指令所需的操作数在存储单元中,操作数的有效地址EA直接从基址寄存器(BP或BX)或变址寄存器(SI或DI)中获得。 • 见P131的图4-22 寄存器间接寻址方式

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

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

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

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

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

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

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

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

  27. 8086/8088指令按功能划分: 传送类指令 算术运算类指令 位操作类指令 串操作类指令 程序转移类指令 处理器控制类指令 具体内容见课件

  28. 四、串操作类指令 • “串”是指存储器中一序列字或字节单元,其内容是字符或数据。 • 串操作是对这一序列或字单元的内容进行某种操作。

  29. 1 . 取串指令 • 指令格式: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 (3)对标志寄存器无影响

  30. 3 .串比较指令 • 指令格式: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 .串搜索指令 • 指令格式: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位二进制数。

More Related