淮阴师范学院微机原理课件第三章.ppt
《淮阴师范学院微机原理课件第三章.ppt》由会员分享,可在线阅读,更多相关《淮阴师范学院微机原理课件第三章.ppt(187页珍藏版)》请在三一办公上搜索。
1、第3章指令系统,一、基本数据类型 二、指令格式 三、寻址方式 四、通用指令,3.1 基本数据类型,字、双字的对齐数字数据类型指针数据类型串数据类型,字、双字的对齐数字数据类型:整数(无符号及有符号数)、浮点数(单精度、双精度、双扩展精度)指针数据类型(内存单元的地址):near、far串数据类型位、字节、字或双字的连续序列,3.2 指令及指令格式,3.2.1基本概念:用编码表示CPU的一个基本操作,称为一条指令。全部指令集称为指令系统。指令系统反映 CPU的基本功能,是硬件设计人员和程序员能见到的机器的主要属性,,一个CPU的指令系统是固定的,不同类型的CPU其指令系统不同;同一系列向上兼容。
2、程序是为要解决的问题编写出来的指令集合。用户为解决自己的问题所编写的程序称为源程序。,用二进制数编码表示的指令,称为机器指令或机器码。机器语言是机器码及其使用的一组规则。用机器语言编写的程序称为目标程序。,助记符是有助记忆、并能描述指令功能的符号。通常是指令功能的英文单词的缩写。例 数的传送指令用助记符MOV 加法用ADD,转移用JMP等 用助记符等表示的指令称为汇编格式指令例 MOV AL,0 汇编语言是汇编格式指令、伪指令及其使用的一组规则。用汇编语言编写的程序称汇编语言程序。,3.2.2 指令格式,例 ADD AL,10H LOADREG:MOV EAX,SUBTOTAL,操作数指明参与
3、操作的数据或数据所在的地方。了解操作数的来源、个数、类型、执行速度。,指令的一般格式是:标号:助记符 操作数参数1,操作数参数280X86系列计算机通常使用单操作数和双操作数指令,标号,操作码的助记标识符,目的操作数,源操作数,操作数来源 指明操作数所在的地方有三种来源:操作数在指令中,称立即数操作数 如 MOV AL,9 操作数在寄存器中,称寄存器操作数指令中给出用符号表示的寄存器名。如 MOV AL,BL 操作数在内存单元中,称存储器操作数或内存操作数 指令中给出该内存单元的地址。用 表示存储器操作数 如 MOV AL,2000H,无操作数:指令只有一个操作码,没有操作数。,有两种可能:有
4、些操作不需要操作数。如 HLT,NOP等处理机控制指令。操作数隐含在指令中。如 STC,CLC等处理机控制命令。AAA,DAA等调整指令。,单操作数:指令中给出一个操作数。,有两种可能:有些操作只需要一个操作数 如 INC AL;(AL)(AL)+1有些操作将另一个操作数隐含在指令中 如 MUL BL;(AX)(AL)(BL),操作数类型,指令应指明参与操作的数是字节还是字,即操作数的类型。通常操作数的类型可由操作数本身隐含给出。只在特殊情况下需要指明。,8086/8088:有的操作既可对字节操作,又可对字操作 有的操作只允许对字操作,指令中有寄存器操作数,由寄存器操作数决定类型。,例:MOV
5、 BX,AL;字节操作,BX AL MOV BX,AX;字操作,BX AL,BX+1 AH,指令操作数中无寄存器,则由内存操作数的类型决定。,例 MOV BX,0,指令中无类型的依据,需对存储器操作数加类型说明。,用 PTR 属性伪操作说明类型。MOV byte PTR BX,0 字节操作,BX 0 MOV word PTR BX,0 字操作,BX 0,BX+1 0,执行速度,寄存器操作数 立即数操作数 存储器操作数,三条指令:操作类型相同,都是传送指令,且目的操作数相同,不同的是源操作数。,对同一类型指令,执行速度:,3.3 寻址方式指明操作数的来源,即寻找(得到)操作数的方法。,以数据传送
6、指令MOV为例介绍寻址方式。指令 MOV dst,src 执行(dst)(src)即:源操作数的内容不变,目的操作数 源操作数,一、立即数寻址(P45)例1:MOV AX,1090H(若CS=1000H,IP=100H),所有的算术指令都允许源操作数是立即数(DIV、IDIV除外),这种寻址方式所提供的操作数直接放在指令中,紧跟在操作码的后面,与操作码一起放在码段区域中。立即数可以是8位的,也可以是16位.立即寻址主要是用来给寄存器赋初值.,二、寄存器寻址(P46),MOV AX,BX,若 AX=1234H,BX=4567H,4567H,4567H,AX,BX,源操作数和目的操作数能在以下寄存
7、器中:32 位操作数:EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP8 位操作数:AH,BH,CH,DH,AL,BL,CL,DL 16 位操作数:AX,BX,CX,DX,SI,DI,SP,BP CS,DS,ES,SS,FS,SG,EFLAGS,系统寄存器GDTR、IDTR,如:MOV AX,BX MOV AL,BH*SRC 和 DST的字长一致 MOV AH,BX,操作数在指定的寄存器中,例1 MOV AX,2056H 执行后:(AX)=2056H例2 MOV BL,AH 执行前:(BL)=12H,(AH)=78H 执行后:(BL)=78H(AH)=78H,三、直接寻址(P47
8、-48“位移量”),存储器操作数的有效地址EA在指令中直接给出。例1 MOV AL,2000H 默认段寄存器为DS。操作数所在内存单元的物理地址为:PA=(DS)10H+EA,MOV AX,2000H(若DS=3000H)DS 30000偏移量 2000+实际地址 32000H,内存操作数的物理地址为:PA=(DS)10H+EA=3000H 10H+2000H=32000H,执行后(AX)=7A54H,在汇编语言程序中,不直接用数值 表示偏移地址,而用符号代替数值表示地址,称符号地址(变量名)。,例 符号buffer表示一个地址。MOV AX,buffer或写成 MOV AX,buffer 源
9、操作数为buffer指向的内存单元的内容,符号地址(变量名)经汇编连接后,与一个确定的数值地址相对应可用操作符Offset 获取变量的偏移地址。故 PA=(DS)10H+Offset buffer 指令执行结果(AX)=0B0A H,存储器操作数的有效地址EA由寄存器给出,寄存器的内容为操作数的有效地址。可用的寄存器有 BX、SI、DI、BP 如:MOV AL,BX MOV AH,SI MOV DL,DI MOV DH,BP,四、寄存器间接寻址(P48“基地址”),另参见92页寄存器间接寻址示意图,例1,例2:MOV AX,DI 若(DS)=3000H(DI)=2000H 则内存操作数的物理地
10、址为:PA=(DS)10H+(DI)=32000H 执行后(AX)=(32000H)=400BH,例3:MOV AX,BP 若(SS)=4000H(BP)=3000H 则内存操作数的物理地址为:PA=(SS)10H+(BP)=43000H 指令执行后(AX)=(43000H)=0102H,五、寄存器相对寻址(P48“基地址+位移量”)又称变址寻址,即以基准寄存器BX、BP、SI、DI加上给定的8位或16位偏移量作为操作数的有效地址。操作数的有效地址由一个寄存器与一个偏移量相加得到,偏移量(相对量)在指令中给出,范围在0000 FFFFH可用的寄存器有 BX、DI、SI、BP,与寄存器间接寻址相
11、同 如:MOV AL,BX+10HMOV AH,DI+20H MOV DL,30H SI MOV DH,40H BP,默认段寄存器的关系与寄存器间接寻址相同使用BX、SI、DI,默认段寄存器为DS(BX)PA=(DS)10H+(SI)+偏移量(DI)使用BP,默认段寄存器为SSPA=(SS)10H+(BP)+偏移量,例1:MOV AX,BX+30H 若(DS)=2000H(BX)=1000H 则内存操作数的物理地址为:PA=(DS)10H+(BX)+30H=21030H 指令执行后:(AX)=(21030H)=8976H,例2:MOV AX,60H BP 若(SS)=3000H(BP)=200
12、H 则内存操作数的物理地址为:PA=(SS)10H+(BP)+60H=30260H 指令执行后:(AX)=(30260H)=0ABCH,六、基址加变址寻址 操作数的有效地址由 一个基址寄存器与一个变址寄存器之和给出。可用的基址寄存器为 BX、BP 变址寄存器为 SI、DI 如 MOV AL,BX+SI MOV AX,BXDI MOV DL,BP+SI MOV DX,BPDI,基址加变址寻址即以某一基地址寄存器(通常为BX、BP)的内容,加上某 一变址寄存器(通常为SI,DI)的内容,形成操作数的有效地址。段地址规则同上。,例1:MOV AX,BX+SI 若(DS)=3200H,(BX)=045
13、6H,(SI)=1094H,其寻址示意图如图3-5所示,7、相对基址加变址寻址(P49“基地址+索引+位移量”),操作数的有效地址由 基址寄存器、变址寄存器、偏移量三者之和给出。可用的寄存器与基址加变址寻址方式相同 基址寄存器有 BX、BP 变址寄存器有 SI、DI如 MOV AL,BX+SI+10H MOV AX,20H BXDI MOV DL,BP+SI+30H MOV DX,40H BPDI,相对基址加变址寻址即以某一基地址寄存器(通常为BX、BP)的内容,加上某 一变址寄存器(通常为SI,DI)的内容,再加上给定的8位或16位偏移量,形成了操作数的有效地址。,例1:MOV AX,BX+
14、SI+1000H 若(DS)=3000H(BX)=0700H(SI)=0300H 则内存操作数的物理地址为:PA=(DS)10H+(BX)+(SI)+10H=32000H,D:DEBUG-A 0AFA:0100 MOV CL,AX Error0AFA:0100 MOV AX,DX Error0AFA:0100 MOV AL,CX Error0AFA:0100 MOV CX,BP+BX Error0AFA:0100 MOV AH,SI+DI Error0AFA:0100 MOV BL,AX+CX Error0AFA:0100-,利用DEBUG可判断下列寻址方式错:,1、设有关寄存器及存储器单元的
15、内容如下:DS3000H,BX0200H,SI0002H,30200H24H,30202H0ACH,30203H=0F0H,31300H54H,31301H98H,31302H6DH。问下列各条指令执行完后,AL或 AX寄存器的内容各是什么?,分析:(1)Mov AX,1300H指令的源操作数为立即寻址方式且为字操作,所以该指令执行完后,AX=1300H。,1、设有关寄存器及存储器单元的内容如下:DS3000H,BX0200H,SI0002H,30200H24H,30202H0ACH,30203H=0F0H,31300H54H,31301H98H,31302H6DH。问下列各条指令执行完后,A
16、L或 AX寄存器的内容各是什么?,(2)MOV AL,BL指令的源操作数为寄存器寻址方式址为字节操作,所以该指令执行完后,AL00H,1、设有关寄存器及存储器单元的内容如下:DS3000H,BX0200H,SI0002H,30200H24H,30202H0ACH,30203H=0F0H,31300H54H,31301H98H,31302H6DH。问下列各条指令执行完后,AL或 AX寄存器的内容各是什么?,(3)Mov AX,1300H指令的源操作数为直接寻址方式且为字操作,执行该指令时,是将DS10H+1300H31300的字内容送Ax,所以该指令执行完后,AX=9854H。,1、设有关寄存器
17、及存储器单元的内容如下:DS3000H,BX0200H,SI0002H,30200H24H,30202H0ACH,30203H=0F0H,31300H54H,31301H98H,31302H6DH。问下列各条指令执行完后,AL或 AX寄存器的内容各是什么?,(4)MOV AL,BX指令的源操作数为寄存器间接寻址方式且为字节操作,执行该指令时,是将DS10H+BX30200H的内容送AL,所以该指令执行完后,AL24H。,1、设有关寄存器及存储器单元的内容如下:DS3000H,BX0200H,SI0002H,30200H24H,30202H0ACH,30203H=0F0H,31300H54H,3
18、1301H98H,31302H6DH。问下列各条指令执行完后,AL或 AX寄存器的内容各是什么?,(5)MOV AL,1100HBx指令的源操作数为寄存器加位移量寻址方式且为字节操作,执行该指令时,是将DS*10H+BX+1100H31300H的内容送AL,所以该指令执行完后,AL=54H。,1、设有关寄存器及存储器单元的内容如下:DS3000H,BX0200H,SI0002H,30200H24H,30202H0ACH,30203H=0F0H,31300H54H,31301H98H,31302H6DH。问下列各条指令执行完后,AL或 AX寄存器的内容各是什么?,(6)MOV AX,BXSI指令
19、的源操作数为基址变址寻址方式且为字操作,执行该指令时是将DS10H+BX+SI30202H的内容送AX,所以该指令执行完后,AXF0ACH。,1、设有关寄存器及存储器单元的内容如下:DS3000H,BX0200H,SI0002H,30200H24H,30202H0ACH,30203H=0F0H,31300H54H,31301H98H,31302H6DH。问下列各条指令执行完后,AL或 AX寄存器的内容各是什么?,(7)MOV AL,1100HBxSI指令的源操作数为基址变址加位移量寻址方式且为字节操作,执行该指令时,是将DS10H+BX+SI+1100H31302H的内容送AL,所以该指令执行
20、完后,AL=6DH。,一.数据传送指令二.算术运算指令三.逻辑运算指令四.控制转移指令五.处理机控制指令六.串操作指令,3.4 IA-32通用指令,概述1.指令助记符表2.学习指令的要点 3.利用DEBUG程序,学习指令系统4.指令中操作数的表示5.书写指令注意事项,1.指令助记符表,2.学习指令的要点从以下几个方面来掌握一条指令:指令的助记符 指令的格式:操作数的个数、类型 执行的操作:指令执行后的结果包括:哪些寄存器、内存单元的值发生了变化,对标志位有无影响,哪些受影响只介绍常用的指令,其他需要时可自学。,4.指令中操作数的表示,对双操作数指令 不能两个同为存储器操作数 MOV DI,SI
21、 目的操作数不能是立即数 ADD 3,AL 两个操作数的类型应相同 SUB AX,BL,一、数据传送指令,通用数据传送指令,地址传送指令,累加器专用指令,标志寄存器传送指令,1.通用数据传送指令(1)基本传送指令 MOV DST,SRC 源操作数寄存器、存储器、立即数 目的操作数 寄存器、存储器 执行的操作:DST SRC CPU内部寄存器之间的数据传送(除CS,IP外)MOV AL,BL MOV DS,BX MOV DX,DI MOV AX,DX MOV SI,BP,传送的是字节还是字取决于指令中涉及的寄存器是8位还是16位。,立即数传送到CPU内部通用寄存器组(AX,BX,CX,DX,BP
22、,SP,DI,SI)MOV CL,4 MOV DX,03FFH MOV DI,04BFH CPU内部寄存器(除CS,IP外)与存储器(所有寻址方式)之间的数据传送 MOV BX,BUFFER MOV DI,CX MOV AL,2000 MOV SI,BLOCKBP MOV AX,SI MOV DS,DATSI+BX 立即数给存储单元赋值 MOV WORD PTR2000,10 MOV BYTE PTRBX+DI,30,注意事项:1.立即数不能直接送段寄存器 MOV DS,3000H 2.目标操作数不允许用立即数方式 MOV 2000H,AL 3.不允许在两个存储单元间传送数据 MOV2000H
23、,3000H 4.不允许在两个段寄存器之间传送数据 MOV DS,ES 5.MOV 指令不影响标志位。例1:把地址为AREA1(段内偏移量)的存储单元的内容,传送至同一 段内的地址为AREA2的存储单元中。,Mov AL,AREA1Mov AREA2,AL,例2:若要传送的不是一个字节,而是一个数据块,(例如内有100个字 节),如何实现?,mov si,offset area1 mov di,offset area2 mov cx,100Again:mov al,si;mov di,al inc si inc di dec cx jnz again,几个不能送的解决办法:MOVAL,mem1
24、;通过寄存器AL作桥梁MOVmem2,AL;用来解决存存MOVAX,DS;通过AX解决:MOVES,AX;段寄段寄MOVAX,data;通过AX解决:MOVDS,AX;段寄立即数,2、交换指令 XCHG OPRD1,OPRD2 在寄存器间或寄存器与存储器间交换信息(不允许使用段寄存器)。源操作数:寄存器、存储器 目的操作数:寄存器、存储器 执行的操作:(OPRD1)(OPRD2)例:XCHG BX,BP+SI(BX)=6F30H(BP)=0200H(SI)=0046H(SS)=2F00H(2F246H)=1234H,3、堆栈操作指令 PUSH OPRD POP OPRD 堆栈按照先进后出的原则
25、组织的一段内存区域。8088中规定堆栈设 置在堆栈段(SS段)内,堆栈指针SP的初值决定了堆栈的大小。SP始终指向堆栈的顶部,即始终指向最后推入堆栈的信息所在 的单元。操作数:16位通用寄存器;段寄存器;16位内存操作数(除立即数之外的 任何寻址方式)。执行的操作:,设(AX)=1020H,执行示意图如图,(SP),低地址,存储区(SS段),执行前(AX)=1020,(SP),低地址,存储区(SS段),执行后,20,10,AH,AL,2-8,(SP)-1,(SP)-2,作用:,压栈指令的格式为:PUSH regPUSH mem/regPUSH segregPOP指令的格式同PUSH指令,堆栈指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 淮阴 师范学院 微机 原理 课件 第三
链接地址:https://www.31ppt.com/p-6310743.html