第4章数据操作 ■4.1传送指令 4.2算术运算 4.3BCD码算术运算 4.4位运算指令
第4章 数据操作 ◼ 4.1 传送指令 ◼ 4.2 算术运算 ◼ 4.3 BCD码算术运算 ◼ 4.4 位运算指令
4.1传送指令 ■实现数据、地址、标志的传送 ■通用数据传送指令 数据交换指令 取地址指令
4.1 传送指令 ◼ 实现数据、地址、标志的传送 ◼ 通用数据传送指令 ◼ 数据交换指令 ◼ 取地址指令
4.1.1通用数据传送指令 1.MOV指令 ■格式: MOV DST,SRC ■功能:DST代表目标操作数,SRC代表源 操作数,DST和SRC的数据类型应该一致
4.1.1 通用数据传送指令 ◼ 1.MOV指令 ◼ 格式:MOV DST, SRC ◼ 功能:DST代表目标操作数,SRC代表源 操作数, DST和SRC的数据类型应该一致
■MOV指令中操作数的类型 (1)常数,也叫立即数 (2)通用寄存器 (3)内存操作数 (4)段奇存器
◼ MOV指令中操作数的类型: ◼ (1)常数,也叫立即数 ◼ (2)通用寄存器 ◼ (3)内存操作数 ◼ (4)段寄存器
举例: mo dvar,20;①立即数->内存操作数 MOV EAX,20;②立即数一>通用寄存器 ■ MOV EDI,ESI;③通用寄存器→>通用寄存器 ■ MOV EDI,[EBX4];④内存操作数->通用 寄存器 MOV[EAX+4],EBX;④通用寄存器->内存 操作数
举例: ◼ MOV dVar, 20; ① 立即数 -> 内存操作数 ◼ MOV EAX, 20 ; ② 立即数 -> 通用寄存器 ◼ MOV EDI,ESI; ③ 通用寄存器->通用寄存器 ◼ MOV EDI,[EBX+4]; ④ 内存操作数 -> 通用 寄存器 ◼ MOV [EAX+4],EBX; ④ 通用寄存器 -> 内存 操作数
举例(续): MOV BX,CS;⑤段寄存器一〉通用寄存器 ■ MOVDS,AX;⑤通用寄存器一>段寄存器 ■ MOVWORD PTR[EAX],DS;⑥段寄存器-> 内存操作数 MOVES, WORD PTR DS:[0080H;⑥内存操作 数一>段寄存器
举例(续): ◼ MOV BX, CS; ⑤ 段寄存器 -> 通用寄存器 ◼ MOVDS, AX; ⑤ 通用寄存器 -> 段寄存器 ◼ MOVWORD PTR [EAX], DS ; ⑥ 段寄存器 -> 内存操作数 ◼ MOVFS, WORD PTR DS:[0080H]; ⑥ 内存操作 数-> 段寄存器
MOV指令限制 ■不能直接在两个内存操作数之间传送 ■立即数不能直接送段寄存器 立即数不能作为目标操作数 两个段寄存器之间不能直接传送 ■CS段寄存器不能作为目标操作数
MOV指令限制 ◼ 不能直接在两个内存操作数之间传送 ◼ 立即数不能直接送段寄存器 ◼ 立即数不能作为目标操作数 ◼ 两个段寄存器之间不能直接传送 ◼ CS段寄存器不能作为目标操作数
■2. MOVZX指令 ■格式: MOVZX DST,SRC 功能:将SRC传送给DST 高位不足的部分用0填充 SRC不能是立即数
◼ 2.MOVZX指令 ◼ 格式:MOVZX DST,SRC ◼ 功能:将SRC传送给DST 高位不足的部分用0填充 SRC不能是立即数
DST是16位操作数时,SRC必须是8位操作数 SRC作为DST的低8位,DST的高8位设为0。 ■DST是32位操作数时,SRC可以是8位或16位操 作数。 SRC作为DST的低8位或低16位,DST的高24位或 高16位为0
◼ DST是16位操作数时,SRC必须是8位操作数。 SRC作为DST的低8位,DST的高8位设为0。 ◼ DST是32位操作数时,SRC可以是8位或16位操 作数。 SRC作为DST的低8位或低16位,DST的高24位或 高16位为0
■3. MOVSX指令 ■格式: MOVSX DST,SRC 功能:将SRC传送给DST,高位不足的部分 用SRC的符号位(最高位)填充 SRC不能是立即数
◼ 3.MOVSX指令 ◼ 格式:MOVSX DST,SRC ◼ 功能:将SRC传送给DST,高位不足的部分 用SRC的符号位(最高位)填充。 SRC不能是立即数