1 / 281

本次课程内容及目标

本次课程内容及目标. 教学内容: 指令系统的基本概念,指令格式,指令长度 指令和操作数的寻址方式, IA-32 Intel 系列 CPU 常用的操作数寻址方式(1)。 实践教学: 以程序( chap4-1.asm) 为实例,把表 4.2中的指令组合成完整的程序,上机观察指令的格式; 把表4.4、4.5中的指令组合成完整的程序,上机练习,熟悉寻址方式。. 教学目标: 通过概念讲解和课堂练习, 建立指令系统、指令格式、指令长度的概念。 以最常用的 MOV 指令为例子,建立操作数寻址的概念。能够把表4.4和表4.5中所列指令转换为 MASM 6.11 可以正确汇编的源程序。

Télécharger la présentation

本次课程内容及目标

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. 本次课程内容及目标 教学内容:指令系统的基本概念,指令格式,指令长度指令和操作数的寻址方式,IA-32 Intel系列CPU常用的操作数寻址方式(1)。 • 实践教学: • 以程序(chap4-1.asm)为实例,把表 4.2中的指令组合成完整的程序,上机观察指令的格式;把表4.4、4.5中的指令组合成完整的程序,上机练习,熟悉寻址方式。

  2. 教学目标: • 通过概念讲解和课堂练习,建立指令系统、指令格式、指令长度的概念。以最常用的MOV指令为例子,建立操作数寻址的概念。能够把表4.4和表4.5中所列指令转换为MASM 6.11可以正确汇编的源程序。 • 作业:第4章习题:1-23题。 (除操作题要会操作外,其它题写到作业本上)

  3. 教学设计: • 1.介绍指令系统的有关基本概念。 • 2.介绍指令格式两个字段的概念。 • 3.以表4.1和表4.2为依据,介绍符号指令和机 • 器指令的两个字段。

  4. 4.以chap4-1.asm为例,启动PWB → 进入 • CodeView。把“Source 1”窗口设置为 • “Assembly”显示方式。观察表4.2中所列指令的 • 符号形式和二进制形式的两个字段。 • 5.以chap4-1.asm为例,启动PWB → 进入 • CodeView。把“Source 1”窗口设置为 • “Assembly”显示方式。介绍操作码的功能,以表 • 4.3与chap4-1.asm对照的方式。 • 6. 介绍与地址码字段有关的概念。 • 7. 介绍与指令长度有关的概念。

  5. 8. 介绍指令寻址和操作数寻址的有关概念。 • 9.以chap4-4.asm为例,启动PWB → 进入CodeView。以“Source”和“Assembly”方式,在Source 1窗口中观察立即数寻址方式指令的源代码和汇编代码,在Register窗口中观察立即数寻址方式的操作结果。 • 10. 以chap4-5.asm为例,启动PWB →进入CodeView。以“Source”方式,在Source 1窗口中运行源程序,在Register窗口中观察寄存器寻址方式的操作结果。

  6. 第4章 指令系统

  7. 4.1 指令系统的基本概念 •  指令系统(instruction set): • 某种型号的CPU所具有的全部指令的集合。

  8. 4.2 指令格式 • 指令的两个组成部分是:操作码和 地址码 • (操作数的地址信息)

  9. 指令表示形式 操作码字段 地址码字段 汇编指令 指令助记符 符号地址 机器指令 操作码 地址码 • 表4.1 符号指令和机器指令的结构形式及其对应关系

  10. 指令名称 符号指令 机器指令(用十六进制表示) 指令助记符 符号地址 条件转移 JZ NEXT 7409H 增量 INC CX 41H 减量 DEC CX 49H 入栈 PUSH AX 50H 出栈 POP AX 58H 比较 CMP STRING[BX],0DH 80BF04000DH 加法 ADD SI,2 83C602H 传送 MOV INDEX,BL 881E0A00H 转子程序 CALL DISPLAY E82A00H 表4.2 典型的符号指令与其相对应的机器指令的结构形式

  11. 4.2.1 操作码字段 • 操作码(operating code)的功能: • 指明该指令使CPU进行什么操作,如进行条件转移、入栈、出栈、比较、加法、传送、转子程序、减量等。

  12. 指令名称 指令助记符 二进制操作码(用十六进制表示) 条件转移 JZ 74H 增量 INC 41H 减量 DEC 49H 入栈 PUSH 50H 出栈 POP 58H 比较 CMP 80H 加法 ADD 83H 传送 MOV 88H 转子程序 CALL E8H 表4.3 部分典型指令的助记符与其相对应的二进制操作码

  13. 4.2.2 地址码字段 • 地址码的功能: • 指明本次操作所涉及到的操作数的地址,即本指令所涉及到的操作数存放在何处。 • 指令中操作数可以有:2个、1个和0个, • 相应的指令分别可称为 • 二地址指令、一地址指令和零地址指令。

  14. OP 目标操作数地址 源操作数 地址 • 二地址指令的字段结构如下:

  15. OP 操作数地址 • 一地址指令的字段结构如下:

  16. OP • 零地址指令的字段结构为: 零地址指令中只有操作码,不含操作数。 这种指令有两种可能: 一是不需要任何操作数,如空操作指令(NOP)。 二是所需要的操作数是隐含指定的,如CPU 中的标志寄存器入栈/出栈指令(PUSHF/POPF)。

  17. 4.2.3 指令长度 • 计算机指令二进制代码的长度是 • 字节的整数倍。

  18. 4.3 寻址方式(addressing mode) • 指令中提供的寻找操作数的方法 • 或寻找指令地址的方法, • 称之为寻址方式。 • (前者称操作数的寻址方式, • 后者称指令地址的寻址方式。)

  19. 4.3.1 指令地址的寻址方式 • 后面讲转移、调用指令时再讲。

  20. 4.3.2 操作数的寻址方式 • 即:指令中提供的寻找操作数的方法。

  21. 操作数的有效地址EA: • 指存储器操作数所在的存储单元的偏移地址(对当前数据段)。 (即:有效地址EA与偏移地址是等价的。) • 操作数有效地址EA的形成方法: • 按指令中给出的寻址方式的指定,经过计算后形成。

  22. 操作数的分类 • 立即数操作数: • 直接存放在指令代码中的操作数。 • 寄存器操作数: • 存放于CPU的某寄存器中的操作数。 • 存储器操作数: • 存放在内存中的操作数。

  23. 4.4 IA-32系列CPU常用的操作数寻址方式 立即数寻址方式 寄存器寻址方式 直接寻址 寄存器间接寻址 寄存器相对寻址 基址变址寻址 比例变址寻址

  24. 4.4.1 立即数寻址方式 • 此寻址方式下, • 操作数直接包含在指令中。 • 指令中的操作数称为立即数。 • 此方式下,指令的地址码部分即为操作数本身。

  25. 汇 编 语 句 操作数长度 操 作 MOV BL,44 8位 把十进制数44(2CH)传送到BL中 MOV AX,44H 16位 把十六进制数44H传送到AX中 MOV AL,‘A’ 8位 把A 的ASCII码41H传送到AL中 MOV EBX,12340000H 32位 把十六进制数12340000H传送到EBX中 MOV ESI,12 32位 把十进制数12(0CH)传送到ESI中 表4.4 使用立即数寻址的MOV指令例子

  26. 在应用上,通常利用立即寻址方式给寄存器或内存单元赋初值;在应用上,通常利用立即寻址方式给寄存器或内存单元赋初值; • 注意:立即数只能作为源操作数,不能作为目的操作数,并且只能是常数值。

  27. 4.4.2 寄存器寻址方式 • 此寻址方式下,操作数存放在CPU的某个通用寄存器中,而指令中指出了该寄存器。 • (注:寄存器寻址方式可以引用8个8位的通用寄存器AL、AH、BL、BH、CL、CH、DL、DH,也可以引用8个16位的通用寄存器AX、BX、CX、DX、BP、SP、SI、DI,还可以引用8个32位的通用寄存器EAX、EBX、ECX、EDX、EBP、ESP、ESI、EDI。)

  28. 汇 编 语 句 寄存器长度 操 作 MOV CL,DH 8位 把DH的内容传送到CL MOV AX,BX 16位 把BX的内容传送到AX MOV AX,CS MOV DS,AX 16位 把CS的内容传送到DS MOV EAX,EBX 32位 把EBX的内容传送到EAX MOV ECX,EAX 32位 把EAX的内容传送到ECX 表4.5 使用寄存器寻址的MOV指令例子 上述通用寄存器既可用作源操作数,也可用作目的操作数。

  29. 4.4.3 直接寻址 • 在直接寻址方式下,操作数存放在存储器中。而操作数的有效地址EA包含在指令代码之中。

  30. 汇 编 语 句 操作数长度 操 作 MOV DH,[1000H] 8位 把DS段中偏移地址1000H单元的内容装入DH中 MOV CX,DATA1 16位 把DS段中偏移地址为DATA1和DATA1+1的两单元的内容装入CX MOV ES,DATA2 16位 把DS段中偏移地址为DATA2和DATA2+1的两单元内容装入ES MOV VALUE,EAX 32位 EAX内容传到DS段中偏移地址为VALUE至VALUE+3 的4个单元 MOV EDI,SUM1 32位 把DS段中偏移地址为SUM1至SUM1+3的4个单元内容装入EDI 表4.6 使用直接寻址的MOV指令例子

  31. 4.4.4 寄存器间接寻址 • 在寄存器间接寻址方式下,操作数存放在存储器中。操作数的有效地址EA在指令中指定的寄存器内。 • 实地址模式下,该寻址方式可引用的寄存器是:BP、BX、SI或DI。

  32. 使用寄存器EBP/BP寻址存储器的时候,则默认的段寄存器为SS(即隐含使用SS段); 使用寄存器EBP/BP寻址存储器的时候,则默认的段寄存器为SS(即隐含使用SS段); • 使用其他的寄存器,则默认的段寄存器为DS(即隐含使用DS段)。

  33. 汇 编 语 句 操作数长度 操 作 MOV [BP],DL 8位 寄存器DL的内容传到SS段由BP寻址的存储单元 MOV [DI],BH 8位 寄存器BH的内容传到DS段由DI寻址的存储单元 MOV AL,[EDX] 8位 DS段由EDX寻址的存储单元的内容传送到AL MOV CX,[BX] 16位 DS段中用BX寻址的存储单元的字内容传到CX中 MOV ECX,[EBX] 32位 DS段由EBX寻址的存储单元的双字传送到ECX 表4.7 使用寄存器间接寻址的MOV指令例子

  34. 4.4.5 寄存器相对寻址 • 在该方式下, • 操作数存放在存储器中, • 操作数的有效地址EA为指令中给出的 • 寄存器的内容与位移量之和。

  35. 汇 编 语 句 操作数长度 操 作 MOV ARRAY[SI],BL 8位 BL的内容送入由ARRAY+SI寻址的DS段存储单元 MOV LIST[SI+2],CL 8位 CL的内容送入由LIST+SI+2之和寻址的DS段存储单元 MOV AX,[DI+100H] 16位 由DI+100H寻址的DS段存储单元的字装入AX MOV DI,SETIT[BX] 16位 由SETIT+BX寻址的DS段存储单元的内容送入DI MOV DL,[EAX+10H] 16位 由EAX+10H寻址的DS段存储单元的内容装入DI MOV ARRAY[EBX],EAX 32位 EAX内容送入由ARRAY+EBX寻址的DS段存储单元中 表4.8 使用寄存器相对寻址的MOV指令例子

  36. 4.4.6 基址变址寻址 • 基址寄存器:EBX/BX 和 • EBP/BP; • 变址寄存器:ESI/SI 和 • EDI/DI;

  37. 在基址变址寻址方式下, • 操作数存放在存储器中。

  38. 操作数的有效地址EA是 • 一个基址寄存器EBX/BX/EBP/BP、 • 一个变址寄存器ESI/SI/EDI/DI、 • 一个位移量(指令中给出的)之和。 • 实地址模式下可引用的寄存器是: • BP、BX、SI 或 DI。

  39. 汇 编 语 句 操作数长度 操 作 MOV DH,[BX+DI+20H] 8位 由BX、DI和20H之和寻址的DS段存储单元的内容装入DH MOVLIST[BP+DI],CL 8位 CL送到由LIST、BP及DI之和寻址的SS段存储单元中 MOV LIST[BP+SI+4],DH 8位 DH送到由LIST、BP、SI及4之和寻址的SS段存储单元中 MOVAX,FILE[BX+DI] 16位 由FILE、BX及DI之和寻址的DS段存储单元的内容送入 AX MOVEAX,FILE[EBX+ECX+2] 32位 由FILE、EBX、ECX及2之和寻址的DS段存储单元的内容装入 EAX 表4.9 使用基址变址寻址的MOV指令

  40. 4.4.7比例变址寻址 • 在此方式下,操作数存放在存储器中。 • 这种寻址方式是从80386 CPU以来才开始使用的寻址方式,所以只有IA-32 系列CPU才能使用,8086 CPU不能使用。 • 比例变址寻址使用32位的基址寄存器和变址寄存器访问存储器。 • 可以引用的基址寄存器是:EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI,可以引用的变址寄存器是:EAX、EBX、ECX、EDX、EBP、ESI、EDI。

  41. 比例变址寻址方式要求比例因子只能与变址寄存器相乘,比例因子可以是1X、2X、4X或8X。隐含的比例因子是1X,在汇编语言指令中可以省略,例如, 比例变址寻址方式要求比例因子只能与变址寄存器相乘,比例因子可以是1X、2X、4X或8X。隐含的比例因子是1X,在汇编语言指令中可以省略,例如, • MOV AL,[EBX+ECX]。 • 使用比例因子2X的指令示例如, • MOV AX,[EDI+2*ECX]。 • 其他的比例因子的使用方法依此类推。

  42. 汇 编 语 句 操作数长度 操 作 MOV AL,[EBP+2*EDI-2] 8位 由EBP加2倍EDI再减2寻址的SS段单元的内容装入AL MOV[EAX+2*EDI+100H],CX 16位 CX的内容装入由EAX加2倍EDI再加100H寻址的DS段单元中 MOV EAX,[EBX+4*ECX] 32位 由EBX加4倍ECX之和寻址的DS段单元的内容装入EAX MOV EAX,ARRAY[4*ECX] 32位 由4倍ECX寻址的DS段单元的内容装入EAX • 表4.10 使用比例变址寻址的MOV指令

  43. 本次课程内容及目标 教学内容:IA-32 Intel系列CPU常用的指令寻址方式。 • 实践教学: • 把表4.4、4.5、4.6、4.7……中的指令组合成完整的程序,上机练习,熟悉各种寻址方式。

  44. 教学目标: • 通过概念讲解和课堂练习,以最常用的MOV指令为例子,建立各种常用操作数寻址的概念。能够把表4.4、4.5、4.6、4.7中所列指令转换为MASM 6.11可以正确汇编的源程序。 • 作业:第4章习题:1-47题。 • (操作题要会操作,抽查;填空题作在讲义上,习题课对答案;其它题写到作业本上,两周内上交)

  45. 教学设计: • 1.学习立即寻址、寄存器寻址、直接寻址、寄存器间接寻址(寄存器相对寻址、基址变址寻址)的概念,并举例说明,每部分需要先给学生几分钟的阅读思考时间。 • 2.将表4.4的指令组合成完整的汇编语言源程序,编辑、汇编、链接,进入CodeView,以“Source”和“Assembly”方式,在Source 1窗口中观察立即数寻址方式指令的源代码和汇编代码,在Register窗口观察立即数寻址方式的操作结果。 • 3. 将表4.5的指令组合成完整的汇编语言源程序,编辑、汇编、链接,进入CodeView,以“Source”和“Assembly”方式,在Source 1窗口中观察寄存器寻址方式指令的源代码和汇编代码,在Register窗口观察寄存器寻址方式的操作结果。 

  46. 4.将表4.6的指令组合成完整的汇编语言源程序,编辑、汇编、链接,进入CodeView,以“Source”和“Assembly”方式,在Source 1窗口中观察直接寻址方式指令的源代码和汇编代码,在Register窗口和Memory1窗口中观察直接寻址方式的操作结果。 • 5.将表4.7的指令组合成完整的汇编语言源程序,编辑、汇编、链接,进入CodeView,以“Source”和“Assembly”方式,在Source 1窗口中观察寄存器间接寻址方式指令的源代码和汇编代码,在Register窗口观察寄存器间接寻址方式的操作结果。

  47. 第4章 指令系统

  48. 4.1 指令系统的基本概念 • 指令系统(instruction set): • 某种型号的CPU所具有的全部指令的集合。

  49. 4.2 指令格式 • 指令的两个组成部分是:操作码 和 地址码 • (操作数的地址信息)

  50. 指令表示形式 操作码字段 地址码字段 汇编指令 指令助记符 符号地址 机器指令 操作码 地址码 • 表4.1 符号指令和机器指令的结构形式及其对应关系

More Related