小白汇编入门(续)

目录

第三章 8086指令系统

3.2寻址方式

3.2.1操作数的寻址方式

1)直接寻址方式          MOV  AX,DS:[0010H]

2)寄存器间接寻址方式    MOV DX,[SI]

 3)寄存器相对寻址方式

4)基址变址寻址方式

5)相对基址变址寻址方式

3.2.2转移地址的寻址方式 

3.3指令系统

3.3.1数据传送类指令

MOV 指令

 XCHG 指令

LEA指令

XLAT指令

PUSH 和POP指令

PUSH指令

 POP指令

 IN 指令和OUT指令

IN指令

OUT指令

完整逻辑地址传送指令

 3.3.算术运算类指令

ADD 加法指令

ADC指令

INC指令

减法类指令

SUB指令

 SBB指令

DEC指令

CMP指令

NEG指令

乘法类指令

MUL指令

 IMUL指令

除法类指令

DIV指令

IDIV指令

3.3.3 逻辑运算与移位操作类指令

AND指令

OR指令

XOR指令

NOT指令

第三章 8086指令系统

本篇为续篇,篇一地址

3.2寻址方式

3.2.1操作数的寻址方式

1)直接寻址方式          MOV  AX,DS:[0010H]

特点:在描述操作数的地址时直接表示出操作数的偏移地址

例:若(DS)=2014H, (20150H)=52H,(20151H)=16H指令MOV AX,DS:[0010H]执行后(AX)=?

由题可知DS:为数据段前缀,0010H为偏移地址

2)寄存器间接寻址方式    MOV DX,[SI]

特点:以某个16位寄存器的内容作为操作数的偏移地址

例:设(DS)= 3010H,(30220H)= 0AH,(30221H)= 28H,指令序列

MOV   SI,0120H

MOV  DX,[SI]

执行后,(DX)=?

 3)寄存器相对寻址方式

MOV CH,[SI+06H]  MOV CH,[SI-10H]

特点:操作数地偏移地址产生方式为:偏移地址=(16位寄存器)+D

表示为:[16位寄存器+D]或D[16位寄存器]16位寄存器只能是:SI、DI、BX、BP

设(DS)=2450H,(SI)=0030H,(24536H)=78H,(24520H)=64H,执行以下指令的结果

MOV  CH,[SI+06H]

MOV  CH,[SI-10H]

4)基址变址寻址方式

MOV  AL,[BX+SI]

特点:BX、BP也称为基址寄存器,SI、DI又称变址寄存器

操作数的偏移地址产生方式为:偏移地址=(基址寄存器)+(变址寄存器)

指令表示为:[基址寄存器+变址寄存器] 或:[基址寄存器][变址寄存器]

5)相对基址变址寻址方式

MOV  AL,[BX+SI+ARR]

特点:操作数的偏移地址产生方式为:

偏移地址=(基址寄存器)+(变址寄存器)+D

指令表示为:[基址寄存器+变址寄存器+D] 或:D[基址寄存器][变址寄存器]

3.2.2转移地址的寻址方式 

3.3指令系统

3.3.1数据传送类指令

MOV 指令

指令格式: MOV  DST,SRC  

指令功能:DST (SRC)

MOV 指令是常用的数据传送指令,其传送对象可以是数据也可以是地址。

注意:

 XCHG 指令

指令格式:XCHG  OPR1,OPR2

指令功能:将操作数 OPR1和OPR2的内容互换

XCHG指令中,OPR1和OPR2互为源操作数和目的操作数均可采用寄存器寻址方式以及各种寻址方式,但不能采用立即寻址方式。

注意:

LEA指令

指令格式:LEA  DST,SRC

指令功能: SRC 的偏移地址

LEA是一条传送地址信息的指令,将SRC的偏移地址传送给DST

注意:

XLAT指令

指令格式:XLAT

指令功能:AL --((BX)+(AL))

段寄存器固定使用DS,即以(BX)+(AL)为偏移地址访问数据段,读取一个字节数据传送给AL。

XLAT指令通常用于在一个字节数据表中查找所需的元素,所以也叫查表指令,字节数据表定义在数据段中。

PUSH 和POP指令

PUSH 和POP分别是堆栈的进栈和出栈操作指令(堆栈特点:后进先出)

PUSH指令

指令格式:PUSH  OPR

指令功能:将子类型操作数OPR存入堆栈

注意:

 POP指令

指令格式:POP  OPR

指令功能:将栈顶元素取出并存入字类型操作数

注意:

 IN 指令和OUT指令

指令功能:IN 指令和OUT指令是8086的输入输出指令,用于在CPU与输入/输出设备之间传送数据。

IN指令

指令格式有四种:

 IN指令是输入指令,其功能是将IO端口的数据传送到AL或AX寄存器。

OUT指令

指令格式有四种:

 OUT指令是输出指令,其功能是将AL或AX寄存器中的数据传送到

其他传送指令

完整逻辑地址传送指令

 3.3.算术运算类指令

ADD 加法指令

指令格式: ADD  DST, SRC

指令功能:DST --- (DST)+(SRC)

ADD指令对所有条件标志(CF、ZF、AF、SF、OF、PF,见1.3.1节)均有影响

注意:

 例:设数据段内有数组定义如下:

例:设数据段内有数组定义如下:
ARY  DW  67H,0C35H,?
试编写指令序列,实现将该数组前两个元素(即67H和0C35H)相加,其和存入数组第三个元素位置(即用?号定义的元素位置)。
指令序列编写如下:
MOV  AX,ARY;   取第一个元素到Ax
ADD  AX,ARY+2 ; 将第一个元素与第二个元素相加,其和存入AX
MOV  ARY+4,AX ;  将和存入数组第三个元素位置


ADC指令

指令格式:ADC  DST,SRC

指令功能:DST -- (DST)+(SRC)+CF。

ADC 指令称为带进位加法指令,即在普通加法的基础上再加上此前的指令所产生的CF标志值。该指令主要用于多字节数相加。

例:

编写指令序列,完成两个32位数相加: 20008A04H + 23459DO0H.

MOV  AX,8A04H;    被加数的低16位存入AX

MOV  DX,2000H;    被加数的高16位存入 DX

MOV  CX, 9DO0H;    加数的低16位存入Cx

MOV  BX,2345H ;    加数的高16位存入BX

ADD  AX,CX;        低16位部分相加,和存入Ax,最高进位进入CF

ADC  DX,BX;        高16位部分相加(带CF),和存入DX



执行后,运算结果的低16位(2704H)存于 AX,高16位(4346H)存于 DX,

即(DX:AX) = 43462704H。

INC指令

指令格式:INC OPR

指令功能:OPR-- (OPR)+1。

INC指令也称加Ⅰ指令,常用于计数和修改地址指针.

注意

减法类指令

SUB指令

指令格式:SUB   DST, SRC

指令功能:DST-- (DST) -(SRC)。

SUB指令执行常规的减法运算,其在使用上的要求与ADD指令完全相同。

需要注意的是,执行SUB指令后,CF标志记录最高位上产生的借位。

设(AL)=76H,(DL)-OC5H,分析以下指令的执行结果

SUB   AL,DL

 

 SBB指令

指令格式:SBB DST, SRC

指令功能:DST--(DST)-(SRC)-CF。

SBB 指令称为带借位减法指令,即在普通减法的基础上再减去此前的指令所产生的CF标志值。该指令用于多字节数相减。

编写指令序列,完成两个32位数相减:20008A04H-23459D00H。

MOV  AX,8A04H;   被减数的低16位存入AX

MOV  DX,2000H;   被减数的高16位存入DX

Mov  CX,9DOOH;   减数的低16位存入Cx

MOV  BX,2345H;   减数的高16位存入BX

SUB  AX,CX;       低16位部分相减,差存入Ax,最高借位进入CF

SBB  DX,BX;       高16位部分相减(带CF),差存入DX

执行后,运算结果的低16位(OED04H)存于AX,高16位(0344H)存于DX.

即(DX:AX) = 0344ED04H。

DEC指令

指令格式:DEC  OPR

指令功能:OPR--(OPR)-1。

DEC指令也称减1指令,常用于计数和修改地址指针。

DEC指令在使用上的要求与INC指令完全相同。

相对于INC指令的顺计数,DEC指令的倒计数在汇编语言程序设计中用得更多(如循环计数)。

CMP指令

指令格式:CMP DST,SRC指令功能:(DST)-(SRC)。

CMP指令称为比较指令。CMP指令执行一次减法运算,影响全部状态标志,但不保存运算结果。它在使用上的要求与SUB指令完全相同。

NEG指令

指令格式:NEG OPR

指令功能:OPR --0-(OPR)。

NEG 指令也称求补指令,用于求有符号数(以补码表示)的相反数,各状态标志按0-(OPR)运算来设置。OPR不能为立即数或段寄存器,且必须有明确的数据类型。

乘法类指令

MUL指令

指令格式:MUL SRC;SRC为乘数,被乘数隐含

指令功能:MUL为无符号数乘法指令.

当 SRC为字节类型数据时,被乘数默认为AL,乘积存于AX;

当SRC为字类型数据(16位)时,被乘数默认为AX,

乘积存于DX:AX(即乘积的高16位存于DX,低16位存于AX)。

注意:

 IMUL指令

指令格式:IMUL   SRC;     SRC为乘数,被乘数隐含

指令功能:IMUL为有符号数乘法指令,其在用法上与MUL指令相同。

除法类指令

DIV指令

指令格式:DIV   SRC:      SRC为除数,被除数隐含

指令功能:DIV为无符号数除法指令

注意:

IDIV指令

指令格式:IDIV  SRC;      SRC为除数,被除数隐含

指令功能:IDIV为有符号数除法指令,其在用法上与DIV 指令相同。对有符号数除法,余数的符号与被除数符号相同。

3.3.3 逻辑运算与移位操作类指令

AND指令

指令格式:AND   DST,SRC

指令功能:DST -- (DST)A(SRC),A代表“与”运算。

AND指令是逻辑“与”运算指令。

AND指令在使用上的要求与ADD指令完全相同,其影响条件标志ZF、PF、SF、CF和OF,并对CF 和OF 清零。

OR指令

指令格式:OR   DST, SRC

指令功能:DST--(DST)V(SRC),V代表“或”运算。

OR指令是逻辑“或”运算指令.

OR指令在使用上的要求以及对条件标志的影啊与AND指令完全相同。

XOR指令

指令格式:XOR   DST,SRC

XOR指令是逻辑“异或”运算指令。

XOR指令在使用上的要求以及对条件标志的影响与AND指令完全相1

NOT指令

指令格式:NOT   OPR 

NOT指令是逻辑“非”运算指令。 

使用NOT指令时必须注意:

移位操作指令:

 注意:

 程序控制类指令:

 完

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值