汇编指令的一般性要求: 1、两个操作数的尺寸必须一致; 2、操作数不能同为内存. ;mov ;该指令不影响 EFlags
mov val, 123 PrintDec edx ;123 --------------------------------------------------------------------------------------------------------------- Lea ;该指令不影响 EFlags
.data 让我感到比较困惑的是 lea 的那条居然会输出地址 - - --------------------------------------------------------------------------------------------------------------- XCHG(Exchange): 交换指令 数据交换指令 XCHG 格式: XCHG OPRD1,OPRD2 其中的OPRD1为目的操作数,OPRD2为源操作数 功能: 将两个操作数相互交换位置,该指令把源操作数OPRD2与目的操数OPRD1交换. 说明: 1. OPRD1及OPRD2可为通用寄存器或存储器,但是两个存储器之间是不能用XCHG指令 ---- 实现的. 2. 段寄存器内容不能用XCHG指令来交换. 示例: XCHG AX,BX 注意: 此处通过中间寄存器,也很容易实现两个存储器操作数的交换. 4. 本指令不影响状态标志位. XCHG r/m, r/m --------------------------------------------------------------------------------------------------------------- XLATB(Translate Byte)、XLAT(Translate): 换码指令 查表指令 XLAT/XLATB ;XLATB 可简化为 XLAT
.data mov al, 1 PrintHex al ;42 - 这是 'B' 的 ASSII 编码 --------------------------------------------------------------------------------------------------------------- MOVSX 指令 格式: MOVSX OPD,OPS 功能: 将8位或16位的OPS符号扩展为16位或32位, 再传给OPD.所谓的符号扩展, 就是当 ---- 把一个字节扩展为字或是一字扩展为双字时,高位字节的各位和原数最高位相同,这 可以保证原来用补码表示的数值不变.这条指令一般用于带符号数的扩展. 如果源操作数的最高位是 1, MOVSX 会将目标寄存器中高出的位补 1; 反之补 0 说明: 指令举例 1. MOVSX EAX ,BX
.data |