第五章第3讲 算术运算指令_第1页
第五章第3讲 算术运算指令_第2页
第五章第3讲 算术运算指令_第3页
第五章第3讲 算术运算指令_第4页
第五章第3讲 算术运算指令_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、 算术运算类指令算术运算类指令算术运算类指令算术运算类指令 加法类指令加法类指令ADD ADC INC 减法类指令减法类指令SUB SBB DECNEG CMP 乘法类指令乘法类指令MUL IMUL 除法类指令除法类指令DIV IDIV CBW CWB 加法指令加法指令ADDADD减法指令减法指令SUBSUB例例: :加减运算加减运算将将AXAX、BXBX、CXCX寄存器中数据相加,再与寄存器中数据相加,再与DXDX中数据相减后,结果存入内存中数据相减后,结果存入内存0506H0506H处。处。写出指令。写出指令。ADD AX,BXADD AX,CX;AXAX+BXAXAX+BX;AXAX+B

2、X+CXAXAX+BX+CXSUB AX,DX;AXAX+BX+CX-DXAXAX+BX+CX-DXMOV 0506H,AX带进位加法指令带进位加法指令ADCADC ADCADC指令主要与指令主要与ADDADD配合,实现双字加法运算配合,实现双字加法运算带借位减法指令带借位减法指令SBBSBB SBBSBB指令主要与指令主要与SUBSUB配合,实现双字减法运算配合,实现双字减法运算例:例:双字加减双字加减在内存在内存5050H5050H、6100H6100H、6220H6220H三处各有一三处各有一个双字,将前两处双字相减后再与第三处双字相个双字,将前两处双字相减后再与第三处双字相加,结果存入

3、加,结果存入DXDX(高(高1616位)和位)和AXAX(低(低1616位)中。位)中。MOV AXMOV AX,5050H5050HMOV DXMOV DX,5052H5052HSUB AXSUB AX,6100H6100HSBB DXSBB DX,6102H6102HADD AXADD AX,6220H6220HADC DXADC DX,6222H6222H;第一处双字在;第一处双字在DXDX、AXAX中中;前两处双字的和在;前两处双字的和在DXDX、AXAX中中;最终结果在;最终结果在DXDX、AXAX中中增量指令增量指令INCINC 操作数不能是立即数。操作数不能是立即数。减量指令减量

4、指令DECDEC 操作数不能是立即数。操作数不能是立即数。比较指令比较指令CMPCMP 指令执行结果不送指令执行结果不送dstdst,只影响标志寄存器,只影响标志寄存器 不允许两个操作数都是存储器操作数不允许两个操作数都是存储器操作数如:如:AL=FFHAL=FFH,BL=FFHBL=FFH,执行,执行CMP ALCMP AL,BLBL执行结果:执行结果:AL=BL=FFHAL=BL=FFH PF=ZF=1 PF=ZF=1,CF=AF=SF=OF=0CF=AF=SF=OF=0转移指令转移指令转移指转移指令分类令分类无条件转移无条件转移条件转移条件转移JMPJMP多种多种无条件转移无条件转移 M

5、OV AX,0000HMOV AX,0000H MOV BX,1111H MOV BX,1111H JMP NEXT JMP NEXT MOV AL,FFH MOV AL,FFH SUB AX,BX SUB AX,BXNEXT:MOV AX,1234HNEXT:MOV AX,1234H;程序从此行跳到;程序从此行跳到NEXTNEXT处执行处执行条件转移条件转移 MOV AX,1111HMOV AX,1111H MOV BX,1111H MOV BX,1111H CMP AX CMP AX,BXBX JZ NEXT JZ NEXT ADD AX,BX ADD AX,BXNEXT:MOV BX,3

6、333HNEXT:MOV BX,3333H;若标志寄存器中;若标志寄存器中ZF=1ZF=1,则跳转,则跳转内存中有两个内存中有两个字节(无符号)字节(无符号),地址分别为,地址分别为X X和和Y Y,编程:,编程:(1 1)若)若X X大于大于0 0,则给,则给Y Y赋值为赋值为1 1(2 2)若)若X X等于等于0 0,则给,则给Y Y赋值为赋值为0 0(3 3)若)若X X小于小于0 0,则给,则给Y Y赋值为赋值为-1-1MOV ALMOV AL,X XCMP ALCMP AL,0 0JA ONEJA ONEJE TWOJE TWOJMP THREEJMP THREEONEONE:MOV

7、 YMOV Y,1 1 HLT HLTTWOTWO:MOV YMOV Y,0 0 HLT HLTTHREETHREE:MOV YMOV Y,-1-1 HLT HLT内存中有三个内存中有三个字(有符号)字(有符号),地址分别为,地址分别为X X、Y Y、Z Z,编程,将三个字中最大者放入内存地址为编程,将三个字中最大者放入内存地址为MAXMAX处。处。XvsYXvsYXYXY否则否则XYXZXZ否则否则XZXZYZ否则否则YZYZYmaxYmaxZmaxZmax内存中有三个内存中有三个字(有符号)字(有符号),地址分别为,地址分别为X X、Y Y、Z Z,编程,将三个字中最大者放入内存地址为编程

8、,将三个字中最大者放入内存地址为MAXMAX处。处。XmaxXmax: :YmaxYmax: :ZmaxZmax: :MOV MAX,AXMOV MAX,AXHLTHLTMOV MAX,BXMOV MAX,BXHLTHLTMOV MAX,CXMOV MAX,CXHLTHLTMOV AX, XMOV AX, XMOV BX, YMOV BX, YMOV CX, ZMOV CX, ZCMP AX, BXCMP AX, BXCMP BX, CXCMP BX, CXCMP AX, CXCMP AX, CXJG JG XvsZXvsZXvsZXvsZ: :YvsZYvsZ: :XvsYXvsY: :JM

9、P JMP YvsZYvsZJG JG XmaxXmaxJMP JMP ZmaxZmaxJG JG YmaxYmaxJMP JMP ZmaxZmax一个简易评分器,当按一个简易评分器,当按下相应数字键时,在屏下相应数字键时,在屏幕中显示分数。幕中显示分数。a ab bc cd de ef fg gh ha ab bc cd de ef fg gh hVCCVCC0 09 9ClearClear输输入入接接口口输输出出接接口口VCCVCC60H60H61H61H0 07 78 89 9C C输输入接口入接口0 07 79 9ClearClear90H90Ha ah h输输出接口出接口c ce e

10、a ab bc cd de ef fg gh h60H60H61H61H0 07 78 89 9C C输输入接口入接口90H90Ha ah h输输出接口出接口c cf f1)1)列出每一个按键对应的输列出每一个按键对应的输入信号和输出信号入信号和输出信号2 2)编程实现功能)编程实现功能乘法指令乘法指令MULMUL和和IMULIMUL 乘法指令中的操作数是乘法指令中的操作数是乘数乘数,该数,该数不能是立即数不能是立即数。 对对8 88=168=16:被乘数为被乘数为ALAL,乘积自动送,乘积自动送AXAX。 对对161616=3216=32:被乘数为被乘数为AXAX。乘积自动送。乘积自动送DX

11、DX,AXAX。格式:格式:MUL MUL srcsrc ;无符号数乘法;无符号数乘法格式:格式:IMUL IMUL srcsrc ;有符号数乘法;有符号数乘法例例: :乘法乘法已知已知AX=5612HAX=5612H,BX=1166HBX=1166H执行指令执行指令 MUL BLMUL BL 和和 IMUL BXIMUL BX MUL BL MUL BL;AXALAXALBLBL乘积:乘积:72CH72CH执行结果:执行结果:AX=072CHAX=072CH IMUL BX IMUL BX;DXDX,AX AX AX AX BX BX乘积:乘积:5D79D2CH5D79D2CH 执行结果:执

12、行结果:DX=05D7HDX=05D7HAX=9D2CHAX=9D2CH除法指令除法指令DIVDIV和和IDIVIDIV 除法指令中的操作数是除数,该数不能是立即数。除法指令中的操作数是除数,该数不能是立即数。 对对16168=88=8:被除数为被除数为AXAX,商自动送,商自动送ALAL,余数自动,余数自动送送AHAH。 对对323216=1616=16:被除数为被除数为DXDX,AXAX,商自动送,商自动送AXAX,余,余数自动送数自动送DXDX格式:格式:DIV DIV srcsrc ;无符号数除法;无符号数除法格式:格式:IDIV IDIV srcsrc ;有符号数除法;有符号数除法例

13、例:除法运算:除法运算设设AX=072DHAX=072DH,BL=12HBL=12H DIV BL DIV BL 执行结果:执行结果: AL = 66H AL = 66H (商)(商)AH = 00H AH = 00H (余数)(余数);16168=88=8,被除数,被除数AXAX,商,商;送;送ALAL,余数送,余数送AHAH。 乘法运算只允许乘法运算只允许8 88=168=16或或161616=3216=32两种。两种。 除法运算只允许除法运算只允许16168=88=8或或323216=1616=16两种。两种。怎样实现怎样实现16168 8161616168 88 8调整为调整为1616

14、1616调整为调整为32321616调整为调整为16168 8操作数扩展操作数扩展无符号数高位补无符号数高位补0 0有符号数高位补符号有符号数高位补符号用用MOVMOV用用CBWCBW、CWDCWD符号扩展指令符号扩展指令CBWCBW、CWDCWD CBWCBW、CWDCWD只用于只用于带符号数带符号数的扩展,无符的扩展,无符号数扩展用号数扩展用MOVMOV指令。指令。 扩展只能是扩展只能是ALAL到到AXAX,或者,或者AXAX到到DXDX,AXAX。 以符号位扩展。以符号位扩展。格式:格式:CBW CBW ;字节扩展成字;字节扩展成字格式:格式:CWD CWD ;字扩展成双字;字扩展成双字

15、例例:操作数扩展:操作数扩展假设被除数在假设被除数在AXAX中,除数在中,除数在CXCX中,实现无符号中,实现无符号数数16161616和带符号数和带符号数16161616。有符号:有符号: CBW CBW IDIV BL IDIV BL无符号:无符号: MOV AH MOV AH,00H00H DIV BL DIV BL假设被除数在假设被除数在ALAL中,除数在中,除数在BLBL中,实现无中,实现无符号数符号数8 88 8和和带符号数带符号数8 88 8。 无符号:无符号: MOV DX MOV DX,0 0 DIV CX DIV CX有符号:有符号: CWD CWD IDIV CX IDIV CX 写出执行以下计算的指令序列,其中写出执行以下计算的指令序列,其中X X、Y Y、Z Z、R R、W W均为存放均为存放1616位有符号数的内存单元地址。位有符号数的内存单元地址。(1) Z (1) Z W + ( Z - X ) W + ( Z - X )(2) (2) Z Z W - ( X + 6 ) -( R+9 ) W - ( X + 6 ) -( R+9 )(3) (3) Z Z ( W( WX X )/( Y+6 ), R )/( Y+6 ), R

温馨提示

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

评论

0/150

提交评论