




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章操作数的寻址方式,1,第一节汇编指令格式,汇编指令的格式:指令助记符操作数,操作数;注释根据操作数的个数分,有以下三种格式:,1、双操作数指令指令助记符目的操作数(dst),源操作数(src)运算之后,结果保存在目的操作数。例:movax,1234hmovbx,5678haddax,bx,2,第一节汇编指令格式,2、单操作数指令指令助记符操作数只有把数据先送入隐含的寄存器中、才能执行此操作的指令。例:mulcx;(ax)(cx)(dx,ax),3、无操作数指令指令助记符例:clc;0cfstc;1cf,3,第二节操作数的寻址方式,一、概述二、立即数寻址(imm)三、寄存器寻址(reg)四、存储器寻址(mem),4,概述,寻址方式:在指令中,指定操作数或操作数的存放位置的方法称为寻址方式。,操作数出现在指令中立即数寻址操作数保存在寄存器中寄存器寻址操作数保存在内存存储器寻址操作数保存在i/o端口i/o寻址(见第八章),5,第二节操作数的寻址方式,一、概述二、立即数寻址(imm)三、寄存器寻址(reg)四、存储器寻址(mem),6,立即数寻址(imm),操作数出现在指令中,是指令的一个组成部分。这样的操作数叫做立即数.以这种指定操作数的方式就叫做立即数寻址。,例:movah,80haddax,1234hmovb1,12hmovw1,3456haddd1,32123456h其中:b1、w1和d1分别是字节、字和双字内存变量。,执行过程,7,立即数寻址(imm),要点:目的操作数不能使用立即数寻址。例:mov1234h,ax立即数可以是8、16位数。在双操作数指令,两个操作数的位数、数据类型必须相同。例:moval,1234hmoval,bxmovbx,almovax,70hmovax,-70h,8,第二节操作数的寻址方式,一、概述二、立即数寻址(imm)三、寄存器寻址(reg)四、存储器寻址(mem),9,寄存器寻址(reg),指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(寄存器符号)的寻址方式称为寄存器寻址方式。,指令中可以引用的寄存器及其符号如下:8位寄存器有:ah、al、bh、bl、ch、cl、dh和dl。16位寄存器有:ax、bx、cx、dx、si、di、sp、bp、ip和段寄存器。,执行过程,10,寄存器寻址(reg),例:addvarw,axaddvarb,bh;其中varw,varb是字、字节内存变量。addbh,78haddax,1234hmovax,bxmovbh,al,要点:在双操作数指令,源操作数和目的操作数都可以使用寄存器寻址。,11,第二节操作数的寻址方式,一、概述二、立即数寻址(imm)三、寄存器寻址(reg)四、存储器寻址(mem),12,存储器寻址(mem),指令所要的操作数存放在内存中,在指令中给出存储器的地址来指定操作数的方法称为存储器寻址方式。段地址默认的段寄存器ds或ss。如果使用段超越前缀,那么,段地址可存放在其它段寄存器。EA形成方式:分为5种物理地址段地址16+有效地址(EA),13,1、直接寻址,指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。物理地址=(段寄存器)16+有效地址,其中段地址在默认的ds,如果使用段超越前缀,那么,段地址可在其它段寄存器。,执行过程,14,1、直接寻址,例:假设有指令:movax,2000h,在执行时,(ds)=3000h,内存单元32000h的值为1234h。问该指令执行后,ax的值是什么?指令变为:moval,2000h,al的值是什么?,PA=(ds)16+2000h=32000h(ax)=1234h(al)=34h,图示,15,1、直接寻址,例:指令:movbx,es:1234h,(es)=1000h,(11234h)=1234h。问该指令执行后,bx的值是什么?,PA=(es)16+1234h=11234h(bx)=1234h,16,1、直接寻址,地址也常用内存变量名来表示,书写格式:v_1或v_1。如movax,varwmovax,varw与立即数寻址的区别在指令中,直接寻址给出操作数的EA,立即数寻址给出操作数。用数字书写时,格式不一样。movax,1234hmovax,1234,要点:,17,2、寄存器间接寻址,操作数在存储器中,操作数的有效地址用si、di、bx和bp等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。,18,2、寄存器间接寻址,在不使用段超越前缀的情况下,有下列规定:若有效地址用si、di和bx等之一来指定,则其缺省的段寄存器为ds;若有效地址用bp来指定,则其缺省的段寄存器为ss(即:堆栈段)。,例:movax,bx;(ax)((ds)16+(bx)movax,bp;(ax)((ss)16+(bp))movax,es:bp;(ax)((es)16+(bp)),19,2、寄存器间接寻址,例:假设有指令:movax,bx,在执行时,(ds)=3000h,(bx)=2000h,存储单元32000h的内容是1234h。问执行指令后,ax的值是什么?,图示,PA=(ds)*16+(bx)=3000h*16+2000h=32000h(bx)=1234h,20,3、寄存器相对寻址,操作数在存储器中,其有效地址是一个基址寄存器(bx、bp)或变址寄存器(si、di)的内容和指令中的8位/16位偏移量之和。,在不使用段超越前缀的情况下,有下列规定:若有效地址用si、di和bx等之一来指定,则其缺省的段寄存器为ds;若有效地址用bp来指定,则其缺省的段寄存器为ss(即:堆栈段)。,21,3、寄存器相对寻址,例:moval,bx+1000h;(al)(ds)16+(bx)+(1000h)movax,es:bp+06h;(ax)(es)16+(bp)+(06h),22,3、寄存器相对寻址,例:假设指令:movax,bx+1000h,在执行它时,(ds)=3000h,(bx)=1000h,内存单元32000h的内容为1234h,问该指令执行后,bx的值是什么?,图示,EA=(bx)+1000h=1000h+1000h=2000hPA=(ds)*16+EA=3000h*16+2000h=32000h。(ax)=1234h,23,4、基址变址寻址,操作数在存储器中,其有效地址是一个基址寄存器(bx、bp)和一个变址寄存器(si、di)的内容之和。,在不使用段超越前缀的情况下,有下列规定:若有效地址用si、di和bx等之一来指定,则其缺省的段寄存器为ds;若有效地址用bp来指定,则其缺省的段寄存器为ss(即:堆栈段)。,24,4、基址变址寻址,例:movax,bx+si;(ax)(ds16+(bx)+(si)movax,bp+di;(ax)(ss)16+(bp)+(di)movax,ds:bp+di;(ax)(ds)16+(bp)+(di),25,4、基址变址寻址,例:movax,bx+si,在执行时,(ds)=3000h,(bx)=1500h,(si)=500h,内存单元32000的内容为1234h。问指令执行后,ax的值是什么?EA=(bx)+(si)=1500h+500h=2000hPA=(ds)*16+EA=3000h*16+2000h=32000h(ax)=1234h,图示,26,5、基址变址相对寻址,操作数在存储器中,其有效地址是一个基址寄存器(bx、bp)的值、一个变址寄存器(si、di)的值和指令中的8位/16位偏移量之和。,在不使用段超越前缀的情况下,有下列规定:若有效地址用si、di和bx等之一来指定,则其缺省的段寄存器为ds;若有效地址用bp来指定,则其缺省的段寄存器为ss(即:堆栈段)。,27,5、基址变址相对寻址,例:movax,bx+si+06h;(ax)(ds)16+(bx)+(si)+06h)movax,bp+si+06h;(ax)(ss)16+(bx)+(si)+06h),图示,28,5、基址变址相对寻址,例:假设指令:movax,bx+si+1000h,在执行时,(ds)=3000h,(bx)=700h,(si)=300h,内存单元32000h的内容为1234h。问指令执行后,ax的值是什么?EA=(bx)+(si)+1000h=700h+300h+1000h=2000hPA=(ds)*16+EA=1000h*16+2000h=32000h(ax)=1234h,图示,29,5、基址变址相对寻址,注意:相对基址加变址寻址方式有多种等价的书写方式,书写格式:bx+si+1000h1000hbx+si1000hbxsi1000hsibx但格式:bx1000h+si、si1000h+bx等是错误的,即所用寄存器不能在”之外,该限制对寄存器相对寻址方式的书写也同样起作用。,30,总结,一、立即数寻址二、寄存器寻址三、存储器寻址,不涉及寄存器:直接寻址涉及一个寄存器:寄存器间接寻址和寄存器相对寻址涉及两个寄存器:基址变址寻址和基址变址相对寻址,31,综合,例1指出下列操作数的寻址方式。(1)bx(2)si(3)bp+si+100(4)23(5)23di(6)100(7)es:bx(8)bxsi(9)x;x是变量名(10)numbx;num是数组名,32,综合,例2判断下列操作数的寻址方式是否正确,若错误说明错误原因。(1)cx(2)bx+bp(3)ah(4)bl+44h(5)dx+100(6)si100(7)si+di+100,33,综合,例3、已知(DS)=2000H,(BX)=100H,(SI)=2,存储单元21200H21203H依次存放(十六进制)2A、4C、B7、65,说明下列每条指令执行完后AX寄存器的内容。(1)movax,1200h(2)movax,bx+1101h(3)movax,bxsi+1100h,34,综合,例4:如图所示,取第三个字数据(dx)解:取第3个数据,其偏移量:num+3(1)直接寻址:movdx,num+4;num为字变量(2)寄存器间接寻址:leabx,num+4movdx,bx,35
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 快递站点抵押合同范本
- 钢结构签合同范本
- 染料销售合同范本
- 监理合同范本 酬金
- 开公司 投资 合同范本
- 办公座椅购买合同范本
- 施工企业施工合同范本
- 员工集资合同范本
- 面地板装修合同范本
- 联合中标epc合同范本
- GB/T 9871-2008硫化橡胶或热塑性橡胶老化性能的测定拉伸应力松弛试验
- GB/T 26480-2011阀门的检验和试验
- GB/T 19861-2005丙烯酸系阴离子交换树脂强碱基团、弱碱基团和弱酸基团交换容量测定方法
- GB/T 11085-1989散装液态石油产品损耗
- GB 30000.3-2013化学品分类和标签规范第3部分:易燃气体
- 《材料力学》说课-课件
- (完整版)沪教牛津版小学一至六年级英语单词汇总(最新)
- JJF 1587-2016 数字多用表校准规范-(高清现行)
- 完整课件-西方经济学下册(第二版)
- 机械制图教学通用课件(全套)
- 天星择日的基本原理
评论
0/150
提交评论