微机原理 您所在的位置:网站首页 xor操作码 微机原理

微机原理

2023-08-29 05:07| 来源: 网络整理| 查看: 265

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。

算数运算指令 1、加减法指令ADD、ADC 、SUB 、SBB 和增量减量指令INC、DEC、NEGADD ADC例题讲解SUB SBB例题讲解 2、比较指令CMPCMP例题讲解 3、乘除指令MUL IMUL DIV IDIVDIV、IDIV例题讲解 4、符号扩展指令CBW CWD5、BCD数运算调整指令(十进制调整指令)

算术

1、加减法指令ADD、ADC 、SUB 、SBB 和增量减量指令INC、DEC、NEG

(1)不带进位位加法指令 指令格式:ADD DST,SRC ; DST←DST+SRC 语法格式:ADD reg / mem ,reg/mem /imm8/imm16 指令功能:完成两个操作数相加,结果送目的操作数DST。 该指令要求DST、SRC 不能同时为存储器,DST不能为立即数,运算结果对标志位有影响。 例子: 例子 (2)ADC 带进位位加法指令 指令格式: ADC DST,SRC 功能:与ADD指令相同,只是相加时要加上进位位的当前值。 完成的操作为:== (DST) ← (SRC)+(DST)+ CF == DST、SRC 不能同时为存储器, SRC可为立即数,运算结果对标志位有影响。 对状态标志位的具体影响:

CF=1 二进制加法中最高有效位向高位有进位。 CF=0 二进制加法中最高有效位向高位无进位。 ZF=1 加法结果为0 ZF=0 加法结果不为0 。 OF=1 两同符号数相加(正数+正数、或负数+负数),而结果符号与其相反。 OF=0 不同符号数相加。注意: (不同符号数相加不会产生溢出) SF=1 加法结果为负(符号位为1) SF=0 加法结果为正(符号位为0)。

ADD ADC例题讲解

问:设在DVAR开始的连续8字节中分别存放着两个数A(00127654H)和B(00049821H)(每个数为32位),求C=A+B,并将结果C放到DVARC开始的内存中 思路分析:完成双字(32位)相加:先用ADD把低位字相加,再用ADC完成高位字的带进位加法

data segment DVAR DD 00127654H; DVAR DD 00049821H; DVARC DD ? ;存储相加后的值 ends ;在数据段定义数据 LEA DI,DVAR;获取DVAR地址 MOV AX,4[DI];第二个数的低位字的起始地址=DI+4,将其中内容送入AX ADD AX,[DI];第一个数的低位字 MOV WORD PTR DVARC,AX;保存结果的低位字 MOV AX,6[DI]; ADC AX,2[DI]; 带进位 MOV DVARC+2,AX;保存结果的高位字

语法知识点: 汇编中何时使用WORD/BYTE PTR 伪指令DD DW DB (3) SUB DST,SRC 不带借位减法指令 功能:进行两个操作数的相减操作,结果送回DST。 完成的操作: DST←DST-SRC (4) SBB DST,SRC 带借位减法指令 功能:与SUB相类似,但相减时还应减去标志CF的当前值。 完成的操作: DST←DST-SRC-CF 语法格式:SUB(SBB) reg/mem ,reg/mem/imm DST、SRC可以是存储器或寄存器, 但不能同时为存储器。运算结果对标志位有影响。 LIZi

SUB SBB例题讲解

问:设DVAR1和DVAR2保存有双字数,求(DVAR1)- (DVAR2),并将结果保存在双字变量DVARR中。

data segment DVAR1 DD 00127654H; DVAR2 DD 00049821H; DVARR DD ? ;存储相减后的值 ends ;在数据段定义数据 MOV AX,WORD PTR DVAR1; SUB AX,WORD PTR DVAR2; MOV WORD PTR DVARR,AX;保存结果的低位字 MOV AX,WORD PTR DVAR1+2; SBB AX,WORD PTR DVAR2+2; 带借位 MOV WORD PTR DVARR+2,AX;保存结果的高位字

(5) INC OPR 加1指令 对指定的操作数进行加1操作,其操作数OPRD可以是任意一个通用寄存器,也可以在内存单元中。 该指令影响标志位,但不影响CF标志位。 完成的操作: OPR OPR+1

INC AL ; AL←AL+1 INC (SI); (SI) (SI)+1

(6) DEC OPR 减1指令 功能:实现对操作数的减1操作,操作数可以是通用寄存器,也可以在内存单元中。减1操作时,把操作数看作为无符号的二进制数。 完成的操作: OPRD OPRD-1 语法格式:DEC reg/mem

DEC BX ; BX BX-1 DEC(DI);(DI) (DI)-1

(7) NEG (取负指令) 格式: NEG DST; 描述 转换成二进制算法:

OPR OPRD ‘+1 或: OPR FFFFH -(OPR)’+1

2、比较指令CMP

指令格式: CMP OPR1,OPR2;OPR1-OPR2 结果影响标志位。 语法格式:CMP reg/mem ,reg/mem/imm 功能:做两个数的比较,与减法指令一样执行OPR1-OPR2操作,但相减后不回送结果,只是根据相减结果修改标志位。 OPR1、OPR2可以是存储器或寄存器,不能同时为存储器,OPR2还可为立即数,运算结果对标志位有影响。 比较结果有三种可能:AX>BX 、 AX



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有