版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言程序设计张绪辉电子教案3.2寄存器型寻址方式寄存器寻址方式:存取数据到寄存器,则必须要知道该数据存放在哪个寄存器。确定寄存器的方式称为寄存器寻址方式。例:MOVAL,30该指令就是将30存到寄存器AL中。该指令的二进制的机器指令是:1011000000011110。该指令的机器指令格式是1011wrrr,对比看rrr=000,即8位通用寄存器AL的机器码。这种寻址方式比较简单,就是在指令的操作数部分写寄存器的名称。可用的名称有:8位的通用寄存器——AH、AL、BH、BL、CH、CL、DH、DL;16位的通用寄存器——AX、BX、CX、DX、SI、DI、BP、SP;16位的段寄存器——CS、DS、SS、ES;【注意】指令指针IP、标志寄存器PSW以及所有标志位的代号CF、ZF、OF等都不能作为寄存器寻址方式的操作数,不允许出现在汇编语言的任何指令中。另外,汇编语言还规定,不允许用MOV等具有赋值功能的指令修改CS的值,也就是说,类似于“MOVCS,30”试图对CS赋值的指令在汇编语言中是不允许的。3.3内存型寻址方式内存是存放数据的主要部件,内存以字节为最小的存取单位,内存的标识是内存地址,所以存取内存的数据首先就是要确定数据存放在内存的哪个内存字节中,即确定内存地址,确定内存地址的方式称为内存寻址方式。存型寻址又细分为5种具体情况,分别称为直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址和相对基址变址。段寄存器的确定有两种情况,即缺省段寄存器和非缺省段寄存器。3.3.1直接寻址方式操作数的偏移地址在指令中直接写明,在程序执行时,在取得指令时就可得到操作数在内存逻辑地址的偏移地址,直接用这个偏移地址与段寄存器的内容进行地址加法,即可获得操作数在内存的物理地址,此时才能获得操作数。我们把以这种得到偏移地址的方式称为直接寻址方式。在汇编语言中,这个偏移地址通常以变量的形式出现,在指令中就是直接写变量的名字。设buf是已经定义的字节型变量,指令“MOVAL,[buf]”中源操作数寻址方式就是直接寻址。用方括号把变量名字括起来是直接寻址的基本写法。上述指令中的“[buf]”表示以变量buf对应的偏移地址和缺省段寄存器中的值作为完整的逻辑地址,操作数在逻辑地址所确定的内存单元中。假定上述指令中变量buf的缺省段寄存器是DS,执行上述指令时DS的值是1234H,buf的偏移地址是123H,该指令的二进制机器指令是10001010000001100010001100000001(十六进制8A062301H汇编源程序中直接寻址一般形式是“[变量±数值]”的写法,汇编程序在翻译汇编源程序先找出变量名所对应的偏移地址,再与另一个数值相加减,计算结果作为操作数的偏移地址,以直接寻址方式翻译到机器指令中。这个结果在汇编程序翻译源程序时就能直接得到。3.3.2寄存器间接寻址方式操作数的偏移地址存放在寄存器,在指令中写明从存放偏移地址的寄存器即可。因此在汇编程序翻译汇编源程序就不能直接得到偏移地址了,而必须在程序执行时从该寄存器中取得偏移地址。此时寄存器中存放的数据不是操作数,而是操作数在内存中逻辑地址的偏移地址,因此从该寄存器中取得的数据是偏移地址,再和段寄存器内容进行地址加法运算才能得到操作数在内存的物理地址,此时才能获得操作数。我们把以这种得到偏移地址的方式称为寄存器间址寻址方式。操作数的寄存器间址寻址方式的写法是以该寄存器的名字加上方括号(以区别寄存器型寻址方式)。这表示寄存器的内容作为偏移地址,而不是参与操作的数据本身,操作数需要到内存中去找。注意与寄存器寻址方式相区分。MOVAL,[BX]MOVAL,[SI]MOVAL,[BP]假定指令MOVAL,[BX]中寄存器BX中存放的数据是123H,BX对应的缺省段寄存器是DS,执行该指令时DS的值是1234H,由于在程序的执行过程中,寄存器的内容是可变的,所以程序中欲使用的内存操作数在编写程序时不能确定,而必须根据程序的执行情况取得该操作数。较直接寻址方式而言,这种寄存器间址的寻址方式解决了程序执行过程中动态读写内存数据。3.3.3寄存器相对寻址方式寄存器间址寻址方式中从间址寄存器中获得的数据是偏移地址,是相对段地址的偏移地址。如果偏移地址不是从间址寄存器中获得的数据,而是将该数据与一个16位的数据进行ALU的加法运算得到加的结果,把这个相加的结果作为偏移地址,再和段寄存器内容进行地址加法运算才能得到操作数在内存的物理地址,此时就能获得操作数。我们把以这种得到偏移地址的方式称为寄存器相对寻址方式。操作数的寄存器相对寻址方式的写法是以该方括号内填写寄存器的名字加一个字型数据,该字型数据可以是变量名,也可以是一个数值,也可以是一个数值表达式。其中的方括号不能省略,方括号中不允许出现一个变量减一个寄存器的写法。(1)MOVAL,[buf+SI](2)MOVAL,buf[DI](3)MOVAL,[buf+BP](4)MOVAL,buf[BX](5)MOVAL,[BX+15](6)MOVAL,[BX+buf]假定指令MOVAL,[BX+15]中寄存器BX中存放的数据是123H,BX对应的缺省段寄存器是DS,执行该指令时DS的值是1234H。【例3.1】设变量bufl和buf2定义在同一个段中,偏移地址分别是102H和3ACH,寄存器BX的值是3000H。试计算下列各指令中源操作数的偏移地址值。MOVAL,[bufl+BX]MOVAL,[BX+13]MOVAL,[BX+bufl-buf2]MOVAL,[buf2+BX-4000H]3.3.4基址变址寻址方式这种寻址方式是用一个基址寄存器与一个变址寄存器的值相加,计算结果作为操作数的偏移地址。如果加法运算的最高位向前有进位则被忽略。书写形式是用加号把两个寄存器连接起来,并加上方括号,称为基址变址寻址方式。汇编语言的语法规定,必须用一个基址寄存器与一个变址寄存器相加。基址寄存器只有BX和BP,变址寄存器只有SI和DI组合起来只可能出现4种情况。MOVAL,[BX+SI]MOVAL,[BX+DI]MOVAL,[BP+SI]MOVAL,[BP+DI]汇编语言的语法还允许把基址变址方式中的两个寄存器分别写在两个方括号中一起不用加号“+”。假定指令MOVAL,[BX+SI]中寄存器BX中存放的数据是123H,寄存器SI中存放的数据是23H,对应的缺省段寄存器是DS,执行该指令时DS的值是1234H3.3.5基址变址相对寻址方式这种寻址方式是把一个基址寄存器和一个变址寄存器的值以及一个字型数据三者相加,结果作为操作数的偏移地址。字型数据可以是一个变量,也可以是一个数值。在基址变址相对寻址方式中的基址寄存器和变址寄存器的组合方式完全同基址变址寻址方式的规定,再加一个字型数值或字型数值表达式,共有8种组合形式。MOVAL,[buf+BX+SI]MOVAL,[buf+BX+DI]MOVAL,[buf+BP+SI]MOVAL,[buf+BP+DI]MOVAL,[BX+SI+buf]MOVAL,[BX+DI+buf]MOVAL,[BP+SI+buf]MOVAL,[BP+DI+buf]与基址变址类似,相对基址变址在书写时也可以用两个方括号把基址寄存器和变址寄存器括起来,并且不写加号“+”。·假定指令MOVAL,[BX+SI+15]中寄存器BX中存放的数据是123H,寄存器SI中存放的数据是23H,对应的缺省段寄存器是DS,执行该指令时DS的值是1234H,3.3.6段寄存器缺省段寄存器(1)如果寻址方式的组合中是开始的第一项是变量,例如[BUF]、[BUF+BX]、[BUF+BX+SI]等,则缺省段寄存器是DS。(2)如果寻址方式的组合中是开始的第一项是寄存器,例如[BX]、[BP]、[SI]、[BP]、[DI]、[BX+SI]、[BP+SI]、[BX+SI+BUF]、[BP+SI+BUF]等,则缺省段寄存器的确定看第一个寄存器。具体规定有如下两种情况:①BP寄存器对应的缺省段寄存器是SS。②BX、SI、DI寄存器对应的缺省段寄存器是DS。(3)如果寻址方式的组合中是开始的第一项是具体数值,例如[15]、[15+BX]、[15+BX+SI]、[15+BP+SI]等。如果该组合中只有一项数值,没有其它项,则缺省段寄存器就是DS;如果有其它项,就看第二项,如果第二项是变量,此时按第1条原则确定缺省段寄存器,即DS;如果第二项是寄存器,此时按第2条原则确定缺省段寄存器,即是寄存器BP,则缺省段寄存器是SS,是BX、SI、DI则缺省段寄存器是DS非缺省段寄存器非缺省段寄存器的使用也称“段跨越”。非缺省段寄存器就是在逻辑地址中明确段寄存器,此时段地址就是指定的段寄存器。例如逻辑地址DS:[BP]到物理地址的转换就是数据段寄存器DS的数据与栈基地址寄存器BP的数据经地址加法器运算,而不是采用地址段寄存器SS。段寄存器内容的填写段地址填写到段寄存器具体填写方法如下:(1)代码段寄存器CS的内容在程序启动运行之前由系统将代码段的段地址填写。(2)堆栈段寄存器SS的内容在程序启动运行之前由系统将堆栈段的段地址填写。(3)数据段寄存器DS和附加数据段寄存器ES的内容由用户程序填写。3.4外部设备型寻址方式计算机需要从外设获得数据,也需要将数据通过外设输出数据,从哪个外设获得数据,从哪个外设输出数据呢?同样的道理,必须找到这个外设,确定外设的方式就是外设型寻址方式。8086/8088系统中把内存的每个字节进行编号,形成内存的物理地址,类似地也把控制各种外部设备的接口中的各部件编排号码,每个号码对应的一个外设部件称为一个外设端口,这个号码就是外设地址,又称外设端口号。外设是多种多样的,各自的接口也不同,但接口中的各个部件却有一个共同特点,就是能够以1字节为基本单位存放来自系统总线的数据,或者向系统总线提供数据。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度新能源车辆充电桩安装施工合同范本
- 二零二五年度车牌租赁与智能交通设施租赁合同3篇
- 二零二五年度交通基础设施测绘与优化合同2篇
- 二零二四年通信行业劳务输出与网络维护合同范本3篇
- 二零二五年度船舶货物装载与平衡服务合同4篇
- 2025年度餐饮厨房设备升级改造工程合同11篇
- 万达广场户外活动场地租赁合同样本2024年版版B版
- 二零二五年度电梯门套定制设计与绿色施工合同4篇
- 二零二四年男女自愿解除婚姻合同样本6篇
- 二零二五年度厂房土地买卖及配套设施租赁服务合同4篇
- 小学六年级数学上册《简便计算》练习题(310题-附答案)
- 2023-2024学年度人教版一年级语文上册寒假作业
- 培训如何上好一堂课
- 高教版2023年中职教科书《语文》(基础模块)下册教案全册
- 2024医疗销售年度计划
- 税务局个人所得税综合所得汇算清缴
- 人教版语文1-6年级古诗词
- 上学期高二期末语文试卷(含答案)
- 软件运维考核指标
- 空气动力学仿真技术:格子玻尔兹曼方法(LBM)简介
- 对表达方式进行选择与运用
评论
0/150
提交评论