inc si指令的作用_8086指令

本文详细介绍了8086汇编语言中的数据传输指令,特别是加1指令INC的用法。INC指令可以对寄存器或存储器中的数值加1,它对状态标志位有影响,可用于算术运算和程序控制。文章还涵盖了堆栈操作、交换指令、查表、字位扩展、地址传送以及其他算术和逻辑运算指令等。
摘要由CSDN通过智能技术生成

fde2c8a1-7513-eb11-8da9-e4434bdf6706.png

数据传输指令

通用数据传送(对标志位没有影响)

一般数据传送指令

格式:MOV dest,src

将str(源操作数)送到dest(目的操作数)中

如:MOV AL,BL

注意:

  • 两个操作数字长必须相同
  • 两个操作数不能同时为存储器操作数
  • 两个操作数不能同时为段寄存器( CS,DS,ES,SS)
  • 如果源操作数为立即数,目标操作数不能是段寄存器

如(都是错的)

MOV AL,BX       ; 两个操作数不等字长
MOV [BX][BP],Bx  ;没有基址,基址寻址方式
MOV DS,1000H     ;源操作数为立即数,目标操作数不能是段寄存器
MOV [1200],[SI]	 ; 两个操作数不能同时为段寄存器

堆栈操作指令

原则:

  • 先进后出
  • 以字为单位:两个字节

压栈指令:

  • 格式:PUSH 16位寄存器或者存储器两个单元

出栈指令:

  • 格式:POP 16位寄存器或者存储器两个单元

PUSH指令执行过程:

  1. SP=SP-2;
  2. SP+1,存入高字节
  3. SP,存入低字节

如:设AX=1234H,SP=1200H;执行PUSH AX指令后堆栈取的状态:

SP=12FEH

(12FFH)=12H

(12FEH)=24H

POP指令执行过程:

SP:弹出低字节

SP+1:弹出高字节

SP=SP+2;

注意:

  • 操作数必须为16位
  • 操作数可以是寄存器,存储单元。不能是立即数

交换指令

XCHG REG,MEM/REG

注意:

  • 两个操作数必须有一个是寄存器操作数
  • 不准使用段寄存器(DS,ES,CS,SS)

如:

XCHG AX,BX
XHNG [2000],CL

查表指令

格式:XLAT

说明:用BX表示表格首地址,AL的内容表示表内偏移量。BX+AL得到要查找元素的偏移地址

操作:将BX+AL所指的单元里的内容放到AL中

字位扩展指令

将有符号数的符号位扩展到最高位

格式:CBW(扩展到一个字节)

操作:将AL的内容扩展到AX

规则:

  • 若最高位为1,则AH=FFH
  • 若最高位为0,则AH=00F

格式:CWD (将一个字节扩展到一个字)

操作:将AX的内容扩展到DX AX

  • 若最高位为1,则DX=FFFFH
  • 若最高位为0,则DX=0000F

地址传送指令

LEA指令

操作:将变量的16位偏移地址写入目标寄存器

当程序中用符号表示内存偏移地址时,必须使用该指令

格式:LEA REG,MEM

指令要求 :

  • 源操作数必须是一个存储器操作数,目标操作数通常是间址寄存器(BX,BP,DI,SI)

MOV和LEA指令对比。

​ 假设声明一个偏移地址的变量i,其里面的内容为5,则:

MOV AL i		;AL=5

MOV BX i;		;BX=i;

标志传送指令

指令;LAHF

操作:将FLAGS的低八位转入AH中

指令:SAHF

操作:将AH转入FLAGS中

输入输出指令

功能:

  • 从端口地址读入到累加器或者将累加器的值输出到端口中

格式:

  • 输入指令:IN acc,PORT
  • 输出指令:OUT PORT,acc

PORT :端口地址

acc:累加器:AL或者AX

寻址方式:

直接寻址:

  • 端口地址为8位,指令中直接给出端口地址 。可以寻256个端口

间接寻址:

  • 端口地址为16位。指令中的端口地址必须放在DX中,可以寻址64K
IN AX,80H	;从80H端口读入16bit的数据到AX

MOV DX,2400H
IN AL,DX 	;从2400H端口读入8bit的数据到AL中

OUT 35H,AX	;将16bit的数据写到35H端口

OUT AX,35H	;格式错误

算数运算指令(大多数对状态标志位产生影响)

加法运算指令

  • 普通加法指令:ADD
  • 带进位的加法指令:ADC
  • 加1指令:INC

普通加法指令:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值