微机原理课件_第1页
微机原理课件_第2页
微机原理课件_第3页
微机原理课件_第4页
微机原理课件_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、算术运算指令加法指令加法指令ADD 指令格式:ADD DOPD,SOPD 功能:把源操作数的值加到目的操作数中(dopdsopd+dopd )注意:运算结果影响标志寄存器: AF、CF、PF、OF、ZF、SFAdd r,srcAdd a,im*Add dst,imAdd dst,r指令使用见表3-4.带进位加法指令带进位加法指令ADC 指令格式:ADC dopd,sopd 功能:把源操作数和进位标志位CF的值(0/1)一起加到目的操作数(dopddopd+sopd+CF)。Adc r,srcAdc a,im*Adc dst,imAdc dst,r指令使用见表3-5.例:P57 两个4字节数分别

2、放在FIRST、SECOND单元中,用程序段实现加法并把结构存放在THIRD单元中。画内存数据图MOV AX,FRSTADD AX,SECONDMOV THIRD,AXMOV AX,FIRST+2ADC AX,SECOND+2MOV THIRD+2,AX减法指令SUB格式:SUB DOPD,SOPD操作:(DOPD)(DOPD)-(SOPD)例如 SUB AX,BX SUB AL,CL SUB CX,34 带借位减法格式:SBB DOPD,SOPD操作:(DOPD)(DOPD)-(SOPD)- CF SBB BX, 100H SBB CX, DX SBB WORD PTR 100HBP, 10

3、0乘法指令 计算机的乘法指令分为无符号乘法指令和有符号乘法指令,他们的唯一区别就在于:数据的最高位是作为“数值”参与运算,还是作为“符号位”参与运算。 乘法指令的被乘数都是隐含操作数,乘数在指令中显式地写出来。CPU会根据乘数是8位、16位,来自动选用被乘数:AL或AX。无符号数乘法指令MUL 语句格式: MUL OPD 功能: 字节乘法:(AL)* (OPD) AX, 字乘法:(AX) * (OPD) DX,AX 注意:操作数可以是通用寄存器、存储器,不能是立即数。(适用于所有的单操作指令) 影响标志寄存器CF和OF(AF、PF、ZF、SF 无定义) 字节乘:若乘积高8位AH0,则CF=1,

4、OF=1; 若乘积高8位AH=0,则CF=0,OF=0; 字乘:若乘积高16位DX0,则CF=1,OF=1;若乘积高16位DX=0,则CF=0,OF=0; 可通过判读CF或OF的值来判断结果的位数。带符号乘指令IMUL语句格式:IMUL OPD功能:字节乘法:(AL)*(OPD)AX 字乘法:(AX)*(OPD)DX、AXIMUL指令除计算对象是带符号二进制数外,其他都与MUL一样,但计算结果不同。 注意: 影响标志寄存器CF和OF(AF、PF、ZF、SF 无定义)。 若乘法结果AH或DX包含有效值,则OF=1、CF=1。 若乘法结果AH或DX只是低半部分的符号扩展,则OF=0、CF=0 。作

5、用:判断结果的位数例:有符号数0B4H与11H相乘。MOV AL,0B4H ;(AL)=B4H=-76DMOV BL,11H;(BL)=11H=17DIMULBL ;(AX)=0FAF4H=-1292DCF=OF=1例:无符号数0B4H与11H相乘。MOV AL,0B4H;(;(AL)=0B4H=180DMOV BL, 11H;(;(BL)=11H=17DMUL BL ;(;(AX)=0BF4H=3060DCF=OF=1除法指令 除法指令的被除数是隐含操作数,除数在指令中显式地写出来。CPU会根据除数是8位、16位,来自动选用被除数:AX或DXAX。无符号除指令DIV 语句格式:DIV OPD

6、 功能:字节除法(AX)/(OPD) AL(商)、AH(余数) 字除法(DX、AX)/(OPD) AX(商)、DX(余数) 若除数为0,则产生类型0中断。 对标志位无定义。有符号除指令IDIV语句格式:IDIV OPD功能:字节除法:(AX)/(OPS) AL(商)、AH(余数)字除法:(DX,AX)/(OPS) AX (商)、DX(余数) 除法指令DIV和IDIV虽然对标志的影响未定义。 当商超过AL或AX所能存放的最大值+127(字节除)或+32767(字除),以及所能存放的最小值-128(字节除)或-32768(字除)时,系统会自动产生类型0中断例:写出实现无符号数0400H / 0B4

7、H运算的程序段。MOV AX,0400H ;(AX)=0400H=1024DMOV BL,0B4H;(BL)=0B4H=180DDIV BL;商(AL)=05H=5D 余数(AH)=7CH=124D 例:写出实现带符号数0400H / 0B4H运算的程序段。MOVAX,0400H ;(AX)=0400H=+1024DMOVBL,0B4H;(BL)=0B4H=-76DIDIV BL;商(AL)=0F3H =-13D 余数(AH)=24H=36D 计算(V-(X*Y+Z-540)/X 其中X、Y、Z、V均为16位带符号数,放在了X、Y、Z、V单元中。结果的商存在AX,余数存在DX。MOV AX,X

8、MOV BX,YIMUL BXMOV CX,AXMOV BX,DXMOV AX,ZCWDADD CX,AXADC BX,DXSUB CX,540SBB BX,0MOV AX,VCWDSUB AX,CXSBB DX,BXMOV BX,XIDIV BX增减量指令 INC DOPD 功能:(dopddopd+1)。 DEC DOPD 功能:dstdst-1 注意:影响标志寄存器OF、SF、ZF、AF、PF;不影响CF。 操作数可以是通用寄存器,也可以是内存单元。 用途:循环中修改地址指针、修改循环次数求补指令 NEG 指令格式:NEG dopd 指令功能:dst0-dopd+1 影响标志寄存器AF、

9、CF、PF、OF、ZF、 SF 。 操作数:8位/16位通用寄存器或存储器。 例:例:MOV AH,5; NEG AH ;AH=11111011B,是,是-5(补码)(补码) MOV AX,-6 ;NEG AX ;AX=0006H,是,是+6 比较指令比较指令 CMP 指令格式:指令格式:CMP dopd,sopd 操作:(操作:(dopd)- (sopd ),不保留结果,),不保留结果,但是置标志位。但是置标志位。 注意:注意: 影响标志寄存器影响标志寄存器AF、CF、PF、OF、ZF、SF 。 后面跟条件转移指令。后面跟条件转移指令。 用途:用于比较两个数之间的大小关系。 若要判断两个数是

10、否相等,利用ZF标志实现。相等时ZF=1,否则,ZF=0。(JZ/JNZ) 若两个正数比较,利用SF标志即可。无符号数A-B 若AB, C=0 且Z=0 (为了去掉等于的可能性) 若A=B, C=0 (Z可能为1也可能为0) 若AB, C=1 (只要C=1,一定是小于) 若AB时 结果为正若不溢出,则S=0,O=0 若溢出, 则S=1,O=1 S O=0且Z=0A=B时,去掉Z=0的条件即可正数负数01H(+1)FFH(-1)00H7FH(+127)80H(-128)正溢负溢AB时 结果为负若不溢出,则S=1,O=0若溢出,则S=0,O=1S O=1A9FH或CF=1,则(AL)=(AL)+6

11、0H且CF=1。 影响标志寄存器CF、PF、AF、ZF、SF,但对OF未定义。其中CF=1说明结果大于99。 必须紧跟在加法指令之后且只能对AL中的内容进行调整。例:压缩BCD码的加法运算(68+28=96)。MOV AL,68H;(AL)=68H,表示压缩BCD码68MOV BL,28H;(BL)=28H,表示压缩BCD码28ADD AL,BL; 二进制加法:(AL) =68H+28H=90H DAA ;十进制调整:(AL)=96H 试编程完成(8576)10 +(2659)10的运算。 MOV AX , 8576H MOV BX , 2659H ADD AL , BL ;低字节BCD码加法

12、运算 DAA ;低字节BCD码调整 MOV DL , AL ;暂存低字节压缩BCD码结果在DL中 MOV AL , AH ADC AL , BH ;高字节BCD码加法运算 DAA ;高字节BCD码调整 MOV AH , AL ;高字节压缩BCD码在AH中 MOV AL , DL ;暂存的低字节压缩BCD码结果送AL中减法的十进制调整指令DAS格式:DAS功能:对放在AL中两个压缩型BCD数相减的结果,调整成压缩型BCD数在AL中。 操作:若AF=1或AL寄存器中低4位大于9,则(AL)=(AL)6且AF=1;若(AL)9FH或CF=1,则(AL)=(AL)60H且CF=1。 影响标志AF、CF

13、、PF、PF、SF、ZF,但对OF未定义。例子:压缩BCD码的减法运算6828=39 。MOV AL,68H ;(AL)=68H,表示压缩BCD码68MOV BL,29H ;(BL)=28H,表示压缩BCD码29SUB AL,BL; 二进制减法:(AL)=68H29H=3FHDAS ;十进制调整:(AL)=39H影响标志寄存器CF、PF、AF、ZF、SF,其中CF=1说明结果大于99。必须紧跟在减法指令之后且只能对AL中的内容进行调整。 加法的非压缩BCD码调整指令AAA语句格式:AAA 功能:如果AL的低4位大于9或AF=1,则:(AL)=(AL)+6;(AH)=(AH)+1 AF=CF=1

14、 , 且AL高4位清零。否则:AF=CF=0, AL高4位清零。该指令不影响标志寄存器PF、ZF、SF、OF。必须紧跟在加法指令之后且只能对AL中的内容进行调整。例子:已知:(AL)=05H, (BL)=09H ADD AL,BL; (AL)=0EH,AF=0 AAA; (AX)=0104H,AF=1,CF=1减法的非压缩BCD码调整指令AAS语句格式:AAS 功能:如果AL的低4位大于9或AF=1,则:(AL)=(AL)6(AH)=(AH)1 AF=CF=1AL高4位清零。否则:CF=AF=0, AL高4位清零。其他标志位OF、PF、SF、ZF不确定。 例:实现非压缩BCD码减法:68-9=

15、59 MOV AX,0608H;AX=0608H,表示非压缩BCD码68; MOV BL,09H;BL=09H,表示非压缩BCD码9 SUB AL,BL;二进制减法:AL=08H-09H=FFH AAS;十进制调整:AX=0509H 乘法的非压缩型BCD数调整AAM 格式:AAM功能:对放在AX中的两个非压缩型BCD数相乘的结果 调整成两位非压缩型BCD数,操作:AH=AL/0AH的商 AL=AL/0AH的余数注意:影响标志寄存器PF、SF、ZF。 必须紧跟在乘法指令之后。 试编程完成 (7)10 (9)10运算。 MOV AL , 07H ;(AL) = 07H(被乘数) MOV BL , 09H ;(BL) = 09H(乘数) MUL BL ;(AX) = (AL) (BL) = 003FH(乘积,即63D) AAM ;(AH) = 06H,(AL) = 03H ,(SF) = (ZF) = 0 ,(PF) = 1 除法的非压缩型BCD数调整AAD格式:AAD 功能:用在对两位非压缩型BCD数相除之前进行调整,对AX内容进行调整。操作:AL=10*(AH)+(A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论