王爽的《汇编语言》虽然结束了,但是我们的思考还要继续,结下来就要进入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/
还没有评论,来说两句吧...