汇编5

来源:互联网 发布:vb.net监视变量值 编辑:程序博客网 时间:2024/06/05 10:36
1:目的操作数和源操作数不能同时用存储器寻址方式,这个限制适用于所有指令。:
2:目的操作数DST和源操作数SRC不允许同时为段寄存器;:
3:目的操作数DST不能是CS,也不能用立即数方式。
4:POP指令的DST不允许是CS寄存器




5:用[0]表示一个内存单元时,0表示单元的偏移地址,段地址默认在ds中,单元的长度(类型)可以由具体指令中的其他操作对象(比如说寄存器)指出。


6: 在8086CPU中,只有这4个寄存器可以用在“[…..]”中来进行内存单元的寻址 bx、si、di和bp
     这4个寄存器可以单个出现或只能以四种组合出现;bx和si,bx和di,bp和si,bp和di。
在串处理指令中,SI用作隐含的源串地址,默认在DS中;DI用做隐含的目的串地址,默认在ES中。
 
7: 指令在执行前,所要处理的数据可以在3个地方:CPU内部、内存、端口。
8:当数据存放在内存中的时候,我们可以用多种方式来给定这个内存单元的偏移地址,这种定位内存单元的方法一般被称为寻址方式




指令要处理的数据有多长
 1)        通过寄存器名指明要处理的数据的尺寸:mov ax,1     inc al


2)        在没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte。add word ptr [bx],2   inc byte ptr ds:[0]


3)        其他方法   有些指令默认了访问的是字单元还是字节单元,如 push  [1000H]


 要完整地描述一个内存单元,需要两种信息:


1)        内存单元的地址  :由段寄存器和偏移量给出


2)        内存单元的长度(类型)。




movq:64位数据拷贝,如果内存8位对齐的话,是一个64位写,否则2个32位写。
movd:32位数据拷贝,注意:如果从内存向MMX寄存器拷贝,MMX高32位清零!


l长字4个byte movl 32 W  movq  8个byte 64位数据拷贝,如果内存8位对齐的话,是一个64位写,否则2个32位写。


pushl 32位    pushq  64位  


rbp 64位 ebp 32位
原创粉丝点击