汇编中的通用数据传送类指令
2015-04-08 22:04
176 查看
基于IA-32处理器和32位汇编语言
1 通用数据传送指令
数据传送MOV指令:
形式:MOV 目的操作数,源操作数
数据交换XCHG指令:
形式:XCHG 操作数,操作数
其中,XCHG EAX,EAX等同于NOP,也就是空操作指令。
2 堆栈操作指令
SS段寄存器指向段基地址,ESP寄存器指向栈顶地址。
堆栈的数据单位是字或双字。
进栈指令PUSH
形式:PUSH SRC
分两步:先将ESP减4(2),再把数据存入堆栈中。
出栈指令POP
形式:POP DEST
分两步:先将堆栈中的数据取出给DEST,再将ESP加4(2)。
3 换码指令
XLAT。在执行之前,准备工作是将EBX指向缓冲区的首地址,并给AL赋值为距离缓冲区开始的位移量。接下来执行,将EBX+AL所指的地址中的内容给AL,实现换码。这是默认缓冲区在DS中,如果有段超越,则要说明变量名和段超越指令前缀。
4 标志传送指令
CLC:将CF置0。
STC:将CF置1。
CMC:将CF反转。
CLD:将DF置0。
STD:将DF置1。
CLI:将IF置0。
STI:将IF置1。
5 地址传送指令
LEA。形式:LEA R16/R32 变量
它将变量的偏移地址给16位或32位寄存器。
注意:OFFSET也是取 地址的,并且它在编译阶段就计算了地址,而LEA在执行时才计算地址。因此OFFSET的效率高些。但是在编译阶段如果算不出 地址,就只能使用LEA指令了。
以上就是我对于数据传送类指令的认识。
1 通用数据传送指令
数据传送MOV指令:
形式:MOV 目的操作数,源操作数
数据交换XCHG指令:
形式:XCHG 操作数,操作数
其中,XCHG EAX,EAX等同于NOP,也就是空操作指令。
2 堆栈操作指令
SS段寄存器指向段基地址,ESP寄存器指向栈顶地址。
堆栈的数据单位是字或双字。
进栈指令PUSH
形式:PUSH SRC
分两步:先将ESP减4(2),再把数据存入堆栈中。
出栈指令POP
形式:POP DEST
分两步:先将堆栈中的数据取出给DEST,再将ESP加4(2)。
3 换码指令
XLAT。在执行之前,准备工作是将EBX指向缓冲区的首地址,并给AL赋值为距离缓冲区开始的位移量。接下来执行,将EBX+AL所指的地址中的内容给AL,实现换码。这是默认缓冲区在DS中,如果有段超越,则要说明变量名和段超越指令前缀。
4 标志传送指令
CLC:将CF置0。
STC:将CF置1。
CMC:将CF反转。
CLD:将DF置0。
STD:将DF置1。
CLI:将IF置0。
STI:将IF置1。
5 地址传送指令
LEA。形式:LEA R16/R32 变量
它将变量的偏移地址给16位或32位寄存器。
注意:OFFSET也是取 地址的,并且它在编译阶段就计算了地址,而LEA在执行时才计算地址。因此OFFSET的效率高些。但是在编译阶段如果算不出 地址,就只能使用LEA指令了。
以上就是我对于数据传送类指令的认识。
相关文章推荐
- 汇编(九)——数据传送类指令四
- c实现汇编数据传送类指令(单片机存储器编址模式)
- 汇编(七)——数据传送类指令二
- 通用X86指令(1,数据传输)
- 汇编(五)——数据传送指令一
- 13_ARM汇编自学笔记指令系统之批量数据加载存储指令
- 汇编语言--指令和数据
- 单片机数据传送类指令-理解
- (2011.11.06)汇编语言第03章习题(数据传送指令)
- 汇编中如何片段CPU取得是数据还是指令
- 32位汇编语言学习笔记(2)--数据传送指令
- 汇编--学习笔记(七)-数据传送指令
- [汇编]8086指令系统---数据传送指令
- 8086汇编 数据传送指令
- 汇编_获取数据_指令跳转
- 汇编与接口:数据传送指令
- 常用汇编数据传输指令
- 8086汇编学习之寻址方式、数据类型以及几个数据操作指令
- 1.2.17、ARM汇编指令集:数据传输和跳转指令详解
- 汇编语言中把数据打印到屏幕上的指令是什么啊?急求答案