1)用CF可检测无符号数是否溢出,用OF可检测带符号数是否溢出;
2)无符号数运算结果溢出是在超出了最大的表示范围这唯一的原因下发生的,溢出也就是产生进位,这不能叫出错。因此,在多字节数的相加过程中,正是利用溢出的CF来传递低位字节向高位字节的进位;而带符号数运算产生溢出就不同了,它是由Cs和C。两种综合因素表示的,一当发生溢出,就表示运算结果出错。
这种情况的出现在于,在CPU内部,有符号数依然是作为无符号数来运算的,即符号位也是要参与运算的,所以会出错。
算术运算指令涉及的操作数从表示的进制来讲,可以是二、十六进制数,也可以是BCD码表示的十进制数,因一位BCD码用4位二进位表示,因此操作数为BCD十进制数时,是不带符号的十进制数。十进制数运算所得结果,应加校正指令进行调整,8086专门设有对BCD码运算结果进行调整的各种指令。
8086算术运算指令可用的BCD码有两种;一种叫组合的BCD码(Packed BCD),即l个字节表示2位BCD码;另一类叫非组合的BCD码(UnPacked BCD),用这类代码时,1个字节只用低4位来表示l位BCD码,高4位为0(无意义)。
算术运算指令的特点有:
1)在加、减、乘、除基本运算指令中,除±1指令外,都具有两个操作数;
2)这类指令执行后,除±1指令不影响CF标志外,对CF,OF,ZF,SF,PF和AF等6位标志均可产生影响,由这6位状态标志反映的操作结果的性质如下:
①当无符号数运算产生溢出时,CF=l;
②当带符号数运算产生溢出时,OF=1;
③当运算结果为零,ZF=l;
④当运算结果为负,SF=1;
⑤当运算结果中有偶数个1,PF=1;
⑥当操作数为BCD码,半字节间出现进位,需要进行BCD码调整,AF=1。
(简答题)
简述无符号数和带符号数的特点?
正确答案
答案解析
略
相似试题
(简答题)
分别将下列二进制数作为无符号数和带符号数转换为十进制和十六进制数。 11010011; 01110111; 10000011; 00101111; 10101010。
(判断题)
CF标志位,不但可以用来判断无符号数有无溢出,而且也可以判断带符号数有无溢出。
(填空题)
当标志位()=1时表示无符号数运算产生溢出,而当标志位()=1是表示带符号数运算产生溢出。
(简答题)
若机器字长为16位,其无符号数表示范围是多少?带符号数表示范围是多少?分别用十进制和十六进制表示。
(填空题)
现有一个二进制数10110110,若将该数分别看作是无符号数、补码表示的带符号数,它对应的十进制数的真值是()和()。
(简答题)
填写表格,注意对比无符号数和带符号整数的乘法结果,以及截断操作前、后的结果。
(简答题)
下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?FF
(简答题)
下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?D8
(简答题)
编写一段程序,使汇编程序根据SIGN中的内容分别产生不同的指令。如果(SIGN)=0,则用字节变量DIVD中的无符号数除以字节变量SCALE;如果(SIGN)=1,则用字节变量DIVD中的带符号数除以字节变量SCALE,结果都存放在字节变量RESULT中。