好文档 - 专业文书写作范文服务资料分享网站

汇编语言常见指令

天下 分享 时间: 加入收藏 我要投稿 点赞

?PTR?操作符 :强制类型转换 MOV BYTE PTR [BX], 20H ;1B立即数20H送DS:[BX] MOV WORD PTR [BX], 20H ;立即数20H送DS:[BX], ;00H送DS:[BX+1] 2.LEA(Load Effective Address)

设:变量X的偏移地址为1020H , (BP)=0020H 执行指令后:

LEA DX, X LEA BX, [BP]

; 执行后, (DX) = 1020H ; 执行后, (BX) = 0020H 3.地址传送指令LDS,LES LDS REG16, MEM ; 从存储器取出4B,送入REG16和DS LES REG16, MEM ; 从存储器取出4B,送入REG16和ES 4. 符号扩展指令CBW,CWD CBW ;将AL寄存器内容符号位扩展到AH CWD ;将AX寄存器内容符号位扩展到DX 设:(AX)= 8060H,(DX)=1234H 执行下列指令后 CBW ;(AX)= 0060H 设:(AX)= 8060H,(DX)=1234H 执行下列指令后 CWD ;(DX)= 0FFFFH,(AX)= 8060H 5.交换指令XCHG 例如,(AX)= 5678H 执行下面指令后 XCHG AH, AL ;(AX)= 7856H 6.换码指令XLAT

XLAT ;AL←DS: [BX+AL]

表格的首地址事先存放在内存逻辑地址DS: BX中, AL的内容是相对于表格的位移量,

把对应内存的内容取出放在AL寄存器。 7. 逻辑运算符 SHR(右移) SHL(左移) AND(与) OR(或) XOR(异或)

NOT(取反 8.关系运算符

关系运算符用于两个数的比较,结果为?真(-1)?或?假(0)? GT(>) GE(>=) LT(<) LE(<=) EQ(=) NE(≠) 9.地址运算符

SEG 名称 取地址表达式所在段的段基址 OFFSET 名称 取地址表达式的偏移地址 10.类型操作符 TYPE:

取每个变量的字节数 LENGTH:

取变量定义了多少个 SIZE:

取变量占用的字节总数 11.加法指令

(1)ADD(Addition):加法指令 格式:ADD dest,src

功能:dest ←dest + src dest(目的操作数):8/16位的寄存器/存储器操作数 src(源操作数):与目的操作数同类型的寄存器/存储器/立即数 例: ADD AX, SI ; AX←(AX)+(SI),16位运算 ADD X, 3 ; X←(X)+3, 运算位数由X的类型确定 ADD [BX], DX ; DS:[BX]←DS:[BX]+DX, 16位运算 说明:

? 状态标志CF, OF, ZF, SF, PF, AF按照运算结果被刷新; (2)ADC(Addition with Carry):带进位的加法指令 格式:ADC dest,src 功能:dest←dest+src+CF dest(目的操作数):8/16位的寄存器/存储器 src(源操作数):与目的操作数同类型的寄存器/存储器/立即数 说明:

? 状态标志CF, OF, ZF, SF, PF, AF按照运算结果被刷新; ? 主要用于对数据分段相加时高位的加法运算。 (3)INC(Increment):加一指令 格式:INC dest 功能:dest←dest+1 dest(目的操作数):8/16位的寄存器/存储器 例: INC X

;X←(X)+1,运算位数由X的类型确定 INC WORD PTR [BX] ;DS:[ BX] ←DS:[ BX]+1,16位运算 说明:

? 会影响标志OF, ZF, SF, PF, AF,但是CF标志不受影响; ? 增量指令常常用来修改计数器和存储器指针的值。 12.减法指令

(1)SUB(Subtract):减法指令 格式:SUB dest,src

功能:dest ← dest-src

dest(目的操作数):8/16位的寄存器/存储器

src(源操作数):与目的操作数同类型的寄存器/存储器/立即数 例:

SUB Y, 20H ;Y←(Y)-20H,运算位数由Y的类型确定 SUB WORD PTR [BP], 5 ;SS:[ BP] ←SS:[ BP]-5,16位运算 说明:会影响CF, OF, ZF, SF, PF, AF 标志位。 (2)SBB(Subtract with Borrow):带借位的减法指令 格式:SBB dest,src

功能:dest←dest-src-CF

dest(目的操作数):8/16位的寄存器/存储器

src(源操作数):与dest同类型的寄存器/存储器/立即数 说明:

? 会影响CF, OF, ZF, SF, PF, AF 标志位;

? 主要用于对一个数据分段相减时高位的减法运算 (3)DEC(Decrement):减一指令 格式:DEC dest 功能:dest←dest-1

dest(目的操作数):8/16位的寄存器/存储器 例:DEC CX ;CX←(CX) -1,16位运算

DEC X ;X←(X)-1,运算位数由X的类型确定 说明:

? 会影响标志OF, ZF, SF, PF, AF,但是CF标志不受影响; ? 减量指令常常用来修改计数器和存储器指针的值。 (4)NEG(Negate):求补指令(求相反数) 格式:NEG dest 功能:dest←0-dest dest(目的操作数):8/16位的寄存器/存储器 例: NEG Z ;Z←-Z,运算位数由Z的类型确定

说明:

会影响标志OF, ZF, SF, PF, AF, CF

13.乘法指令

(1)MUL(Unsigned Multiplication):无符号数乘法 格式:MUL src

src(源操作数):8位/16位的寄存器/存储器 功能:8位源操作数时:AX←(AL)×源操作数 16位源操作数时:DX, AX←(AX)×源操作数

说明:

? 两个N位操作数相乘,得到2N位的乘积;

? 如果乘积的高N位为0,则CF=OF=0,否则CF=OF=1。其余

标志位无意义。 ? 上述说明中N=8或16。

(2)IMUL(Signed Integer Multiplication):有符号数乘法 格式:IMUL src

src(源操作数):8位/16位的寄存器/存储器 功能:8位源操作数时:AX←(AL)×源操作数 16位源操作数时:DX, AX←(AX)×源操作数 说明:

? 两个N位操作数相乘,得到2N位的乘积;

? 如果乘积高N位为低N位的符号扩展,则CF=OF=0,否则

CF=OF=1,其余标志位无意义。 ? 上述说明中N=8或16。

14.除法指令:

DIV(Unsigned Division):无符号除法 格式:DIV src

src(源操作数):8位/16位的寄存器/存储器

功能:8位源操作数时: (AX)÷源操作数,AL←商,AH←余数 16位源操作数时:(DX, AX)÷源操作数,AX←商,DX←余数 说明:

? 两个N位操作数相除,应首先把被除数零扩展为2N位; 例如,要进行除法(AX)÷(BX),假设AX、BX内均为无符号数: MOV DX, 0 ;32位被除数高16位清零 DIV BX ;(DX, AX)÷BX,AX←商,DX←余数

N

? 如果(2N位)÷(N位)的商大于2-1,会产生?除法溢出?错误。 ? 上述说明中N=8或16。 IDIV(Signed Integer Division):有符号数除法 格式:IDIV src

src(源操作数):8位/16位的寄存器/存储器

功能: 8位源操作数时:(AX)÷源操作数,AL←商,AH←余数 16位源操作数时:(DX, AX) ÷源操作数,AX←商,DX←余数

15.基本循环指令 格式:LOOP 标号 功能:CX←(CX)-1 如果(CX)≠ 0,转向?标号?处执行,否则执行下一条指令。 说明:

? LOOP可以改变指令的执行次序,称为?控制转移指令?; ? LOOP指令使一段程序重复地执行,称为?循环?。

? 重复执行的次数由CX寄存器中的值决定。CX寄存器因此称为

?计数器?。

16.DEBUG.EXE常用命令

? 反汇编

‘-U ’ 、 ‘-U 偏移地址’

? 显示寄存器内容

‘-R ’ 、 ‘-R 寄存器名’

? 单步执行指令

‘-T ’ 、 ‘-T 指令条数’ 、 ‘-P ’

? 全速执行指令

‘-G ’ 、 ‘-G 终止地址’、 ‘-G=起始地址’ ‘-G=起始地址 终止地址’

? 显示数据段内容

‘-D ’ 、 ‘-D 起始地址’、 ‘-D 起始地址L字节数’

? 修改数据段内容

‘-E 起始地址 数据1 数据2 …’

‘-F 起始地址L字节数 数据1 数据2 …’

? 退出 ‘-Q ’

17.移位指令

SHL逻辑左移,最高位进入CF,最低位补0 SHR 逻辑右移,最低位进入CF,最高位补0 SAL 算术左移,最高位进入CF,最低位补0 SAR 算术右移,最低位进入CF,最高位不变 18.循环移位指令

ROL 不带进位循环左移 ROR 不带进位循环右移 RCL 带进位循环左移 RCR 带进位循环右移

18.无条件转移指令

? ⑴ 段内转移、直接寻址 ? ⑵ 段内转移、间接寻址 ? ⑶ 段间转移、直接寻址 ? ⑷ 段间转移、间接寻址

汇编语言常见指令

?PTR?操作符:强制类型转换MOVBYTEPTR[BX],20H;1B立即数20H送DS:[BX]MOVWORDPTR[BX],20H;立即数20H送DS:[BX],;00H送DS:[BX+1]2.LEA(LoadEffectiveAddress)设:变量X的偏移地址为1020H,(BP)=0020H执行指令后:
推荐度:
点击下载文档文档为doc格式
3o5s15nvnw55t2h95x553fre38hic9011bb
领取福利

微信扫码领取福利

微信扫码分享