运算器里当输入的数大于号怎么输入9时为什么结果为数据加6

4个数3,6,7,9添加适当的运算符号,使计算结果为24,添加后的算式为什么_百度知道
4个数3,6,7,9添加适当的运算符号,使计算结果为24,添加后的算式为什么
提问者采纳
3-((6-9)*7)3*((6+9)-7)3*(6+(9-7))3*(6-(7-9))3*((6-7)+9)3+((9-6)*7)3*((9+6)-7)3*(9+(6-7))3*(9-(7-6))3*((9-7)+6)3-(7*(6-9))(3*7)-(6-9)((3*7)-6)+93+(7*(9-6))((3*7)+9)-6(3*7)+(9-6)((6+9)-7)*3(6+(9-7))*3(6-(7-9))*3((6-7)+9)*36*(7-(9/3))9+((3*7)-6)(9+(3*7))-69-(6-(3*7))(9-6)+(3*7)9-(6-(7*3))(9-6)+(7*3)((9-6)*7)+3((9+6)-7)*3(9+(6-7))*39+((7*3)-6)(9+(7*3))-6(9-(7-6))*3((9-7)+6)*3(7*3)-(6-9)((7*3)-6)+9((7*3)+9)-6(7*3)+(9-6)(7-(9/3))*6(7*(9-6))+3
其他类似问题
为您推荐:
其他1条回答
3×(9-7+6)=24
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁如图是一个运算器的示意图,A,B是输入的两个数据,C是输出的结果.右下表是输入A,B数据后,运算器输出C的对应值.请你据此判断,当输入A值是1999,输入B值是9时,运算器输出的C值是(  )
A.0 B.1 C.2
…1;故C的值是1.故选:B.
为您推荐:
扫描下载二维码如图是一个简单的数值运算程序,当输入n的值为4时,则输出的结果为_______百度知道
如图是一个简单的数值运算程序,当输入n的值为4时,则输出的结果为______
当输入n的值为4时.baidu://c.hiphotos.hiphotos://c.com/zhidao/wh%3D600%2C800/sign=/zhidao/pic/item/b21bb051fadbd4e624.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http.jpg" esrc="/zhidao/wh%3D450%2C600/sign=2dd42a5f5c09af360b1fadbd4e624://c.baidu如图是一个简单的数值运算程序.baidu,则输出的结果为______.<a href="http.hiphotos
提问者采纳
则输出的结果为132.故答案为将n=4代入得,将n=12代入得:n2-n=132>28:n2-n=16-4=12<28
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁某同学学习它编程后,写它一个关于实数运算的程序,当输入一个数值后,屏幕输出的结果总比该数的平方大1_百度知道
某同学学习它编程后,写它一个关于实数运算的程序,当输入一个数值后,屏幕输出的结果总比该数的平方大1
wordS height: 0px">7后; background-clip: 2px,屏幕输出的结果总比该数的平方大1.若该同学按此程序输入
提问者采纳
background- /zhidao/pic//zhidao/pic/item/c2cec3fdfcadbbc1e25f6://hiphotos: initial,输出x2+着=65.故答案为: initial://hiphotos: 7wordWrap:normal: hidden"><div style="width:输入8;wordSpacing: initial:nowrap
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁3.3.2 算术运算类指令
微机原理与接口技术多媒体教学课件
位置:--第三节
算术运算类指令
3.乘法指令
乘法共有两条指令。
(1)MUL(unsigned multiply):无符号数的乘法指令
  格式:MUL
  操作:s为字节操作数:AX←AL(s)
  s为字操作数:DX, AX←AX(s)
  MUL指令中仅有一个操作数(源操作数),表示乘数,可使用寄存器或各种寻址方式的存储器操作数,而绝对不可以使用立即数和段寄存器。指令中的目标操作数隐含在指令中且必须使用累加器(表示被乘数),字节相乘时用AL,字相乘时用AX。乘法操作的过程如图3.15所示。
  由图3.15(a)可知两个八位数相乘时,用AL中的被乘数乘以指令操作数指定的乘数,得到的乘积为16位,存放在AX中。由图3.15(b)可知两个16位数相乘时,用AX中的被乘数乘以指令操作数指定的乘数,得到的乘积为32位,存放在DX, AX中(DX存放结果的高位字,AX存放结果的低位字)。
(2)IMUL(signed multiply):有符号数的乘法指令
  格式:IMUL
  操作:s为字节操作数:AX←AL(s)
  s为字操作数:DX, AX←AX(s)
  IMUL指令执行的操作与MUL指令基本相同,不同之处在于MUL指令中的操作数为无符号数,而IMUL指令中的操作数为有符号数。
  无符号数和有符号数的乘法指令的执行结果是不同的。例如:两个四位二进制数,如果理解为不带符号数用MUL指令运算则,1110B×0011B=2AH(即十进制数的14×3=42)。如果理解为带符号数用IMUL指令运算时,1110还原的原码为1010B(十进制数的-2),0011B的原码仍为0011B(十进制数的+3),运算时,先去掉符号位,将两数绝对值相乘,0010B×0011B=B,其结果的符号按两数符号位“异或”运算规则确定,10=1结果为负,再将相乘所得的结果取补码,所以,最后相乘的结果为B=FAH(十进制数-2×3=-6)。
  乘法指令的操作影响OF和CF标志位,对其余的标志位无定义(指令执行后,这些标志位的状态不确定)。对于MUL指令,如果乘积的高一半数位为零,即字节操作时AH=0,字操作时DX=0,则操作结果使CF=0, OF=0。否则,若AH≠0或DX≠0时,则CF=1, OF=1,这种情况的标志位状态可以用来检查字节相乘的结果是字节还是字,字相乘的结果是字还是双字。而对于IMUL指令,如果乘积的高一半数位是低一半符号位的扩展时,CF=0, OF=0,否则,CF=1, OF=1。
【例3.25】
  指令执行前,AL=B4H=180, BL=11H=17。
  指令执行:
  指令执行后,AX=0BF4H=3060, BL=11H, CF=1, OF=1。
【例3.26】
  指令执行前,AL=B4H=-76, BL=11H=17。
  指令执行时,先将AL和BL中的内容转换为原码并将符号位去掉(AL=4CH),数值部分相乘。
  再求结果的符号,10=1,即乘积应该为负数,将结果取补码(050CH)补=FAF4H=-1292, BL=11H, CF=1, OF=1。
4.除法指令
除法共有四条指令。
(1)DIV(unsigned divide):无符号数的除法指令
  格式:DIV
  操作:分为字节和字两种操作类型。
  字节操作时,16位被除数在AX中,8位除数为源操作数,结果的8位商在AL中,8位余数在AH中,表示为:
  AL←AX/(s)
  AH←AX/(s)
  字操作时,32位被除数在DX和AX中,其中DX为高位字,16位除数为源操作数,结果的16位商在AX中,16位余数在DX中,表示为:
  AX←DX, AX/(s)
  DX←DX, AX/(s)
  DIV指令的被除数、除数、商和余数全部为无符号数。
(2)IDIV(signed divide):有符号数的除法指令
  格式:IDIV
  操作:与DIV指令相同,只是被除数、除数、商和余数均为有符号数,且余数的符号和被除数的符号相同。
  这两条除法指令中的操作数s的规定与乘法指令相同。除法指令的操作过程如图3.16所示。
  除法指令执行后,标志位AF, OF, CF, PF, SF和ZF都是不确定的。
  用IDIV指令时,如果是一个双字除以一个字,则商的范围为-32728~+32727。如果是一个字除以一个字节,则商的范围为-128~+127。如果超出这个范围,那么会产生0型中断,以除数为0的情况来处理,而不是使溢出标志OF置1。
  和有符号数的乘法指令类似,IDIV指令运算时,先将数变为原码,并去掉符号位。然后再将两数(绝对值)相除。其结果,商的符号按两符号位“异或”运算规则确定,如符号位为1(负数),再取补码。
  由于除法指令的字节操作要求被除数为16位,字操作要求被除数为32位,当实际数据不满足以上要求时,就需要进行被除数位数的扩展。
  对于无符号数除法指令DIV来说,只需将字节操作时被除数的高8位AH和字操作时被除数的高16位DX清0就行了。
  对于有符号数除法指令IDIV来说,AH和DX的扩展是将其低位字节或低位字的符号位扩展。即把AL中的最高位扩展到AH的8位中(正数为00H,负数为FFH),或者把AX中的最高位扩展到DX的16位中(正数为0000H,负数为FFFFH)。为此,80486指令系统提供了专门的符号扩展指令CBW和CWD。
(3)CBW(convert byte to word):字节转换为字指令
  格式:CBW 
  操作:AL中的符号位(最高位D7)扩展到AH中。若AL中的D7=0,则AH=00H。若AL中的D7=1,则AH=FFH。
(4)CWD(convert word to doubleword):字转换为双字指令
 格式:CWD
  操作:AX中的符号位(最高位D15)扩展到DX中。若AX中的D15=0,则DX=0000H,若AX中的D15=1,则DX=FFFFH。
  CBW和CWD指令执行结果都不影响标志位。
  下面举例说明除法指令的用法。
【例3.27】 DIV BL
&&& 指令执行前,AX=0400H=1024, BL=B4H=180。
&&& 指令执行:
&&& 指令执行后,AL=05H=5(商),AH=7CH=124(余数)。
【例3.28】 IDIV BL
&&&& 指令执行前,AX=0400H=+1024,BL=B4H=-76。
&&&& 指令执行,先将BL中的内容转换为原码,去掉符号位,BL=4CH,数值部分相除。
&&& 数值相除后,求商的符号,01=1即商为负数,对商再求补码得F3H,余数的符号与被除数相同。
&&& 指令执行后,AL=F3H=-13(商),AH=24H=36(余数)。
下面是用加、减、乘、除指令进行算术运算的例子。
【例3.29】 计算(V-((X×Y)+Z-540))÷X
&&& 其中X, Y, Z, V均为16位有符号数,已分别装入内存的X, Y, Z, V字单元中。要求将上式计算得到的结果存入AX中,余数存入DX中。现编制程序如下:
MOV& AX, X ;
将被乘数X存入AX中
DX, AX←X×Y
MOV& CX, AX
MOV& BX, DX 将乘积存入BX, CX中
MOV& AX, Z ; 将加数Z存入AX中
CWD ; 将加数扩展为双字存入DX, AX中
ADD& CX, AX
ADC& BX, DX ;
完成X×Y+Z并将结果存入BX, CX中
SUB& CX, 540
SBB& BX, 0 完成X×Y+Z-540,结果存入BX, CX中
MOV& AX, V ;
CWD ; 将V扩展为双字数据存入DX,
SUB& AX, CX
SBB& DX, BX ;
完成V-(X×Y+Z-540),并将结果存入DX, AX中
IDIV ; 完成(V-(X×Y+Z-540))÷X运算,并将结果存入DX, AX中
5.十进制调整指令
&&& 前面介绍过的算术运算指令都是二进制数的运算指令,如果我们想进行十进制数的运算时,必须先把十进制数转换为二进制数,用相应的二进制运算指令进行运算,然后再将运算得到的二进制结果转换为十进制数加以输出。为了便于十进制数的运算,80486指令系统中提供了一组专门用于十进制调整的指令,可将由二进制运算指令得到的结果进行调整,从而得到十进制数的结果。
&&& 表示十进制数的BCD码分为两种:压缩BCD码和非压缩BCD码。
&&& 压缩的BCD码用四位二进制数表示一个十进制数位,整个十进制数形式为一个顺序的以四位为一组的数串。
&&& 例如,十进制数8564的压缩BCD码形式为:
&&& 10 0100
&&& 用十六进制表示为8564H。
&&& 非压缩的BCD码以8位二进制数为一组,表示一个十进制数位,8位中的低4位表示一位8421BCD码,而高4位则没有意义,通常将高4位清0。例如:8564的非压缩BCD码形式为:
&&& 用十六进制表示为H,为四字节数据。
&&& 从而可以看出,由于一个数字0~9的ASCII码其高4位为0011,低4位是以8421BCD码表示的十进制数位,符合非压缩BCD码高4位无意义的规定。
&&& 用普通二进制运算指令对BCD码运算时,为什么要进行调整呢?又怎样进行调整呢?下面通过加法来说明十进制调整的原理。
【例3.30】 7+6=13
&& 即BCD码的7加6,结果为十六进制数DH,在BCD码中,只允许出现0~9共10个数字,D不代表任何BCD码,因此必须要把它转换,即进行调整。
&& 如何调整呢?我们知道,BCD码运算的进位规则是“逢十进一”的,但80486指令系统中的加法指令进行的运算是二进制运算,对四位运算来说,是“逢十六进一”。用这些加法指令进行十进制运算时,必须跳过六个数的编码,这些数在二进制中是存在的,而在BCD码中是不存在的。因此在调整时,遇到运算结果中出现时,就必须加0110(6)进行调整,让其产生进位得到正确的十进制结果。若对上例的结果进行加6调整,则:
【例3.31】
28+39=67
&&& 用压缩BCD码表示并用二进制加法指令相加时,过程如下:
&&& 若将结果看成BCD码,则表示十进制数61,显然是错误的。原因是计算机在运算时,要使低4位向高4位进位,二进制数必须是逢16才能进位,而BCD码是逢十进一,所以当BCD码按照二进制运算规则进行计算时,只要产生了半进位,就会“暗中”丢失了一个6,因此,必须在结果的低4位加6调整,才能得到正确的结果。对上例的结果进行加6调整。则:
【例3.32】 80+94=174
&&& 将两个加数用压缩BCD码表示并用二进制加法指令相加时,过程如下:
&&& 表示十进制数结果114,而不是174,错误的原因是高4位产生进位CF=1,所以应该对运算结果的高4位加6调整,则
&&& 由此可知:当BCD码的数位增多需要进行多字节BCD码加法时,调整的原理是一样的。凡是遇上某4位二进制数值大于9时,则加6进行调整。凡是一个字节中的低4位向高4位产生进位(AF=1),或者是低位字节向高位字节产生进位(CF=1)时,也应加6调整。十进制调整指令会根据AF或CF的状态做出判断,看是否需要进行加6调整。
&&& 如果是进行多字节BCD码减法时,则相应地进行减6调整,乘、除法也有相应的调整办法。
&&& (1)压缩的BCD码调整指令
&&& ① DAA(decimal
adjust AL after addition):加法的十进制调整指令。
&&& 格式:DAA
&&& 操作:DAA指令必须紧跟在二进制加法指令ADD或ADC之后,将二进制加法的结果(必须放在AL中)调整为压缩的BCD码格式,再存回到AL中。可见,二进制加法指令ADD/ADC和DAA指令构成复合的压缩BCD码加法指令。
&& DAA指令的调整方法:考查结果(在AL中)的低4位和高4位的值以及半进位标志AF和进位标志CF的状态,如果结果的低4位的值大于9或有AF=1时,则将结果的低4位加6调整,并将AF标志位置1。如果结果的高4位的值大于9或有CF=1时,则将结果的高4位加6调整,并将CF标志位置1;如果结果的高4位和低4位的值均大于9或既有AF=1,又有CF=1时,则将结果的高低4位均加6调整,并将AF,CF标志位均置1,从而得到正确的压缩BCD码结果。
&& DAA指令对OF标志无定义,但却影响其他所有标志。
【例3.33】
ADD AL,DL
指令执行前:AL=27H, DL=49H。
执行ADD指令
& 由于ADD指令执行后,得到的是二进制结果,不是压缩BCD码,又有AF=1,必须作十进制调整。
& 执行DAA指令
此时,AL=76H是压缩的BCD码加法,结果为76(27+49=76)。
【例3.34】
如(BCD1)=1834H,(BCD2)=2789H,要求将这两个十进制数相加,相加的和存入BCD3中,即
     (BCD3)←(BCD1)+(BCD2)
  BCD1和BCD2都是4位压缩的BCD码,每个数都占有两个字节单元,高位字节数据存放在高地址单元中,其存放方式为:
  (BCD1)=34H,
(BCD1+1)=18H
  (BCD2)=89H,
(BCD2+1)=27H
  根据题目要求编写出4位十进制数相加的程序如下:
&&&& ; 取第一个数低2位BCD码送AL &&&
&&&& ; 两个数低2位BCD码二进制加,结果送AL
&&&&&&&&&& ; 十进制调整,得到BCD码结果&&
&&& ; 存低2位BCD码结果到BCD3码单元
AL, BCD1+1
&& ; 取第一个数高2位BCD码送AL
AL, BCD2+1
&&& ; 两个数高2位BCD码带低位进位相加,得到二进制结果
&&&&&&& ; 十进制调整,得到BCD码结果
BCD3+1, AL
存高2位BCD码结果到BCD3+1单元
  本程序共有8条指令,分成两组。第一组前4条指令,完成两个加数低2位BCD码相加,经十进制调整后存入DCD3中。其中,ADD指令执行后,AL=BDH, CF=0, AF=0,经DAA指令调整后,AL=23H, CF=1, AF=1。
  第二组后四条指令完成两个加数高2位BCD码带进位相加,经十进制调整后存入BCD3+1单元中。其中ADC指令执行后,AL=18H+27H+1=40H, CF=0, AF=1,经DAA指令执行后,AL=46H, CF=0, AF=0。
  程序执行完后,字单元(BCD3)=4623H,结果正确。
② DAS(decimal
adjust AL after subtraction):减法的十进制调整指令。
  格式:DAS
  操作:DAS指令必须紧跟在二进制减法指令SUB或SBB指令之后,将二进制减法的结果(必须放在AL中)调整为压缩的BCD码格式,又存回AL中。可见,二进制减法指令SUB/SBB和DAS指令构成了复合的压缩BCD码减法指令。
  DAS指令的调整方法类似于DAA,只是在需要进行十进制调整时,DAA指令是加6调整,而DAS指令是减6调整。对标志位的影响也同DAA指令。
【例3.35】
&&& 指令执行前:AL=88H, AH=49H。
&&& 执行SUB指令后,AL=3FH, AF=1。
&&& 执行DAS指令,因为AF=1,需减06H进
 & 行调整。指令执行后,AL=39H,是压缩的
&&&&BCD码减法结果39(88-49=39)。
(2)非压缩的BCD码调整指令
① AAA(ASCII
adjust after addtion):加法的ASCII码调整指令。
  格式:AAA
  操作:和DAA指令一样,AAA指令也必须紧跟在二进制加法指令ADD/ADC之后,先用二进制加法指令将两个非压缩的BCD码相加,并把结果存入AL寄存器中,指令执行时:
  AL←把AL中二进制加法的结果调整为非压缩BCD码格式;
  AH←AH+调整产生的进位值。
  即考查AL寄存器的低4位的值或AF标志,一旦发现其低4位的值大于9或AF=1时,则将AL寄存器的内容加6调整,AH寄存器的内容加1,将AF标志位置1,清除AL寄存器的高4位,并将AF的值送给CF,AAA指令影响AF和CF标志位,对其余的标志位无效。
【例3.36】
  指令执行前,AX=0135H, CL=38H。从而可知:寄存器AL和CL的内容分别为数字5和8的ASCII码。
  ADD指令执行完后,AL=6DH, AF=0。
  AAA指令执行完后,AX=0203H, AF=1, CF=1,结果正确。
② AAS(ASCII
adjust AL after subtraction):减法的ASCII码调整指令。
  格式:AAS
  操作:和DAS指令一样,AAS必须紧跟在二进制减法指令SUB或SBB之后,先用二进制减法指令将两个非压缩的BCD码相减,并将结果存入AL寄存器中。AAS指令执行时:
  AL←把AL中减法结果调整为压缩的BCD格式;
  AH←AH-调整产生的借位值。
  即考查AL寄存器的低4位的值或AF标志,一旦发现其低4位的值大于9或AF=1,则把AL寄存器的内容减6,AH寄存器的内容减1,将AF标志位置1,清除AL寄存器的高4位,并将AF的值送给CF。AAS指令操作对标志位的影响同AAA指令。
【例3.37】
      AAS
  指令执行前,AX=0236H, DL=39H。从而可知:寄存器AL和DL的内容分别为数字6和9的ASCII码。
  SUB指令执行完后,AL=FDH, AF=1。
  AAS指令执行完后,AX=0107H, AF=1, CF=1,结果正确。
③ AAM(ASCII adjust AX after multiplition):乘法的ASCII码调整指令。
  格式:AAM
  操作:AX←把AL中的二进制乘积调整为非压缩的BCD格式
  在AAM指令执行前,必须先执行MUL指令,将两个非压缩的BCD码相乘(此时要求其高4位为0),结果放在AL寄存器中。AAM指令的调整方法:将AL寄
  存器的内容除以0AH,所得的商(为高位十进制数)保存在AH寄存器中,余数(为低位十进制数)保存在AL寄存器中。
  AAM指令影响标志位SF, ZF和PF,但对OF, CF和AF位无意义。
【例3.38】MUL
     AAM
  指令执行前,AL=07H, BL=09H。
  执行MUL后,AL=3FH。
  执行AAM后,AH=06H, AL=03H。
④ AAD(ASCII adjust AX before division):除法的ASCII码调整指令。
  格式:AAD
  操作:AL←10×AH+AL
  前面所述的加法、减法和乘法的ASCII码调整指令都是用加法、减法和乘法指令对两个非压缩的BCD码运算之后,再使用AAA, AAS, AAM指令来对运算结果进行十进制调整的,而AAD指令则是在除法之前先进行调整操作。
  AAD指令的调整操作是将预先存放在AX中的两位非压缩BCD码的十进制数调整为二进制数,存放在AL中。具体做法是将AH中的高位十进制数乘以10,与AL中的低位十进制数相加,结果以二进制数形式保留在AL中,然后将AH清0。
【例3.39】
  指令执行前,AX=0607H。
  操作过程:AL = (AH)×10+(AL)
&&&&&&&&&&& = 06×10+07
&&&&&&&&&&& = 67
&&&&&&&&&&& = 43H
  AAD指令执行后,AX=0043H。
&&&    &
       

我要回帖

更多关于 如何输入大于等于号 的文章

 

随机推荐