您的位置:首页 > 其它

常用汇编数据传输指令

2017-03-11 17:24 375 查看
数据传输指令:它们在存储器和寄存器、寄存器和输入输出端口之间传送数据。

1,通用数据传送指令

mov传送字或字节

movsx先符号扩展,在传送

movzx 先0扩展,再传送

push把字压入堆栈

pop把字弹出堆栈

pusha 把ax,cx,dx,bx,sp,bp,si,di依次压入堆栈

popa把di,si,bp,sp,bx,dx,cx,ax依次弹出堆栈

pushad把eax,ecx,edx,ebx,esp,ebp,esi,edi依次压入堆栈

popad把edi,esi,ebp,esp,ebx,edx,ecx,eax依次弹出堆栈

bswap交换32位寄存器里面字节的顺序

xchg交换字或字节(至少有一个操作数为寄存器,段寄存器不可作为操作数)

cmpxchg比较并交换操作数(第二个操作数必须为累加器al/ax/eax)

xadd先交换在累加(结果在第一个操作数理)

xlat字节查表转换——bx指向一张256字节的表的起点,

al为表的索引值(0-255,即0-FFH)

返回al为查表结果([bx +al]->al)

2,输入输出端口传送指令

inI/O端口输入(语法:in 累加器; {端口号 | dx})

out  I/O端口输出(语法:out {端口号 | dx}; 累加器)

输入输出端口

由立即方式指定时,其范围是0-255;

由寄存器dx指定时,其范围是0-65535

3,目的地址传送指令

lea装入有效地址
例:lea dx, string; 把偏移地址存到dx

lds传送目标指针,把指针内容装入ds
例:lds si, string; 把段地址:偏移地址存到ds:si

les传送目标指针,把指针内容装入es
例:les di,string; 把段地址:偏移地址存到es:dl

lfs传送目标指针,把指针内容装入fs
例:lfs di,string; 把段地址:偏移地址存到fs:dl

lgs传送目标指针,把指针内容装入gs
例:lgs di,string; 把段地址:偏移地址存到gs:dl

lss传送目标指针,把指针内容装入ss
例:lss di,string; 把段地址:偏移地址存到ss:dl

4,标志传送指令

lahf标志寄存器传送,把标志装入ah

sahf标志寄存器传送,把ah内容装入标志寄存器

pushf标志入栈

popf标志出栈

pushd32位标志入栈

popd32位标志出栈
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息