组成与汇编实验指导书(7)

2018-11-18 21:38

计算机组成原理与汇编语言实验指导书

CLC

LOOPER:

MOV AL, DATA2[SI]

ADC DATA1[SI],AL INC SI DEC CX

JNZ LOOPER

INT 20H ;终止程序

考虑:上面的功能能否使用字加法来完成?

★INC 加1指令 格式:INC dest

功能:目的寄存器dest加1,结果保存在目的寄存器中。一般用于循环程序中修改地址指针。 说明

(1)INC指令只影响SF,ZF,AF,PF,OF标志。不影响CF标志;

(2)目的寄存器可以是寄存器和存储单元,不能为立即数和段寄存器;

INC DL

;8位寄存器+1

INC SI ;16位寄存器+1

INC BYTE PTR [BX][SI] ;存储器+1(字节操作) INC WORD PTR [DI] INC DS

2. 减法指令

★SUB 减法指令

格式:SUB dest,src

功能:目的操作数dest减源操作数src,结果保存在目的操作数dest中,根据运算结果影响AF、CF、OF、PF、SF、ZF标志。 说明

(1)可以进行8位、16位的无符号数和带符号数的减法运算; (2)源操作数和目标操作数不能同时为存储器, 不能为段寄存器; (3)指令影响标志位的情况:

运算后,CF=1,表示无符号数小减大;SF=1,表示带符号数小减大,OF=1,表示运算结果溢出;其他条件标志(SF,AF,PF,ZF)根据定义设定。

★SBB 带借位减法指令 格式:SBB dest,src

功能:目的操作数dest减源操作数src和当前的CF标志(上条指令的结果),结果保存在目的操作数dest中,根据运算结果影响AF、CF、OF、PF、SF、ZF标志。可用于实现多字节的减法运算。 说明

- 11 -

;存储器+1(字操作) ;错

计算机组成原理与汇编语言实验指导书

(1)参考SUB的说明;

★DEC 减1指令 格式:DEC dest

功能:对目的操作数dest进行减1,结果保存在目的操作数dest中。一般用于在循环程序中修改地址指针和循环次数。 说明

(1)目的操作数可以是寄存器 、存储器。不能是段寄存器和立即数。 (2)影响SF,ZF,AF,PF,OF,不影响CF。 ★NEG 求补指令 格式:NEG dest

功能:对目的操作数进行按位求反未位加1运算,即若目的操作数为负数,则求目的操作数的补码。 说明

(1)目的操作数可以是寄存器 、存储器。不能是段寄存器和立即数。 (2)影响标志:A、C、O、P、S、Z。对CF、OF标志定义如下:

CF: 操作数为0时求补,CF=0;否则CF=1; OF: 对-128或-32768求补,OF=1;否则OF=0;

★CMP 比较指令

格式:CMP dest,src

功能:目的操作数dest减源操作数src,结果不保存,只根据运算结果影响AF、CF、OF、PF、SF、ZF标志。 说明

(1) CMP指令的规定和SUB指令相同; (2) CMP指令的应用:

根据Z标志,可判断两个操作数是否相等:

例: CMP AX,BX ;指令执行后 ZF=1,(AX) = (BX),两者相等

ZF=0,(AX) (BX),两者不相等

根据CF标志,可判断两个无符号数的大小: 例: CMP AX,BX

CF=0,(AX) > (BX); CF=1,(AX) < (BX);

根据SF、OF标志,判断二个带符号数的大小 例: CMP AX,BX ;指令执行后 OF=SF=0或SF=OF=1,即SF和OF同号时:A>B; OF、SF异号时: A

★MUL 无符号数乘法指令

- 12 -

;指令执行后

计算机组成原理与汇编语言实验指导书

格式:MUL SRC

★IMUL 带符号数乘法指令 格式:IMUL SRC

功能:若是字节乘法,则把AL中的数值乘SRC,得到的字乘积保存在AX寄存器中;若是字节乘法,则把AX中的数值乘SRC,得到的双字乘积保存在AX寄存器中。 说明

(1)AL(AX)为隐含的乘数寄存器; (2)AX(DX,AX)为隐含的乘积寄存器;

(3)SRC不能为立即数;

(4)除CF和OF外,对条件标志位无定义,CF和OF标志定义如下: 对于MUL指令,若乘积的高一半为0,则CF/OF=0/0,否则CF/OF=11; 对于IMUL指令,若乘积的高一半是低一半的符号位的扩展,则CF/OF=0/0,否则CF/OF=11;

例:(AX) = 16A5H,(BX) = 0611H (1) IMUL BL

(AX) =(AL) (BL)=A5×11=5B×11=060B=F9F5 则(AX)=0F9F5H CF=OF=1 (2) MUL BX

(DX, AX)=(AX) × (BX)=16A5×0611=0089 5EF5 则 (DX)=0089H (AX)=5EF5H CF=OF=1 ★DIV 无符号数除法指令 格式:DIV SRC

★IDIV 带符号数除法指令 格式:IDIV SRC

功能:若是字节除法,则把AX中的数值除以SRC,得到的商保存在AL寄存器中,余数保存在AH寄存器中;若是字除法,则把(DX,AX)中的数值除以SRC,得到的商保存在AX寄存器中,余数保存在DX寄存器中。 说明

(1)AX(DX,AX)为隐含的被除数寄存器; (2)AL(AX)为隐含的商寄存器; (3)AH(DX)为隐含的余数寄存器; (4)SRC不能为立即数;

(5)对所有条件标志位均无定义;

(6)带符号数的除法,余数的符号与被除数的符号相同; ★CBW 字扩展指令

格式:CBW 功能:若(AL)的最高有效位为0,则(AH)= 00H;若(AL)的最高有效位为1,则(AH)= 0FFH

- 13 -

WHY?

4. 除法指令用于完成带符号数以及无符号的二进制除法运算。

计算机组成原理与汇编语言实验指导书

说明

(1)无操作数指令;

(2)隐含对AL进行符号扩展,结果保存在AX中; (3)不影响条件标志位; ★CWD双字扩展指令 格式:CWD

功能:若(AX)的最高有效位为0,则(DX)= 0000H;若(AX)的最高有效位为1,则(DX)= 0FFFFH 说明

(1)隐含对AX进行符号扩展,结果保存在DX,AX中; (2)参考CBW指令说明。

5. 10进制调整指令用于对加、减、乘、除的二进制运算结果进行调整,使结果转换为压缩BCD码表示的10进制数。 ★DAA 加法的十进制调整指令 格式:DAA ★DAS 减法的十进制调整指令 格式:DAS

功能:把加法或减法运算的运算结果AL中的二进制数调整为压缩的BCD码10进制数; 说明

(1)隐含的操作寄存器为AL,紧接在加减指令之后使用,要求加减运算的结果保存在AL寄存器中;

(2)影响条件标志位(对OF无定义); (3)调整方法:

AF=1或(AL)0~3=A~F,则(AL) ? (AL) ± 06H,AF=1 CF=1或(AL)4~7=A~F,则(AL) ? (AL) ± 60H,CF=1 ( DAA做?+‘,??DAS做?-‘?) 例: 数据段定义如下:

DATA SEGMENT

BCD1 BCD2 BCD3

DB 34H,18H ; (1834)BCD DB 89H,27H ; (2789)BCD DB 2 DUP (?)

DATA ENDS

计算,要求结果为BCD码表示的10进制数。 (1) BCD3 ??BCD1+BCD2 ;(4623)BCD

(2) BCD3 ?BCD1?- BCD2 ;(9045)BCD =-955 程序如下: (1) MOV

ADD

AL, BCD1 ;(AL)=34H

AL, BCD2 ;(AL)=34+89=BDH

;(AL)=BD+60+06=23H AF=CF=1

- 14 -

DAA

计算机组成原理与汇编语言实验指导书

MOV

MOV ADC DAA MOV

BCD3, AL ;(BCD3)=23H

AL, BCD1+1 ;(AL)=18H

AL, BCD2+1 ;(AL)=18+27+1=40H AF=1 CF=0 ;(AL)=40+06=46H BCD3+1, AL ;(BCD3+1)=46H AL, BCD1

;(AL)=34H ;(AL)=34-89=ABH

(2) MOV

DAS

MOV

SUB AL, BCD2

;(AL)=AB-60-06=45H AF=CF=1 BCD3, AL ;(BCD3)=45H

MOV AL, BCD1+1 ;(AL)=18H SBB AL, BCD2+1 ;(AL)=18-27-1=F0H DAS

;(AL)=F0-60=90H AF=0 CF=1

;(BCD3+1)=90H

MOV BCD3+1, AL ★AAA 加法调整指令 格式:AAA

★AAS 减法调整指令 格式:AAS

功能:把加法或减法运算的运算结果AL中的二进制数调整为非压缩的BCD码10进制数; 说明

(1)隐含的操作寄存器为AL,紧接在加减指令之后使用; (2)除AF、CF外,对其它条件标志位无定义;

(3)调整方法:

若(AL)0~3=0~9且AF=0,则(AL)4~7 = 0,(AL)0~3保持不变,AF =CF=0

若(AL)0~3=A~F或AF=1,则(AL) = (AL)±6,(AL)4~7=0 (AH)=(AH)±1,AF = CF=1

( AAA做?+‘,??AAS做?-‘?)

★AAM 乘法调整指令 格式:AAW

功能:把AL中二进制表示的乘积转换为非压缩的BCD码表示的10进制数 说明

(1)隐含的操作寄存器为AL,紧接在MUL指令之后使用

(2)对OF、CF、AF无定义,根据AL的寄存器的值设置SF、ZF、PF; (3)调整方法:

AL中二进制除以0AH,商保存在AH,余数保存在AL中; ★AAD 除法调整指令 格式:AAD

功能:把被除数表示为非压缩的BCD,保存在AX中; 说明

(1)隐含的操作寄存器为AL,AH,一般在除法指令之前使用;

- 15 -


组成与汇编实验指导书(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:在财务报表审计中应如何进行风险评估

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: