常用指令(一)

一、数据传送指令

1、语句格式:MOV     OPD.OPS

2、功能:将源操作数传入目的地址,源地址内容不变

3、注意

①MOV指令不改变源操作数的内容,不影响标志位。

②源操作数和目的操作数应该有相同的类型,即必须同字节型或者同字型

③代码段寄存器CS不能作目的操作数,即不允许给CS赋值

④立即数不能用作目的操作数,也不能直接传送给段寄存器

⑤源操作数和目的操作数不能同时为存储单元操作数(例如BUF)

⑥不允许在段寄存器之间(DS, ES 等直接传送数据)

二、进栈指令

1、语句格式

PUSH  SRC

2、功能:将寄存器、段寄存器或存储器中的一个字数据压入堆栈,堆栈指针减2.

三、出栈指令

1、语句格式

POP   OPD

2、功能 :将栈顶元素弹出送至某一寄存器、段寄存器(CS除外)或存储器,堆栈指针加2

四、数据交换指令

1、语句格式

XCHG   OPR1, OPR2

2、功能:将源地址与目的地址中的内容呼唤 

五、累加器专用传送指令:IN / OUT

1、语句格式

IN       acc,   PORT/DX

OUT    PORT/DX,     acc

2、功能:实现 I /O端口与CPU之间的数据传送

3、注意事项

①只能用累加器AL或者AX接受、发送指令

②使用短格式指令,必须将端口地址放入寄存器DX

③不影响标志位

六、地址传送指令

1、有效地址传送指令  LEA

2、指针送寄存器和DS指令  LDS

3、指令送寄存器和附加数据段ES指令 LES

七、算术运算指令

1、加法指令

(1)加法指令 ADD

格式 : ADD  DST,  SRC

功能 :把源操作数的值加到目的操作数中。

根据相加的结果设置FLAGS的OF, SF, ZF, AF, PF 和 CF 标志位

(2)带进位加指令ADC

格式 : ADC  DST,  SRC

功能:把源操作数和进位标志位CF的值( 0/ 1)一起加到目的操作数中。

(3)加I指令 INC 

格式: INC   OPR

功能:把操作数的值加1, (不影响CF)

(4)交换加指令 XADD

格式:XADD   oprd1,  oprd2

功能:先交换两个操作数的值,再进行算术加运算

2、减法指令

(1)减法指令SDB

格式:SUB    DST,  SRC

功能:从目的操作数中减去源操作数

(2)带借位减 SBB

格式: SBB   DSI, SRC

功能:把源操作数和标志位CF的值从目的操作数中减去

(3)减1指令DEC

格式:DEC  OPR

功能:把操作数的值减去1(不影响CF)

(4)求补指令NEG

格式: NEG  OPR

功能:操作数=0➖操作数

(5)比较指令CMP

格式:CMP  OPD,  OPS

功能:目的操作数减去源操作数,与SUB指令一样执行减法操作,但结果只影响标志位

3、乘法指令

(1)无符号数的乘法指令 MUL

格式:MUL  SRC

          SRC为源操作数(乘数),可以是寄存器或存储单元,但是不能使用立即数或段寄存器

功能:两个无符号数相乘

字节乘法:AL * SRC 得AX

字乘法:  AX * SRC 得 AX(低字),DX(高字)

(2)有符号数的乘法指令 I MUL

格式: IMUL    SRC

4、除法指令

(1)无符号数除指令 DIV

格式:DIV   OPS

功能:字节除法  AX / OPS 得 AL(商)、AH(余数)

         字除法 (DX、AX)/ (OPS) 得AX(商)、DX(余数)

(2)有符号除指令 IDIV

格式:IDIV   OPS

功能:同DIV

8086、8088规定IDIV指令运算结果余数得符号与被除数相同

除法指令可能产生溢出

          

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值