汇编学习(十三)8086汇编拾遗 (12)

本文详细介绍了X86汇编语言中的多种指令,包括xchg交换指令、imul有符号乘法、idiv有符号除法等,并对每种指令的功能及使用限制进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

王爽的《汇编语言》虽然结束了,但是我们的思考还要继续,结下来就要进入X86汇编语言的学习了,但是思考还要继续。

指令拾遗,其实指令还有太多,这里只能写一些有限的:

xchg:   交换指令,寄存器和内存变量之间的内容的交换指令,两个交换的数据类型要相同。

需要注意的4个地方:

1.不能同时为内存操作数

2.任何一个操作数不能为段寄存器

3.任何一个操作数不能为立即数

4.两个操作数的长度不能不相等

imul :有符号乘法,将被乘数与乘数君作为有符号数

idiv :有符号除法

aaa:  AAA指令将AL调整为一个非雅锁BCD格式的数字,AL是两个非压缩BCD数字相加后的结果。

xor:   异或运算

test:    Test命令将两个操作数进行逻辑与运算,并根据运算结果设置相关的标志位。但是,Test命令的两个操作数不会被改变。运算结果在设置过相关标记位后会被丢弃。

sal:      该指令可用来实现算术左移操作。移位量用单个字节编码。移位量可以是一个立即数,或者放在单字节寄存器元素 CL 中。此外SHL( Shift Logical Left ) 逻辑左移指令与 SAL 的效果是一样的。都是将右边填上0

rol:       指令功能:把目的地址中的数据循环左移COUNT次,每次从最高位(最左)移出的数据位都补充到最低位(最右),最后从最高位(最左)移出的数据位保存到CF标志位。

rcr:        汇编指令RCR基本含义用带进位的右移,就是RCR右移时把操作数的最低位移入CF,而CF中原有内容移入操作数的最高位

clc:         CLC执行的操作:将进位位CF清零,即CF=0.

cmc:       进位求反

stc:         将进位表示CF设置为1

hlt:          使程序停止运行,处理器进入暂停状态,不执行任何操作,不影响标志。当复位(外语:RESET)线上有复位信号、CPU响应非屏蔽中断、CPU响应可屏蔽中断3种情况之一时,CPU脱离暂停状态,执行HLT的下一条指令。

wait:          当芯片引线TEST为高电平时使CPU进入等待状态

esc:           换码指令

lock:          封锁总线

cmps:          对比字符串

scas:              SCAS指令用于搜索一个特定的字符或字符串中的字符集。要搜索的数据项应该是在AL,AX(SCASW)或EAX寄存器(SCASD)的(SCASB)。被搜索的字符串应该是在内存中,并指出由ES:DI(或EDI)寄存器。

stos:          将ACC 的内容传入到es:di 中

REPE/REPZ   当ZF=1或比较结果相等,且CX/ECX<>0时重复.
REPNE/REPNZ  当ZF=0或比较结果不相等,且CX/ECX<>0时重复.

查看原文:http://zmrlinux.com/2016/06/03/%e6%b1%87%e7%bc%96%e5%ad%a6%e4%b9%a0%ef%bc%88%e5%8d%81%e4%b8%89%ef%bc%898086%e6%b1%87%e7%bc%96%e6%8b%be%e9%81%97-12/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值