汇编语言学习笔记

4.3基本汇编指令(表4-1)
4.3.1 数据、栈及查表
1.MOV传送指令
MOV传送指令是双操作数指令,SRC为源操作数、DST为目的操作数。要求两个操作数的属性必须一致。
格式:MOV DST,SRC
目的操作数,源操作数
2. 数据交换指令XCHG
XCHG指令是双操作数指令,指令的功能是将两个操作数的内容互换。
格式:XCHG OPR1,OPR2
3.进栈和出栈指令
(1)PUSH进栈指令
格式: PUSH SRC
执行操作:(SP)←(SP)-2
((SP)+1,(SP))←(SRC)
先将堆栈指针SP减2,再将操作数SRC入栈。要求SRC必须是字。
PUSH AX
(2)POP出栈指令
格式: POP DST
执行操作:(DST) ←((SP)+1,(SP))
(SP)←(SP)+2
将堆栈指针所指字单元的内容弹到操作数DST中,再将SP加2。
POP AX

4.3.2 逻辑地址的获得
1. LEA有效地址传送指令
格式:LEA 寄存器,存储单元
功能:将存储单元的有效地址传送给寄存器。其作用与伪指令OFFSET操作符的作用一样。
例 LEA BX,TABLE
LEA DX,[BX]
2.LDS数据段地址传送指令
格式:LDS 寄存器,双字存储单元
功能:将双字单元中的低字送入寄存器,高字传送给DS数据段寄存器。

例 指令执行前:已知
(DS)=1300H,(BX)=0032H,
(13032H)=3504H,(13034H)=2936H,
执行指令:
LDS SI,[BX]
指令中源操作数的有效地址
EA=(BX)=0032H
物理地址
=(DS)×10H+EA=1300H×10H+0032H=13032H
将存储单元中的第一个字3504H送入SI,第二个字2936H送入DS。
指令执行后:
(SI)=3504H,(DS)=2936H
4.3.4 双精度数运算
1.ADD加法指令
格式:ADD DST,SRC
功能:目的操作数和源操作数相加,结果再放入目的操作数DST。
2. ADC带进位加法指令
格式:ADC DST,SRC
功能:目的操作数加上源操作数再加上进位标志CF,结果放入目的操作数DST。
3.INC加1指令
格式:INC OPR
功能:将操作数OPR加1

减法指令
1.SUB减法指令
格式:SUB DST,SRC
功能:目的操作数减源操作数,结果再放入目的操作数DST。
2.SBB带借位减法指令
格式:SBB DST,SRC
功能:目的操作数减去源操作数后再减去进位标志CF,结果放入目的操作数DST。
SBB带借位减法指令一般用在双精度减法操作中。
3.DEC减1指令
格式:DEC OPR
功能:将操作数OPR减1
4.NEG求补指令
格式:NEG OPR
功能:将操作数求反加1。即求补操作。
利用NEG指令可以求负数的绝对值。
5.CMP比较指令
格式:CMP OPR1,OPR2
功能:将两个操作数作相减运算,结果不回送,改变标志位。通常后跟条件转移指令,根据CMP比较之后标志位的值进行转移。

乘法指令
1.MUL无符号数乘法指令
乘法指令是单操作数指令。
字节乘法的8位被乘数隐含在AL中,
字乘法的16位被乘数隐含在AX;乘数写在指令中。
(1)字节乘法
格式:MUL SRC
功能:(AX)←(AL)×(SRC)
执行的操作:将AL与字节型源操作数SRC相乘,乘积放入AX寄存器。即两个8位数相乘,乘积为16位数。
(2)字乘法
格式:MUL SRC
功能:(DX、AX) )←(AX)×(SRC)
执行的操作:
将AX与字型源操作数SRC相乘,乘积放入DX、AX寄存器,即乘积为双精度数。
2.IMUL带符号数乘法指令
与无符号数乘法指令格式一样,但是指令的操作码改为IMUL。执行带符号数乘法指令时,系统将把操作数作为补码进行运算。
(1)字节乘法
格式:IMUL SRC
(2)字乘法
格式:IMUL SRC

除法指令
1.DIV无符号数除法指令
除法指令也是单操作数指令。
字节除法的16位被除数隐含在AX中,8位除数在指令中;
字除法的32位被除数隐含在DX、AX,16位除数写在指令中。
(1)字节除法
格式:DIV SRC
功能:(AL)←(AX)/(SRC)的商
(AH)←(AX)/(SRC)的余数
执行的操作:
16位被除数AX与8位源操作数SRC相除,8位的商放入AL寄存器,8位余数在AH寄存器中。
(2)字除法
格式:DIV SRC
功能:(AX)←(DX、AX)/(SRC)的商
(DX)←(DX、AX)/(SRC)的余数
执行的操作:
32位被除数DX、AX与16位源操作数SRC相除,16位的商放入AX寄存器,16位余数在DX寄存器中。
2.IDIV带符号数除法指令
指令的操作码为IDIV。指令格式与无符号数除法一样。
执行带符号数除法指令时,系统把操作数作为带符号数补码进行运算,商和余数也都是带符号数。
(1)字节除法
格式:IDIV SRC
(2)字除法
格式:IDIV SRC

你可能感兴趣的:(开发语言)