C++之汇编寻址

来源:互联网 发布:如何查看域名对应的ip 编辑:程序博客网 时间:2024/06/15 21:40

什么叫寻址:

 

在指令中,指定操作数或操作数存放位置的方法称为寻址方式,所谓的操作数就是你要指定的这个数的值,存放位置就是你想把那个数放到哪个位置上;也就是说一个正常的10进制数有他的值,和他的值所在的寄存器位置,我们寻址就是要知道这个十进制数在寄存器中的值或位置;

 

立即数寻址

 

现在来看一个汇编指令:MOV AX,8H,这里的AX是数据寄存器,8H是一个16进制的数,也就是十进制的8,也就是16cpu的二进制0000 00000000 1000,也就是MOV AX0000 00000000 1000,也就是说直接把8H当作MOV指令中的一部分了,这样8H我们就叫他立即数,MOV AX8H就是立即寻址了,这里是对数据寄存器AX赋初值;

 

寄存器寻址

 

指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式;

寄存器寻址是一种简单快捷的寻址方式,目标源和目的操作数都可以是寄存器;

如上面所写的立即寻址MOV AX,8H,这里已经把里技术8H放到了寄存器AX里面,现在我们要把寄存器AX的值放到BX里面就可以这样写,MOV BX,AX,这里AX是有初始值的寄存器,所以这理就可以叫做寄存器寻址;

 

直接寻址

 

指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式

 

现在来看一个例子:MOV BX [8H];这里的8H是一个地址,是一个存放在数据段寄存器的地址,意思是把0000 0000 00001000放到寄存器BX里面,此时8H的值就传送到了BX里面了,现在我们来一个说话式操作,假如在执行MOV指令时我的数据段寄存器是DS=8H,此时内存地址就是88H值位2H,此时BX的值就是2H