汇编语言复习资料天津大学王建荣

沐浅 分享 2025-6-12 下载文档

dVal DWORD 5 .code

mov ds,45 ;immediate move to DS not permitted mov esi,wVal ;size mismatch

mov eip,dVal ;EIP cannot be the destination mov 25,bVal ;immediate value cannot be destination mov bVal2,bVal ;memory-to-memory move not permitted

3.MOVZX指令(move with zero-extend,零扩展传送)

指令将源操作数的内容复制到目的操作数中,并将该值零扩展至16位或32 位。

该指令只适用于无符号数。 三种格式:

Movzx r32,r/m8 Movzx r32,r/m16 Movzx r16,r/m8

用例:

mov bl,10001111b

movzx ax,bl ; zero-extension

01 0 0 0 1 1 1 1Source0 0 0 0 0 0 0 01 0 0 0 1 1 1 1Destination4.MOVSX指令(move with sign-extend,符号扩展传送)

指令将源操作数的内容复制到目的操作数中,并将该值符号扩展至16位或 32位。该指令只适用于有符号数。三种格式:

Movsx r32,r/m8 Movsx r32,r/m16 Movsx r16,r/m8

用例:

mov bl,10001111b

movsx ax,bl ; sign extension

5

1 0 0 0 1 1 1 1Source

1 1 1 1 1 1 1 11 0 0 0 1 1 1 1Destination5.XCHG指令

指令交换两个操作数内容。 规则:不接受立即操作数

除此之外,与MOV指令遵循同样规则。 用例: .data

var1 WORD 1000h var2 WORD 2000h .code

xchg ax,bx ; exchange 16-bit regs xchg ah,al ; exchange 8-bit regs xchg var1,bx ; exchange mem, reg xchg eax,ebx ; exchange 32-bit regs

xchg var1,var2 ; error: two memory operands

6.直接偏移操作数

在变量名称后加上一个偏移值,可以创建直接偏移(direct-offset)操作数,可以通过它访问没有显示标号的内存地址。

字节数组,字数组,双字数组的第二个元素与第一个元素的偏移相距分别为1,2,4字节

练习题: .data

6

var1 SBYTE -4,-2,3,1

var2 WORD 1000h,2000h,3000h,4000h var3 SWORD -16,-42 var4 DWORD 1,2,3,4,5

下列每条指令安顺序执行后,目的操作数的值是什么? mov ax,var2 ;1000h mov ax,[var+4] ;3000h mov ax,var3 ;FFF0h mov ax,[var3-2] ;4000h

mov edx,var4 ;00000001h mov edx,var2 ;00001000h mov edx,[var4+4] ;00000002h mov edx,var1 ;FFFFFFFCh

二、加法和减法

1、INC 和DEC 指令

Add 1, subtract 1 from destination operand,operand may be register or memory

INC Logic: destination ? destination + 1 DEC Logic: destination ? destination – 1 格式:

INC reg/mem DEC reg/mem 用例: .data

myWord WORD 1000h

myDword DWORD 10000000h .code

inc myWord ; 1001h dec myWord ; 1000h

inc myDword ; 10000001h

mov ax,00FFh

inc ax ; AX = 0100h mov ax,00FFh

inc al ; AX = 0000h

练习题:

7

.data

myByte BYTE 0FFh, 0 .code

mov al,myByte ; AL =FFh mov ah,[myByte+1] ; AH =00h dec ah ; AH =FFh inc al ; AL =00h dec ax ; AX = FEFF

3.ADD and SUB指令

ADD destination, source

Logic: destination ? destination + source SUB destination, source Logic: destination ? destination – source 用例: .data

var1 DWORD 10000h var2 DWORD 20000h

.code ; ---EAX--- mov eax,var1 ; 00010000h add eax,var2 ; 00030000h add ax,0FFFFh ; 0003FFFFh add eax,1 ; 00040000h sub ax,1 ; 0004FFFFh

4.NEG指令

Reverses the sign of an operand. Operand can be a register or memory operand.

格式: NEG reg NEG mem 用例: .data

valB BYTE -1 valW WORD +32767 .code

mov al,valB ; AL = -1

8


汇编语言复习资料天津大学王建荣.doc 将本文的Word文档下载到电脑
搜索更多关于: 汇编语言复习资料天津大学王建荣 的文档
相关推荐
相关阅读