前缀指令
一、指令编码(硬编码)的结构

Up to four prefixes of 1 byte each optional:最多有四个前缀指令,每组最多一个字节
二、前缀指令的分组
LOCK和REPEAT前缀指令
- LOCK F0
(锁地址总线)如果再汇编指令中加上 LOCK ,当前这个地址,在多个CPU执行的时,某个时刻只能有一个核CPU能读这个地址(在多核下才有意义) - REPNE/REPNZ F2
重复执行后面的某一个指令(ZF标志位为0时执行) - REP/REPZ F3
重复执行后面的某一个指令(ZF标志位为0时执行)
段前缀指令(明确告诉CPU使用哪个段,ESP/EBP默认使用SS段寄存器,默认全局地址使用DS段寄存器)
- CS(2E)(CS寄存器中有个db位决定着CPU是32(为1)位状态还是16(为0)位状态)
- SS(36)
- DS(3E)
- ES(26)
- FS(64)
- GS(65)
操作数宽度前缀指令
- 66
改变操作数的默认宽度32(EBP)->16(BP),反之一样
地址宽度前缀指令
- 67
改变寻址方式(32位与16位的寻址方式不同)
32位:MOV DWORD PTR SS:[EBP-18],ESP
16位:MOV DWORD PTR DS:[DI+FFE8],ESP
三、总结
前缀指令没有顺序要求,直接在最前面添加需要的指令即可,最少0个最多四个,每组最多使用一个,同时,原本是32位寻址,加上67就是16位寻址,反之亦然,66也是如此

浙公网安备 33010602011771号