已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,2019/11/19,1,汇编语言程序设计,第4章80 x86的寻址方式与基本指令,4.1指令系统概述4.280 x86的寻址方式4.3数据处理类指令4.4控制转移类指令4.5其他类指令,2019/11/19,2,汇编语言程序设计,4.1指令系统概述,第4章80 x86的寻址方式与基本指令,指令计算机执行的各种操作的命令的形式。指令系统计算机所能执行的全部指令。向上兼容每种计算机有自己固有的指令系统,如Intel8086/8088和MC68000的指令系统各不相同。但是486微处理器可以执行8086/8088、286、386的指令系统,这就是向上兼容的缘故。程序指令的集合或指令的序列。,1.几个概念,3,汇编语言程序设计,2019/11/19,4.1指令系统概述,操作码操作数,操作数80 x86的运算指令采用二地址指令,即:操作码(目的)操作数,(源)操作数操作码指出要执行的操作。操作数指出指令操作的对象。可能是操作数本身,也可能是操作数地址。源操作数指出操作数的来源。目的操作数指出指令的操作结果存放何处。在许多指令中,同时又指出另一操作数的来源。注意原来的数据丢失。,2.指令的一般格式,2019/11/19,4,汇编语言程序设计,例MOVAL,34H;操作数本身,立即数。ADDAL,DATA1;操作数地址MULCL;单操作数指令的形式有:双操作数指令单操作数指令DECCX隐含操作数指令AAA,2019/11/19,5,汇编语言程序设计,(1)立即数操作数本身,存放在指令代码中。(2)寄存器操作数操作数存放在CPU内部寄存器中。(3)内存操作数操作数存放在内存中,一般在数据段、附加段、甚至堆栈段。给出的是操作数的地址。(4)端口操作数在I/O指令中,给出的端口地址。如INAL,34HOUT43H,AL,3.操作数的种类,2019/11/19,6,汇编语言程序设计,2019/11/19,7,汇编语言程序设计,第4章80 x86的寻址方式与基本指令,一、与数据有关的寻址方式二、与转移地址有关的寻址方式,4.280 x86的寻址方式,寻址方式如何寻找(规定)操作数的方式。即指令中用于说明操作数所在地址的方法。,一、与数据有关的寻址方式,2019/11/19,8,汇编语言程序设计,一、与数据有关的寻址方式,操作数直接放在指令中,紧跟在操作码之后,与操作码一起存放在代码段中。可以是字节/字/双字。例MOVAL,5MOVAX,3087HMOVEAX,12345678H如下图所示:,1.立即寻址方式(Immediateaddressing),2019/11/19,9,汇编语言程序设计,一、与数据有关的寻址方式,2019/11/19,10,汇编语言程序设计,立即寻址主要用途是给寄存器赋初值。用来表示常数。注意只能用于源操作数,不能用于目的操作数。,2019/11/19,11,汇编语言程序设计,一、与数据有关的寻址方式,操作数在寄存器中,指令指定寄存器号。对于16位操作数,寄存器可以是AX、BX、CX、DX、SI、DI、SP、BP;对于8位操作数,寄存器可以是AH、AL、BH、BL、CH、CL、DH、DL。对于32位操作数,寄存器可以是EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP;例:MOVAX,BXMOVECX,EDXMOVDL,AL,2.寄存器寻址方式(Registeraddressing),2019/11/19,12,汇编语言程序设计,寄存器寻址方式由于操作数在寄存器中,不需要访问存储器,所以速度最快,也最常用。寄存器寻址方式寻找操作数的示意图如下:,MOVAX,BX,如:,2019/11/19,13,汇编语言程序设计,一、与数据有关的寻址方式,除上述两种寻址方式外,以下的寻址方式的操作数都在除代码段以外的存储区中,称为内存操作数。内存操作数的地址由段基地址和偏移地址相加而取得。在实模式和保护模式下,段基地址的取得方法不同。,内存操作数,内存操作数,2019/11/19,14,汇编语言程序设计,一、与数据有关的寻址方式,有效地址EA(EffectiveAddress)在各种寻址方式中,操作数的偏移地址可由各种成分组成,称为有效地址,用EA表示。内存操作数的各种不同的寻址方式,仅是它们的EA的组成不同。,有效地址,2019/11/19,15,汇编语言程序设计,一、与数据有关的寻址方式,有效地址EA由四种成分组成:(1)位移量8/16/32位地址偏移量(2)基址基址寄存器的内容。通常用来指示数组或字符串的首地址。(3)变址变址寄存器的内容。通常用来访问数组或字符串中的某个元素。(4)比例因子386以后机型有。值为1,2,4,8。乘以变址寄存器的内容得到变址值。,有效地址的计算公式:EA=基址+(变址比例因子)+位移量,有效地址的计算,2019/11/19,16,汇编语言程序设计,一、与数据有关的寻址方式,16/32位寻址时EA四种成分的组成,位移量基址寄存器变址寄存器比例因子,0,8,16位BX,BPSI,DI无,0,8,16,32位任何32位通用寄存器32位通用寄存器(除ESP)1,2,4,8,16位寻址,32位寻址,2019/11/19,17,汇编语言程序设计,一、与数据有关的寻址方式,在指令中大多隐含段地址。段地址有个基本的规定(约定,默认),也允许超越(可修改),见下表所示:,段约定和段超越,2019/11/19,18,汇编语言程序设计,一、与数据有关的寻址方式,段约定和段超越:存取方式约定段可修改段偏移地址取指令CS无IP堆栈操作SS无SP源串DSCS,ES,SSSI目的串ES无DIBP作基址SSCS,DS,ESEA通用数据读写DSCS,ES,SSEA,2019/11/19,19,汇编语言程序设计,一、与数据有关的寻址方式,操作数在内存中,有效地址EA在指令的代码段中,它在操作码之后。例MOVAX,2000H如下图所示:,3.直接寻址方式(Directaddressing),2019/11/19,20,汇编语言程序设计,一、与数据有关的寻址方式3.直接寻址方式,2019/11/19,21,汇编语言程序设计,一、与数据有关的寻址方式3.直接寻址方式,注意几点:(1)MOVAX,2000H与MOVAX,2000H的区别。(2)MOVAX,2000H与MOVAL,2000H的区别。(3)MOVAX,2000H等同于MOVAX,DS:2000H。(4)若VALUE是符号地址,则MOVAX,VALUE同MOVAX,VALUE。,2019/11/19,22,汇编语言程序设计,一、与数据有关的寻址方式,操作数的有效地址在基址寄存器BP、BX和变址寄存器SI、DI中,而操作数在内存中。例MOVAX,BX如下图所示:,4.寄存器间接寻址方式(Registerindirectaddressing),2019/11/19,23,汇编语言程序设计,一、与数据有关的寻址方式4.寄存器间接寻址方式,2019/11/19,24,汇编语言程序设计,一、与数据有关的寻址方式4.寄存器间接寻址方式,必须注意:如果指令中指定的寄存器是BX、SI、DI之一,则操作数在数据段中,用DS的内容作为段地址;如果指令中指定的寄存器是BP,则操作数在堆栈段中,用SS的内容作为段地址。另外,指令中也可以指定段超越来访问其它段中的数据。如:MOVAX,ES:BX。,2019/11/19,25,汇编语言程序设计,一、与数据有关的寻址方式,或称为(直接)变址寻址。操作数的有效地址是BP、BX、SI、DI之一的内容加上指令中指定的8位或16位位移量。例:MOVAX,COUNTBX如下图所示:,5.寄存器相对寻址方式(Registerrelativeaddressing),2019/11/19,26,汇编语言程序设计,一、与数据有关的寻址方式5.寄存器相对寻址方式,2019/11/19,27,汇编语言程序设计,一、与数据有关的寻址方式5.寄存器相对寻址方式,同样注意:出现BP则是堆栈段中的数据。又例:MOVAL,100H+DIMOVAX,BUFBX,2019/11/19,28,汇编语言程序设计,一、与数据有关的寻址方式,操作数的有效地址是BP、BX之一和SI、DI之一的内容之和。两个寄存器均由指令指定。例:MOVAX,BXSIMOVAX,BX+DI示意图类似,不同的是组成EA的两个地址不尽相同。,6.基址变址寻址方式(Basedindexedaddressing),2019/11/19,29,汇编语言程序设计,一、与数据有关的寻址方式6.基址变址寻址方式,同样注意BP的问题。例:MOVAX,BXDIMOVAX,BX+SIMOVDX,BP+DIMOVDX,ES:BPDI,2019/11/19,30,汇编语言程序设计,一、与数据有关的寻址方式,操作数的有效地址是BP、BX之一和SI、DI之一的内容和8位或16位偏移量三者之和。两个寄存器均由指令指定。例:MOVAX,COUNTBXSIMOVAX,MASKBX+SI示意图也类似,不同的是EA是由三个地址组成。,7.相对基址变址寻址方式(Relativebasedindexedaddressing),2019/11/19,31,汇编语言程序设计,一、与数据有关的寻址方式7.相对基址变址寻址方式,同样有BP的问题。又如:MOVAX,200HBXSIMOVAX,200H+BX+SIMOVDX,2BPDIMOVAX,2BP+SI,2019/11/19,32,汇编语言程序设计,一、与数据有关的寻址方式,操作数的有效地址变址寄存器的内容乘以指令中指定的比例因子再加上偏移量三者之和。(除ESP以外的32位通用寄存器)例:MOVEAX,COUNTESI*4把双字数组COUNT中的元素3送到EAX中。如下图所示。,8.比例变址寻址方式(scaledindexedaddressing),2019/11/19,33,汇编语言程序设计,一、与数据有关的寻址方式,操作数的有效地址变址寄存器的内容乘以指令中指定的比例因子再加上基址寄存器的内容三者之和。例:MOVECX,EAXEDX*8该寻址方式比基址变址寻址方式更灵活。,9.基址比例变址寻址方式(basedscaledindexedaddressing),2019/11/19,34,汇编语言程序设计,一、与数据有关的寻址方式,操作数的有效地址变址寄存器的内容乘以指令中指定的比例因子再加上基址寄存器的内容,再加上位移量,四者之和。例:MOVEAX,TABLEEBPEDI*4该寻址方式比相对基址变址寻址方式更灵活。,10.相对基址比例变址寻址方式(relativebasedscaledindexedaddressing),2019/11/19,35,汇编语言程序设计,用来确定转移指令(如JMP,JC等)及CALL指令的转向地址。,二、与地址有关的寻址方式,2019/11/19,36,汇编语言程序设计,二、与地址有关的寻址方式,转向的有效地址是当前IP寄存器的内容+指令中指定的8位或16位位移量。例如:JMPNEXTJMPSHORTNEXTJMPNEARPTRNEXT,1.段内直接寻址(intrasegmentdirectaddressing),2019/11/19,37,汇编语言程序设计,二、与地址有关的寻址方式1.段内直接寻址,这是一种相对寻址方式,转向有效地址用相对于当前IP值的位移量来表示。位移量为8位时称为短转移。位移量为16位时称为近转移。386及以后机型,偏移地址在EIP中,位移量为8位或32位。,2019/11/19,38,汇编语言程序设计,二、与地址有关的寻址方式,转向的有效地址是一个寄存器或存储单元的内容,取代IP寄存器的内容。例如:JMPBXJMPTABLEBXJMPBXSIJMPECXJMPWORDPTRTABLEESI,2.段内间接寻址(intrasegmentindirectaddressing),2019/11/19,39,汇编语言程序设计,二、与地址有关的寻址方式,指令中直接提供了转向的段地址和偏移地址,分别取代CS和IP的内容,即可完成从一个段到另一个段的转移。例如:JMPFARPTRNEXT386以后的机型则修改CS和EIP。,3.段间直接寻址(intersegmentdirectaddressing),2019/11/19,40,汇编语言程序设计,汇编语言程序设计第三章80 x86的寻址方式和指令系统,二、与地址有关的寻址方式,用存储器中两个相继字单元的内容取代CS和IP的内容,达到段间转移的目的。例如:JMPDWORDPTRINTERS+BXJMPDWORDPTREDI,4.段间间接寻址(intersegmentindirectaddressing),2019/11/19,41,汇编语言程序设计,2019/11/19,42,汇编语言程序设计,第4章80 x86的寻址方式与基本指令,一、数据传送指令二、算术运算指令三、逻辑运算指令四、移位指令五、串操作指令六、输入输出指令,4.3数据处理类指令,2019/11/19,43,汇编语言程序设计,第4章80 x86的寻址方式与基本指令,一、数据传送指令,通用数据传送指令MOVMOVSXMOVZXXCHG堆栈操作指令PUSHPOPPUSHA/PUSHADPOPA/POPAD地址传送指令LEALDSLESLFSLGSLSS标志寄存器传送指令LAHFSAHFPUSHFPOPF,一、数据传送指令,MOV指令格式:MOVDST,SRC;W/B操作:(DST)通用寄存器(不能是段寄存器)MOVAL,25MOVBX,052AHMOVSI,OFFSETTABLEMOVSP,0A2C0H注意:立即数不能作目的操作数。,2019/11/19,47,汇编语言程序设计,一、数据传送指令1.通用数据传送指令,(3)寄存器与存储器之间的数据传送MOVAL,BUFFERMOVAX,SIMOVLASTBX+DI,DLMOVSI,ES:BPMOVALFABXDI,ES注意:CS和IP不参与数据传送(CS只能作源操作数),2019/11/19,48,汇编语言程序设计,一、数据传送指令1.通用数据传送指令,(4)立即数到存储器的数据传送MOVALFA,25MOVDS:DATABP,30A0HMOVBYTEPTRSI,75MOVBX+DI+LAST,0FFH注意:立即数存储器,一定要使它们的类型一致。,2019/11/19,49,汇编语言程序设计,一、数据传送指令1.通用数据传送指令,存储器之间不能直接传送!如“MOVALFA2,ALFA1”,是错误的。存储器之间只能借助通用寄存器间接传送:MOVAL,ALFA1MOVALFA2,AL程序例:DATA1处的100个字节数据传送到DATA2处。分析:通过累加器间接传送,用循环的方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年抗肿瘤药物临床试验终点指标选择
- 2026年企业节能管理制度体系文件
- 初中生环境保护主题班会说课稿
- 科研诚信文化融入资源监管路径
- 科研经费“负面清单”管理的效率边界研究
- 科研伦理审查人员的专业能力提升
- 幼儿的性格说课稿2025学年中职专业课-幼儿心理学-学前教育类-教育与体育大类
- 私域流量助力医疗品牌年轻化
- 神经系统疾病多学科诊疗质控路径
- 神经导航引导下血肿清除术的术中麻醉管理要点
- 2026河北沧州市工会岗位人员招聘53人考试参考题库及答案解析
- 2026四川省中西医结合医院第三批招聘编外人员125人考试备考试题及答案解析
- 2026湖南邵阳武冈市事业单位及市属国有企业人才引进36人备考题库及答案详解(名师系列)
- 2026年江西档案职称考试(档案事业概论)(中级)强化训练试题及答案
- 2026年江苏省扬州市高邮市中考英语第一次适应性试卷
- 2026年上海市浦东新区初三下学期二模数学试卷和答案
- 2026年网络安全全景防护与实践培训
- 企业管理行业企业信息化管理系统方案
- 2026年度滁州市全椒县人民法院公开招聘12名政府购买服务工作人员笔试备考试题及答案解析
- 视频监控运维服务方案投标文件(技术标)
- (完整)交管12123学法减分试题库及答案
评论
0/150
提交评论