电工学习网

 找回密码
 立即注册

8086指令系统

2015-3-22 09:24| 编辑:电工学习网| 查看: 32433| 评论: 0



    4.除法指令

    (1) 无符号数除法指令 DIV

    一般格式   DIV  OPRD

    (2) 带符号数除法IDIV

    一般格式   IDIV  OPRD

    该指令执行过程同DIV指令,但IDIV指令认为操作数的最高位为符号位,除法运算的结果商的最高位也为符号位。

    在除法指令中,在字节运算时被除数在AX中;运算结果商在AL中,余数在AH中。字运算时被除数为DX:AX构成的32位数,运算结果商在AX中,余数在DX中。

    【例如】 AX=2000H,DX=200H,BX=1000H,则 DIV BX执行后,AX=2002H ,DX=0000。

    除法运算中,源操作数可为除立即寻址方式之外的任何一种寻址方式,且指令执行对所有的标志位都无定义。

    由于除法指令中的字节运算要求被除数为16位数,而字运算要求被除数是32位数,在8086/8088系统中往往需要用符号扩展的方法取得被除数所要的格式,因此指令系统中包括两条符号扩展指令。

    (3) 字节扩展指令CBW

    一般格式   CBW

    该指令执行时将AL寄存器的最高位扩展到AH,即若D7=0,则AH=0;否则AH=0FFH。

    (4) 字扩展指令CWD

    一般格式   CWD

    该指令执行时将AX寄存器的最高位扩展到DX,即若D15=0,则DX=0;否则DX=0FFFFH。

    CBW、CWD指令不影响标志位。

    5.十进制调整指令

    计算机中的算术运算,都是针对二进制数的运算,而人们在日常生活中习惯使用十进制。为此在8086/8088系统中,针对十进制算术运算有一类十进制调整指令。

    在计算机中人们用BCD码表示十进制数,对BCD码计算机中有两种表示方法:一类为压缩BCD码,即规定每个字节表示两位BCD数;另一类称为非压缩BCD码,即用一个字节表示一位BCD数,在这字节的高四位用0填充。例如,十进制数25D,表示为压缩BCD数时为:25H;表示为非压缩BCD数时为:0205H,用两字节表示。

    相关的BCD转换指令见表1。

表1 十进制调整指令

指令格式

指令说明

DAA

压缩的BCD码加法调整

DAS

压缩的BCD码减法调整

AAA

非压缩的BCD码加法调整

AAS

非压缩的BCD码减法调整

AAM

乘法后的BCD码调整

AAD

除法前的BCD码调整

    【例如】  ADD   AL,BL

    DAA

    若执行前:AL=28H,BL=68H,则执行ADD后:AL=90H,AF=1;再执行DAA指令后,正确的结果为:AL=96H,CF=0,AF=1。

    MUL  BL

    AAM

    若执行前:AL=07,BL=09,则执行MUL BL 后,AX=003FH,再执行AAM指令后,正确的结果为:AH=06H,AL=03H。

    【注意】BCD码进行乘除法运算时,一律使用无符号数形式,因而AAM 和AAD应固定地出现在MUL之前和DIV之后。


看过《8086指令系统》的人还看了以下文章:

发表评论

最新评论

电工学习网 ( )

GMT+8, 2023-6-28 06:33

Powered by © 2011-2022 www.shop-samurai.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

返回顶部