资源预览内容
第1页 / 共148页
第2页 / 共148页
第3页 / 共148页
第4页 / 共148页
第5页 / 共148页
第6页 / 共148页
第7页 / 共148页
第8页 / 共148页
第9页 / 共148页
第10页 / 共148页
亲,该文档总共148页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,第3章 80x86指令系统和寻址方式,教学要求: 掌握一般指令系统的基本概念:指令格式、功能和注意事项。 重点掌握8086/8088指令系统中,各指令的格式、寻址方式、指令类型 。 3. 了解其他(奔腾等)的寻址方式和指令类型。,2,3.1 指令系统的基本概念,计算机的指令系统就是指该计算机能够执行的全部指令的集合。 每种计算机都有它支持的指令集合。 16位8086指令系统是整个Intel 80x86 系列微处理器指令系统的基础。,3.1.1 指令系统,3,操作码 说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分。,指令由操作码和操作数两部分组成。,操作数 是指令执行的参与者,即各种操作的对象。 有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有3个甚至4个操作数,通常称为一地址指令、二地址指令、三,3.1.2 指令格式,4,指令的功能该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式。 指令支持的寻址方式该指令中的操作数可以采用何种寻址方式。 指令对标志的影响该指令执行后是否对各个标志位(OV、Z、C、P等)有影响,以及如何影响。,3.1.3 学习指令的注意事项,5,3.2 80x86寻址方式,操作数可以跟随在指令操作码之后,称为立即数;操作数也可以存放在CPU内部的寄存器中,称为寄存器操作数。绝大多数的操作数存放在内存储器中,称为存储器操作数。指令指定操作数的位置,即给出地址信息,在执行时需要根据这个地址信息找到需要的操作数。,3.2.1 寻址、寻址方式的概念,寻址就是寻找操作数的地址。,寻址方式就是寻找操作数的方法。,6,指令助记符体现该指令的功能,它对应一条二进制编码的机器指令。 指令的操作数个数由该指令确定,可以没有操作数,也可以有一个、二个或三个操作数。,3.2.2 80X86的指令格式,指令助记符 操作数1 , 操作数2 , 操作数3 ;注释,7,3.2.3 与数据有关的寻址方式,以 MOV 指令为例: 立即寻址 MOV AX , 3069H 寄存器寻址 MOV AL , BH 直接寻址 MOV AX , 2000H 寄存器间接寻址 MOV AX , BX 寄存器相对寻址 MOV AX , COUNT SI 基址变址寻址 MOV AX , BP DI 相对基址变址寻址 MOV AX , MASK BX SI ,8,1) 立即寻址方式,图形表示:,定义:操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。,汇编格式:n(n为立即操作数,是用8位或16位二进制补码表示的有符号数),功能:操作数存放在存储器,指令下一单元的内容为立即操作数n。,9,【例3.1】 MOV AX, 4576H 执行后(AX)=?,OP,76H,45H,76,45,该例中源操作数为立即寻址方式,立即数为4576H,存放在指令的下一单元。,执行:4576HAX,执行后:(AX)=4576H,10,2) 寄存器寻址方式,定义:指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助记符)的寻址方式称为寄存器寻址方式。,汇编格式:R (其中R表示寄存器名,如AX、BX等。),功能:操作数直接存放在寄存器R中。,图形表示:,11,指令中可以引用的寄存器及其符号名称如下: 8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等; 16位寄存器:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;,注:由于指令所需的操作数已存储在寄存器中,或操作的结果存入寄存器,这样,在指令执行过程中,会减少读/写存储器单元的次数,所以,使用寄存器寻址方式的指令具有较快的执行速度。通常情况下,提倡在编写汇编语言程序时,应尽可能地使用寄存器寻址方式,但也不要把它绝对化。,12,【例3.2】下列程序执行后,(AX)=?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX,执行:1234HAX,执行后:(AX)=68ACH,(BX)=5678H,5678HBX,(AX)+(BX)AX,13,3) 直接寻址方式,定义:指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。,汇编格式:含有变量的地址表达式。,功能:指令下一字单元的内容是操作数的偏移地址EA。,图形表示:,14,【例3.3】 执行指令:MOV BX ,1234H 设(DS)=2000H。 执行后:(BX)=?,34H,12H,执行:(21234H)BX,执行后:(BX)=5213H,13,52,15,在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。 例如:MOV ES:1000H, AX,16,注意:立即寻址方式和直接寻址方式的书写格式不同,直接寻址的地址要写在括号“”,“”内。在程序中,直接地址通常用内存变量名来表示,如:MOV BX, VARW,其中,VARW是内存字变量。 试比较下列指令中源操作数的寻址方式(VARW是内存字变量):,作业,17,4) 寄存器间接寻址方式,定 义:操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。,汇编格式:R,功 能:操作数存放在存储器,寄存器R存放操作数的偏移地址EA。,图形表示:,18,【例3.4】假设有指令:MOV BX, DI,在执行时,(DS)=1000H,(DI)=2345H,存储单元12345H的内容是4354H。问执行指令后,BX的值是什么?,解:寄存器DI的值不是操作数,而是操作数的地址。该操作数的物理地址应由DS和DI的值形成,即: PA=(DS)*16+DI=1000H*16+2345H=12345H。,该指令的执行效果是: 把从物理地址为12345H开始的一个字的值传送给BX。,43,54,19,在不使用段超越前缀的情况下,有下列规定: 若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS; 若有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。 该寻址方式物理地址的计算方法如下: BX 物理地址PA=16DS + SI DI 或 物理地址PA=16SS+ BP,20,作业 教材P107 3.1 3.2 3.4 1) 2) 3),21,5. 寄存器相对寻址方式,定 义:操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容和指令中的8位/16位偏移量之和。 汇编格式:XR(X表示位移量,是8位或16位二进制补码表示的有符号数) 功 能:操作数存放在存储器,寄存器R的内容加位移量X为操作数的偏移地址EA。 图形表示如下:,22, ,10000H,12345H,DS,CS,10000H,12345H,23,【例3.5】假设指令:MOV BX, SI+100H,在执行它时,(DS)=1000H,(SI)=2345H,内存单元12445H的内容为2715H,问该指令执行后,BX的值是什么? 解:EA=(SI)+100H=2345H+100H=2445H PA=(DS)*16+EA=1000H*16+2445H=12445H。 所以,该指令的执行效果是: 把从物理地址为12445H开始 的一个字的值传送给BX。,24,6. 基址变址寻址方式,定 义:操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。 汇编格式: BR+IR 功 能:操作数存放在存储器,BR的内容加IR的内容是操作数的偏移地址EA。 图形表示:,25,【例3.6】假设指令:MOV BX, BX+SI,在执行时,(DS)=1000H,(BX)=2100H,(SI)=0011H,内存单元12111H的内容为1234H。问该指令执行后,BX的值是什么? 解:操作数的物理地址PA为: PA=(DS)*16+ (BX)+(SI) =1000H*16+ 2100H+0011H =12111H 所以,该指令的执行效果是: 把从物理地址为12111H开始 的一个字的值传送给BX。,26,7. 相对基址变址寻址方式,定 义:操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。 汇编格式:X BR+IR 功 能:操作数存放在存储器,BR内容加IR内容加位移量X是操作数的偏移地址EA。 图形表示:,存储器,27,【例3.7】假设指令:MOV AX, BX+SI+200H,在执行时,(DS)=1000H,(BX)=2100H,(SI)=0010H,内存单元12310H的内容为1234H。问该指令执行后,AX的值是什么? 解:该操作数的物理地址应由DS和EA的值形成,即: PA=12310H 所以,该指令的执行效果是: 把从物理地址为12310H开始 的一个字的值传送给AX。,28,跨段越问题,凡是使用寄存器为BX、SI、DI时,其默认段为DS,使用BP时,默认段为SS。该规定为系统默认状态。当要否定默认状态,到非约定段寻找操作数时,必须用跨段前缀指明操作数的段寄存器名。 汇编格式:段寄存器名:操作数地址。 功能:冒号“:”之前的段寄存器名指明操作数所在的段。 【例3.8】 MOV AX,DS:BP MOV CX,SS:SI 该例中,DS:,SS:均为跨段前缀,此时默认状态无效,操作数的物理地址PA由段寄存器内容左移4位加偏移EA形成。上述2条指令的源操作数物理地址分别为: PA1 =(DS)左移4位+BP PA2 =(SS)左移4位+ SI,29,3.1.2 与转移地址有关的寻址方式,用来确定转移指令及转子(call)指令的转向地址。转移地址是由各种寻址方式得到的有效地址和段地址相加而成的,有效地址存入IP寄存器中,段地址指定为CS段寄存器内容。 段内寻址 段内直接寻址 JMP NEAR PTR NEXT 段内间接寻址 JMP TABLE BX 段间寻址 段间直接寻址 JMP FAR PTR NEXT 段间间接寻址 JMP DWORD PTR BX ,30,(1) 段内直接寻址,转向的有效地址 = 当前(IP) + 位移量(8bit/16bit),31,【例3.8】 (1)JMP SHORT QUEST 其中QUEST表示转移的符号地址,操作符SHORT表示是个8位带符号数,数的范围是80H 7FH,即 -128 +127。它只能相对于当前IP(转移指令的下一条指令的首地址)所指的位置作-128 +127范围内跳转,所以称为短跳转。 (2)JMP NEAR PTR PROGA 其中PROGA表示转移的符号地址,操作符NEAR PRT表示是个16位带符号数,数的范围是8000H 7FFFH,即 -32768 +32767。它只能相对于当前IP所指的位置作-32768 +32767范围内跳转,所以称为近跳转。,32,(2) 段内间接寻址,转向的有效地址是一个寄存器或存储单元的内容。可用除立即数以外的任何一种数据寻址方式得到,所得到的转向的有效地址取代IP寄存器的内容。,33,【例3.9】 已知 TABLE=20A2H ,(BX)=1256H ,(SI)=528EH,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号