当前位置: 首页 > >

汇编语言基础知识_寻址方式(转)

发布时间:

操作数采取哪一种寻址方式,会影响机器运行的速度和效率;也影响程序员的程序设计方法。

MOV dest,src ;dest←src

MOV AX,0102H ;AX←0102H

MOV BX,AX ;两个操作数均为寄存器寻址:BX←AX

MOV AX,[2000H] ;AX←DS:[2000H],指令代码:A10020

MOV AX,[SI] ;AX←DS:[SI]

MOV AX,[DI+06H] ;AX←DS:[DI+06H]

MOV AX,[BP+06H] ;AX←SS:[BP+06H]

MOV AX,[BX+SI] ;AX←DS:[BX+SI]

MOV AX,[BP+DI] ;AX←SS:[BP+DI]

MOV AX,DS:[BP+DI] ;AX←DS:[BP+DI]

MOV AX,[BX+SI+06H] ;AX←DS:[BX+SI+06H]



操作数寻址方式是汇编语言的重点和难点。请按如下思路学*:



1. 操作数可以存在什么地方?



⑴ 操作数存在于指令代码中,处理器译码时就立即获得了这个操作数,这就是立即(数)寻址方式。汇编指令中,这个立即数(操作数)以常量形式出现。



⑵ 操作数存在于处理器内部寄存器中,处理器从寄存器中获得这个操作数, 这就是寄存器寻址方式。汇编指令中,这个寄存器操作数以寄存器名形式出现。



⑶ 操作数存在于主存中,处理器从主存单元获得这个操作数,这就是存储器寻址方式。汇编指令中,这个存储器操作数以主存地址形式出现。



2. 8086/8088处理器的主存地址在程序设计时采用逻辑地址。

逻辑地址分成段地址和偏移地址两部分。



3. 存储器寻址方式表达存储器地址时,段地址在默认的或段超越前缀指令指定的段寄存器中,偏移地址被称为有效地址EA(Effective Address)。有效地址用中括号括起来。



4. 有多种获得偏移地址的方法,所以存储器寻址方式又分成多种寻址方式。



⑴ 有效地址直接给出,存在于指令代码中,就是直接寻址方式。



⑵ 有效地址存在寄存器中,就是通过寄存器的间接寻址方式。



⑶ 有效地址是两部分的和,一部分在寄存器中,另一部分直接给出(称为位移量),这就是寄存器相对寻址方式。



⑷ 有效地址是两部分的和,一部分在基址寄存器中(8086是BX和BP),另一部分在变址寄存器中(8086是SI和DI),这就是基址变址寻址方式。



⑸ 有效地址是三部分的和,第一部分在基址寄存器中(8086是BX和BP),第二部分在变址寄存器中(8086是SI和DI),第三部分直接给出(称为位移量),这就是相对基址变址寻址方式。



5. 区别各种寻址方式时,注意各自的特点。



只有一个常量,是立即(数)寻址方式;只有一个寄存器名,是寄存器寻址方式;其他则是存储器寻址方式。用中括号括起一个常量是直接寻址方式;用中括号括起一个寄存器名,是寄存器间接寻址方式;用中括号括起一个寄存器名和一个常量是寄存器相对寻址方式;用中括号括起两个寄存器名是基址变址寻址方式;用中括号括起两个寄存器名和一个常量是相对基址变址寻址方式。



6. 汇编语句中,还有其他形式出现,需要理解相应操作符才能做出正确判断。

例如,直接写出变量名实际上是直接寻址方式;变量名加减一个常量还是直接寻址方式;变量名和一个寄存器则是寄存器相对寻址方式;利用offset后跟一个变量名则是立即数寻址方式。




相关资源:《汇编语言》-第三版-王爽-以及课后答案



友情链接: hackchn文档网 营销文档网 爱linux网 爱行业网 时尚网