微机原理与接口技术除法指令3-7_第1页
微机原理与接口技术除法指令3-7_第2页
微机原理与接口技术除法指令3-7_第3页
微机原理与接口技术除法指令3-7_第4页
微机原理与接口技术除法指令3-7_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1加法指令2减法指令3乘法指令4除法指令5十进制调整指令无符号数除法(DIV)有符号数除法(IDIV)除法指令二算术运算指令进行除法时:16位/8位→8位商,8位余数

32位/16位→16位商,16位余数对被除数、商及余数存放有如下规定:

被除数

余数16位/8位AXAL AH字节操作

32位/16位 DX:AX AX DX字操作4.1除法指令——无符号数的除法指令格式:

DIV

SRC操作:字节操作(AL)(AX)/(SRC)的商

(AH)(AX)/(SRC)的余数字操作(AX)(DX,AX)/(SRC)的商

(DX)(DX,AX)/(SRC)的余数

例:

DIVCL

DIVWORDPTR[BX]4.2除法指令——有符号数的除法指令格式:IDIVSRC

操作与DIV类似。商及余数均为有符号数,且余数符号总是与被除数符号相同。注意:

对于DIV/IDIV指令

AX(DX:AX)为隐含的被除数寄存器。

AL(AX)为隐含的商寄存器。

AH(DX)为隐含的余数寄存器。

SRC不能为立即数。

对所有标志位均无定义。关于除法操作中的字长扩展问题除法运算要求被除数字长是除数字长的两倍,若不满足则需对被除数进行扩展,否则产生错误。

1)无符号数除法扩展,只需将AH或DX清零即可。

2)有符号数而言,则是符号位的扩展。可使用符号扩展指令CBW和CWD。格式:CBW功能:将AL中的符号位扩展到AH中,即当AL<80H,执行CBW后,AH=0;

AL>=80H时,执行CBW指令后,AH=FFH。注意:不影响标志位4.3扩展指令格式:CWD功能:将AX中的符号位扩展到DX中,即当AX<8000H,执行CWD后,DX=0;AX>=8000H时,执行CWD指令后,DX=FFFFH。注意:不影响标志位例题:二进制四则混合算术运算试计算:

AX (V-(X*Y+Z-540))/X之商

DX 余数(X,Y,Z,V均为有符号字变量)MOVAX,X;MOVBX,YIMULY;MOVCX,AX;MOVBX,DX;MOVAX,Z;CWDADDCX,AX;ADCBX,DX;将符号扩展后的Z加到BX:CX中的乘积中去X*Y,结果在DX:AX中将乘积存在BX:CX中SUBCX,540;SBBBX,0;MOVAX,V;CWD;SUBAX,CX;SBBDX,BX;MOVBX,XIDIVBX;从BX:CX中减去540从符号扩展后的V中减去(BX:CX)并除以X,商在AX中,余数在DX中。二算术运算指令1加法指令2减法指令3乘法指令4除法指令5十进制调整指令十进制调整指令压缩BCD码加法调整指令DAA压缩BCD码减法调整指令DAS非压缩BCD码加法调整指令AAA

非压缩BCD码减法调整指令AAS

乘法的BCD码调整指令AAM

除法的BCD码调整指令AAD

共6条,均为隐含寻址方式,隐含的操作数是

AL或AL、AH;不能单独使用,要紧跟在相应的算术运算指令之后;执行结果为压缩BCD码或非压缩BCD码表示的十进制数。BCD码调整指令的说明例:将十进制数8762用压缩型BCD码表示,则为:1000011101100010非压缩型BCD码:00001000000001110000011000000010在PC机中,根据在存储器中的不同存放格式,BCD码又分为压缩(组合)BCD码:1字节(8位)中存放2个十进制数码非压缩(分离)BCD码:1个字节只存放1个十进制数格式:DAA

;调整AL中的和为压缩BCD码DAS

;调整AL中的差为压缩BCD码AF=1或AL寄存器低4位是A~F,则AL寄存器内容加/减06H;CF=1或AL寄存器高4位是A~F,则AL寄存器内容加/减60H;5.1压缩BCD码调整指令举例:48+29=770100100000101001011100010000011001110111++AF=1加6调整MOV AL,48HMOV BL,29HADD AL,BLDAA (AL)=71H(AL)=77HAAA

;调整AL中的和为非压缩BCD码AAS

;调整AL中的差为非压缩BCD码AAM

;AH=AXdiv10,AL=AXmod10

跟在MUL运算之后AAD

;AL=AH×10+AL,AH=0

跟在DIV运算之前5.2非压缩BCD码调整指令三逻辑运算和移位指令逻辑运算移位操作与或非异或非循环移位循环移位逻辑移位算术移位不带进位位的移位带进位位的移位一逻辑运算运算●运算规则:按位操作,无进/借位

●对标志位的影响(除NOT指令外):

CFOFSFZFPFAF00***无定义

根据运算结果设置1逻辑”与”AND格式:ANDDST,SRC功能:DST∧SRCDST用途:保留操作数的某几位,清零其他位。例1:保留AL中低4位,高4位清0。

ANDAL,0FH例2:测试AL的bit7,bit5,bit2是否都是1。

ANDAL,10100100B

CMPAL,10100100B

JZYES<notall1>……YES:2逻辑”或”OR格式:OR

DST,SRC功能:DST∨SRCDST用途:对操作数的某几位置1; 对两操作数进行组合。例:把AL的第5位置为1ORAL,00100000B3逻辑”非”(取反)NOT格式:NOT

DST功能:对操作数进行按位逻辑”非”操作。例:NOTCX

NOTBYTEPTR[DI]4逻辑”异或”XOR格式:ANDDST,SRC功能:DST⊕SRCDST用途:对操作数清零(自身异或);

把操作数的某几位变反(与‘1’异或)例1:把AX寄存器清零。例2:把DH的bit4,3变反①MOVAX,0XORDH,18H②XORAX,AX③ANDAX,0④SUBAX,AX

5测试指令TEST

操作与AND指令类似,但不将”与”的结果送回,只影响标志位。

TEST指令常用于位测试,与条件转移指令一起用。例:测试AL的最高位是否为1,若为1则转移到OTHER程序段。

TESTAL,80H

JNZOTHER … …OTHER: MOVCL,06H二移位指令1非循环移位指令算术左移指令

SAL(ShiftArithmeticLeft)

算术右移指令SAR(ShiftArithmeticRight)

逻辑左移指令

SHL(ShiftLeft)

逻辑右移指令

SHR(ShiftRight)最低位最高位CF0(a)算术/逻辑左移SAL/SHL最低位最高位CF(b)算术右移SAR最低位最高位CF(c)逻辑右移SHR0非循环移位指令功能示意图例题:编程实现将AL中的数乘以10(求10x)

因为10=8+2=23+21,所以可用移位实现乘10操作。程序如下:SALAL,1 ;将AL中数左移1位,得2xMOVBL,AL ;2x保存在BL中.MOVCL,2 ;移位次数送入CLSALAL,CL ;

温馨提示

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

评论

0/150

提交评论