大学课程《汇编语言程序设计—基于x86与MIPS架构》PPT课件:第3章 80X86指令系统和寻址方式.pptx
- 文档编号:18833518
- 上传时间:2023-12-27
- 格式:PPTX
- 页数:108
- 大小:17.74MB
大学课程《汇编语言程序设计—基于x86与MIPS架构》PPT课件:第3章 80X86指令系统和寻址方式.pptx
《大学课程《汇编语言程序设计—基于x86与MIPS架构》PPT课件:第3章 80X86指令系统和寻址方式.pptx》由会员分享,可在线阅读,更多相关《大学课程《汇编语言程序设计—基于x86与MIPS架构》PPT课件:第3章 80X86指令系统和寻址方式.pptx(108页珍藏版)》请在冰点文库上搜索。
,80X86指令系统和寻址方式,汇编语言程序设计,本章主要内容,算术运算类指令,80X86数据寻址方式,80X86数据寻址方式,4,北方工业大学信息学院,立即数寻址,80X86数据寻址方式,5,北方工业大学信息学院,寄存器寻址,80X86数据寻址方式,6,北方工业大学信息学院,存储器寻址,80X86数据寻址方式,7,北方工业大学信息学院,直接寻址,80X86数据寻址方式,8,北方工业大学信息学院,直接寻址具体过程,80X86数据寻址方式,9,北方工业大学信息学院,寄存器间接寻址,操作数有效地址EA直接从基址寄存器(BX或BP)或变址寄存器(SI或DI)中获得。
寄存器间接寻址就是事先将偏移量存放在某个寄存器(BX、BP、SI或DI)中,这些寄存器就如同一个地址指针。
在程序运行期间,只要对寄存器内容进行修改,就可以实现用同一条指令实现对不同存储单元进行操作。
80X86数据寻址方式,10,北方工业大学信息学院,寄存器间接寻址,指示存储器所在段的段寄存器可以省略,当指令中使用的是BP寄存器,则隐含表示使用SS段寄存器,其余情况则隐含使用DS段寄存器。
80X86数据寻址方式,11,北方工业大学信息学院,【例3.1】假设有指令:
MOVBX,DI,在执行时(DS)=1000H,(DI)=2345H,存储单元12345H的内容是4354H。
问执行指令后,BX的值是什么?
解:
寄存器DI的值不是操作数,而是操作数的地址。
该操作数的物理地址应由DS和DI的值形成,即:
PA=(DS)*16+DI=1000H*16+2345H=12345H。
在求解之前,首先要明确该指令的执行效果是:
把从物理地址为12345H开始的一个字的值传送给BX。
4354,80X86数据寻址方式,12,北方工业大学信息学院,基址加变址寻址,基址加变址寻址。
操作数在存储器中,其有效地址是一个基址寄存器和一个变址寄存器的内容之和,这种寻址方式称为基址加变址寻址。
例如:
MOVEAX,EBX+ESI;源操作数有效地址是EBX值加上ESI值SUBECX+EDI,AL;目的操作数有效地址是ECX值加上EDI值XCHGEBX+ESI,DX;目的操作数有效地址是EBX值加上ESI值,这种寻址方式用于二维数组或表格处理。
用基址寄存器存放数组首地址,而用变址寄存器来定位数组中的各元素,或反之。
由于两个寄存器都可改变,所以能更加灵活地访问数组或表格中的元素。
80X86数据寻址方式,13,北方工业大学信息学院,相对寻址加变址寻址,相对基址加变址寻址方式中,操作数在存储器中,操作数的有效地址由于基址寄存器之一的内容与变址寄存器之一的内容及指令中给定的位移量(IDATA)相加得到。
相对基址加变址这种寻址方式的表示方法多种多样,以下三种方法均是等价的:
MOVEAX,EBX+EDX+1234H,MOVAX1234HEBXEDX,MOVAX,1234HEBX+EDX,例如:
MOVEAX,EBX+EDX+1234H;EAX=DS:
EBX+EDX+1234H,立即数寻址方式只用于目的操作数。
对,错,A,B,提交,写出下列源操作数的寻址方式,MOVAX,3069H是填空1寻址方式,MOVAX,2000H是填空2寻址方式,MOVAX,BPDI是填空3寻址方式。
作答,正常使用填空题需3.0以上版本雨课堂,若DS=0F3EH,SI=2000H,COUNT=0A8H,指令MOVAX,(SI+COUNT)中,源操作数的有效地址EA为填空1H,其物理地址为填空2H。
作答,正常使用填空题需3.0以上版本雨课堂,现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=56H,(20101H)=78H,(20102H)=9AH,(20103H)=0BCH,(21200H)=0DEH,(21201H)=0F1H,(21202H)=23H,(21203H)=34H,试说明下列各条指令执行完后AX寄存器的内容。
MOVAX,1200HMOVAX,1200HMOVAX,BXSI第一条指令结果:
填空1H;第二条指令结果:
填空2H;第三条指令结果:
填空3H;,作答,正常使用填空题需3.0以上版本雨课堂,数据传送类指令,PUSH指令,数据传送类指令,19,北方工业大学信息学院,数据传送类指令,20,北方工业大学信息学院,MOV指令,数据传送类指令,21,北方工业大学信息学院,MOV指令,数据传送类指令,22,北方工业大学信息学院,XCHG指令,XCHG指令的功能是将源操作数和目的操作数内容交换,是两个寄存器,寄存器和内存变量之间内容的交换指令,两个操作数的数据类型要相同,可以是一个字节,也可以是一个字,也可以是双字,其指令格式如下:
XCHGreg,reg/mem例:
XCHGBL,BH,XCHGSI,EDIXCHGreg/mem,reg例:
XCHGSI,DI,XCHGSI,EDI,XCHG指令不允许的情况有以下四种:
不能同时都为内存操作数;任何一个操作数都不能为段寄存器;任何一个操作数不能为立即数;两个操作数的长度不能不相等。
数据传送类指令,23,北方工业大学信息学院,PUSH指令和POP指令,数据传送类指令,24,北方工业大学信息学院,PUSH指令和POP指令对栈内空间及相应寄存器影响,数据传送类指令,25,北方工业大学信息学院,PUSH指令,数据传送类指令,26,北方工业大学信息学院,PUSH指令,数据传送类指令,27,北方工业大学信息学院,POP指令,;出栈指令,数据传送类指令,28,北方工业大学信息学院,LEA指令,LEAr16/r32,mem;r16/r32mem的有效地址EA(不需类型一致);IA-32使用32位地址,保存于32位通用寄存器r32,00405000,有效地址,r32,数据传送类指令,29,北方工业大学信息学院,LEA指令与MOV指令的比较,moveax,dvarleaesi,dvarmovebx,dvarleaedi,dvarmovecx,dvar,dvardword41424344h,41424344H,00405000有效地址,存储器,EAX,EBX,ECX,ESI,EDI,由图可以看出,MOV指令获得变量名所指向内存单元中的内容,而LEA指令则是获取该变量名对应的有效地址(逻辑地址),数据传送类指令,30,北方工业大学信息学院,LEA指令与OFFSET运算符比较,LEA指令在指令执行时计算出偏移地址OFFSET运算符在汇编阶段取得变量的偏移地址OFFSET无需在执行时计算、指令执行速度更快LEA指令能获取汇编阶段无法确定的偏移地址leaedi,varmovedi,offsetvar,数据传送类指令,31,北方工业大学信息学院,LEA指令与OFFSET运算符比较,leaedx,esi+edi*4+100h;EDXESIEDI4100HLEA指令在计算地址时,可进行加和移位操作编译器将其用于实现加法,或者乘以2、4和8不能用OFFSET操作符实现movedx,offsetesi+edi*4+100h,数据传送类指令,32,北方工业大学信息学院,LEA指令与OFFSET运算符比较,LEA指令获得存储器操作数的有效地址在LEA指令执行时计算地址对任何存储器寻址方式都可用对存储器的直接寻址建议用OFFSET操作符在汇编阶段获得地址对存储器的其他寻址只能使用LEA指令获得地址,执行指令“pusheax”后、接着执行指令“popedx”,功能与()指令相同。
moveax,edx,movedx,eax,xchgeax,edx,xchgedx,eax,A,B,C,D,提交,与MOVBX,OFFSETVAR指令完全等效的指令是(),MOVBX,VAR,LDSBX,VAR,LESBX,VAR,LEABX,VAR,A,B,C,D,提交,此题未设置答案,请点击右侧设置按钮,算术运算类指令,减法运算指令,标志位,算术运算类指令,36,北方工业大学信息学院,算术运算类指令,37,北方工业大学信息学院,进位标志CF,进位标志CF,算术运算类指令,38,北方工业大学信息学院,溢出标志OF,算术运算类指令,39,北方工业大学信息学院,溢出标志OF,算术运算类指令,40,北方工业大学信息学院,溢出标志的人工判断,算术运算类指令,41,北方工业大学信息学院,进位和溢出的区别,算术运算类指令,42,北方工业大学信息学院,零标志ZF,算术运算类指令,43,北方工业大学信息学院,进位,结果,符号标志SF,算术运算类指令,44,北方工业大学信息学院,进位,结果,奇偶标志PF,算术运算类指令,45,北方工业大学信息学院,进位,结果,加法运算指令,算术运算类指令,46,北方工业大学信息学院,加法指令ADD,算术运算类指令,47,北方工业大学信息学院,加法指令ADD的效果及其对标志位的影响,算术运算类指令,48,北方工业大学信息学院,【例3.4】下列程序执行后,(AX)=?
,(BX)=?
MOVAX,1234HMOVBX,5678HADDAX,BX,执行:
AX1234H,执行:
BX5678H,执行:
AX(AX)+(BX),执行后:
(AX)=68ACH,(BX)=5678H,算术运算类指令,49,北方工业大学信息学院,INC指令,算术运算类指令,50,北方工业大学信息学院,减法运算指令,减法指令SUB,算术运算类指令,51,北方工业大学信息学院,减法指令SUB的效果及其对标志位的影响,算术运算类指令,52,北方工业大学信息学院,带借位减法指令SBB,指令格式:
SBBOPRD1,OPRD2功能:
操作数OPRD1减去OPRD2再减去CF的值,结果保存在OPRD1中。
说明:
与SUB指令相同。
常用于多字节数减法。
对全部6个状态标志位产生影响。
例如:
SBBAL,30H;AL-30H-CF结果存回ALSBBAX,BX;AX-BX-CF结果存回AXSBBDI,AH;DI内存单元的数减去AH结果存回内存单元DI中,算术运算类指令,53,北方工业大学信息学院,减量指令DEC,算术运算类指令,54,北方工业大学信息学院,求补指令NEG,算术运算类指令,55,北方工业大学信息学院,乘法运算指令,无符号数乘法指令MUL,MUL只影响CF和OF标志,其它标志位的值不确定。
若结果的AH(字节运算)或DX(字运算)为全0,CF=0、OF=0,否则CF=1、OF=1。
算术运算类指令,56,北方工业大学信息学院,带符号乘法指令IMUL,例如,对字节乘法有:
若乘积的(AH)=11111111,且AL最高为1,则表示符号扩展,则CF=0、OF=0;若乘积的(AH)=00000000,且AL最高为0,则表示符号扩展,则CF=0、OF=0;若乘积的(AH)=11111110,不是符号扩展,则CF=1、OF=1;若乘积的(AH)=00000010,不是符号扩展,则CF=1、OF=1,算术运算类指令,57,北方工业大学信息学院,除法运算指令,无符号数除法指令DIV,算术运算类指令,58,北方工业大学信息学院,带符号除法指令DIV,指令格式:
IDIVOPRD例如:
MOVAL,98HMOVBL,13HCBW;将AL中的数据扩展为16位。
IDIVBL,算术运算类指令,59,北方工业大学信息学院,字节/字扩展指令CBW/CWD,例如:
MOVAL,3EH;AL=00111110BCBW;AX=0000000000111110BMOVAL,93HCBW;AX=1111111110010011B,MOVAX,0C539H;AX=1100010100111001BCWD;DX=FFFFH,AX=C539H,若AL=9CH,AH=7DH,则执行ADDAL,AH指令后,标志CF,OF,ZF的状态分别是填空1、填空2、填空3。
作答,正常使用填空题需3.0以上版本雨课堂,两个整数相减等于0,则标志正确的是(),ZF=0,PF=0,SF=0,ZF=1,PF=1,SF=1,ZF=0,PF=1,SF=0,ZF=1,PF=1,SF=0,A,B,C,D,提交,位操作类指令,逻辑运算指令,位操作类指令,63,北方工业大学信息学院,逻辑与指令AND,位操作类指令,64,北方工业大学信息学院,逻辑或指令OR,位操作类指令,65,北方工业大学信息学院,逻辑非指令NOT,位操作类指令,66,北方工业大学信息学院,逻辑异或指令XOR,位操作类指令,67,北方工业大学信息学院,移位指令,位操作类指令,68,北方工业大学信息学院,逻辑左移指令SHL/逻辑左移指令SAL,位操作类指令,69,北方工业大学信息学院,逻辑右移指令SHR,位操作类指令,70,北方工业大学信息学院,算术右移指令SAR,位操作类指令,71,北方工业大学信息学院,循环移位指令,位操作类指令,72,北方工业大学信息学院,不带进位循环左移指令ROL,位操作类指令,73,北方工业大学信息学院,不带进位循环右移指令ROR,位操作类指令,74,北方工业大学信息学院,带进位循环左移指令RCL,位操作类指令,75,北方工业大学信息学院,带进位循环右移指令RCR,位操作类指令,76,北方工业大学信息学院,【例3.3】下列程序段中的每条指令执行完后,AX寄存器及CF、SF、ZF和OF的内容是?
位操作类指令,77,北方工业大学信息学院,假设AL=28H,执行ROLAL,1指令之后的情况是,AL=14H,CF=1,AL=50H,CF=1,AL=14H,CF=0,AL=50H,CF=0,A,B,C,D,提交,AL=0AH,下列指令执行后能使AL=05H的是(),NOTAL,ANDAL,0FH,XORAL,0FH,ORAL,0FH,A,B,C,D,提交,转移类指令,转移指令,81,北方工业大学信息学院,无条件转移指令,目标是程序中的一个标号,表示转移指令所转移的目的地指令的地址。
根据目标所在的位置,JMP指令分为段内转移和段间转移。
转移指令,82,北方工业大学信息学院,段内转移,JMP指令与转移目标位于同一个代码段内。
转移时IP寄存器内容被改变,而CS保持不变。
目标地址可以有两种提供方法:
转移指令,83,北方工业大学信息学院,段内转移,注意:
转移偏移量是相对转移指令的下一条指令的起始地址如果是相对于该转移指令的地址而言,则相对偏移量的值为:
-126+129字节或-32765+32770,转移指令,84,北方工业大学信息学院,段内转移,IP=(通用寄存器)或IP=(EA),转移指令,85,北方工业大学信息学院,段间转移,JMP指令与目标地址不在同一个段内。
执行该转移指令,将同时改变CS和IP的内容,转移指令,86,北方工业大学信息学院,段间转移,转移指令,87,北方工业大学信息学院,段间转移,例:
JMPDWORDPTRADDR1;双字单元ADDR1的内容为转移目的地的偏移量和段基值。
JMPDWORDPTRBX;由BX所指向的一个双字存储单元内容为转移目的地的偏移量和段基值。
转移指令,88,北方工业大学信息学院,条件转移指令,指令格式与段内无条件转移直接寻址指令的情况相似。
但该指令中的DISP的长度为一个字节。
转移范围为-128+127字节。
转移指令,89,北方工业大学信息学院,简单条件转移指令-条件为单个标志位的状态,转移指令,90,北方工业大学信息学院,带符号数条件转移指令在转移指令之前执行了两个带符号数相减(AB)的指令,转移指令,91,北方工业大学信息学院,执行带符号数相减(AB)的指令对标志位的影响(以AB为例),指令JMPFARPTRDONE属于(),段内转移直接寻址,段内转移间接寻址,段间转移直接寻址,段间转移间接寻址,A,B,C,D,提交,已知(DS)=2000H,(BX)=1256H,(SI)=528FH,则执行指令JMPBX后,IP寄存器的内容是(),1256H,2000H,3256H,528FH,A,B,C,D,提交,转移指令,94,北方工业大学信息学院,循环指令LOOP,转移指令,95,北方工业大学信息学院,LOOP用于实现减量计数的循环控制对于循环次数已知的循环,利用LOOP能够简洁高效典型应用形式,movecx,countlabel:
looplabel,;设置循环的计数初值count;循环体;ECX减1,未到0继续循环,;到0循环结束,顺序执行,转移指令,96,北方工业大学信息学院,但实际上LOOP也存在缺陷:
movecx,0label:
looplabel,;设置循环的计数初值;ECX减1,未到0继续循环,ECX0-1-10,继续循环,“-1”的32位补码FFFFFFFFH232-1,232-1次,ECX0,共计循环232次,转移指令,97,北方工业大学信息学院,为避免计数初值为0可能导致的程序错误设计JECXZ指令,JECXZlabel;ECX0,转移到label;否则,顺序执行,CMPECX,0JZlabel,转移指令,98,北方工业大学信息学院,LOOPE/LOOPZlabel;等于/全等循环指令同一条指令,有两个助记符功能1:
ECXECX1功能2:
若ECX0且ZF=1,转移到LABEL否则,顺序执行,寄存器ECX是默认的计数器ECX减1操作不影响标志,转移指令,99,北方工业大学信息学院,LOOPNE/LOOPNZlabel;等于/全等循环指令同一条指令,有两个助记符功能1:
ECXECX1功能2:
若ECX0且ZF=0,转移到LABEL否则,顺序执行,寄存器ECX是默认的计数器ECX减1操作不影响标志,转移指令,100,北方工业大学信息学院,【例3.5】求数组元素的平均值;数据段arraydword600,121,93,-456,162,-87;数组averdword?
;结果变量元素逐个相加,作为循环体,得到和之后再除以个数数组元素个数已知,可用LOOP指令控制计数,转移指令,101,北方工业大学信息学院,again:
;求和初值为0;指向首个元素;求和;指向下一个数组元素,xoreax,eaxaddeax,loopagainidiv,;保存结果,movecx,lengthofarray;ECX数组元素个数,LOOP指令使用ECX计数器实现计数控制循环,执行循环指令LOOPNZ时,若要使其重复执行,应满足的条件是(),CX0且ZF=0,CX0或ZF=0,CX0且ZF=1,CX0或ZF=1,A,B,C,D,提交,此题未设置答案,请点击右侧设置按钮,下面的数据传送指令中,错误的操作是(),MOVSS:
BX+DI,1000H,MOVDX,1000H,MOVWORDPTRBX,1000H,MOVDS,2000H,A,B,C,D,提交,在下列指令的表示中,不正确的是(),MOVAL,BX+SI,JMPSHORTDONI,DECBX,MULCL,A,B,C,D,提交,下列指令中,使用正确的是(),MOVSI,DI,PUSHWORDPTR20BX+SI-2,PUSHAL,MOVCS:
0,DS:
10,A,B,C,D,提交,课后作业,106,北方工业大学信息学院,1.指出下列指令源操作数(第二操作数)的寻址方式。
MOVAX,1000BXDIMOVBX,1000H(3)ADDSI,AX(4)MOVAX,100(5)MOVAX,SI2.JMPFARPTRLABEL1指令的寻址方式是_,JMPSHORTLABEL1指令的寻址方式是_。
3.TABLE为数据段中5678H单元的符号名,存放内容为0045H,指令MOVAX,TABLE执行完后AX寄存器的内容是_,指令LEAAX,TABLE执行完后AX寄存器的内容是_。
课后作业,107,北方工业大学信息学院,4.已知程序段如下:
MOVAX,1234HMOVCL,4ROLAX,CLDECAXMOVCX,4MULCXINT20H每条指令执行完后,AX寄存器的内容是什么?
每条指令执行完后,进位、符号和零标志的值是什么?
程序结束时,AX和DX的内容是什么?
THANKYOU,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言程序设计基于x86与MIPS架构 大学课程汇编语言程序设计基于x86与MIPS架构PPT课件:第3章 80
链接地址:https://www.bingdoc.com/p-18833518.html