下列程序要完成16位无符号数相加,两数分别存于30H,31H和40H,41H(低位在前),并把和存于30H,31H中(设和无进位输出)。请指出错误,并改正之。
MOV A,30H
ADD A,40H
MOV 30H,A
MOV A,31H
ADD A,41H
MOV 31H,A
错误:______
改正:______
参考答案:错误
A.二进制数只由两位数组成
B.二进制转化为八进制时,当分组不足3位,分别向高位或低位补0凑成3位
C.十进制转化为其它进制时,其整数部分和小数部分在转换时需作不同的计算
D.八进制转化为十六进制时,可以通过二进制数作为中间桥梁,先转化为二进制数,再转化为十六进制
E.二进制转化为十六进制时,当分组不足4位,分别向高位或低位补0凑成4位
两个浮点数相加,一个数的阶码值为7,另一个数的阶码值为9,则需要将阶码值较小的浮点数的小数点()
A.左移一位
B.右移一位
C.左移二位
D.右移二位
试编子程序,返回16位二进制数中指定位段的零状态。已知:
入口参数:AX=16位二进制数;
BL=高4位b1、低4位b0;
其中b1和b0分别为位段最高位编号和最低位的编号(15~0)。
出口参数:CE=0;
若指定位段为0,ZF=1,否则ZF=0。
注意:若b1小于b0,则不予处理,返回CF=1。
#include
main(int x,int b[])
{int k=0,r,i;
scanf("%d",x);
do .
{r=x%2;
b[______]=r;/*第一空*/
x/=2;
}while(______);/*第二空*/
for(______);i>=0;i--)/*第三空*/
print f("%d",b[i]);
}