《计算机系统基础》试卷 (编号:A )注意事项:1.本试卷适用于2018级软件工程专业学生使用。
2.本试卷共8页,满分100分,答题时间90分钟。
3.考试采用开卷形式。
题号一 二 三 四 总分 得分得分 评卷人 一、单项选择题(在每小题给出的4个选项中,只有一项是正确的,将正确选项的字母标号填写在“单项选择题答题表”相应题号下的空格中。
本大题共10道小题,每小题1分,共10分)单项选择题答题表题号 1 2 3 4 56 7 8 9 10答案1. 108对应的十六进制形式是(__)。
A .5CHB .63HC .6CHD .B4H2. C 语言程序段:short si=–8196; unsigned short usi=si; 运行后,usi 的值是(__)。
A .57339B .57340C .8196D .345723. 采用IEEE 754单精度浮点数格式表示–1028的结果(十六进制)是(__)。
A .44808000HB .C4C04000HC .C4808000HD .44C04000H4. 若已知int i=12345, float f=1.2345e3,则在一个32位机器中执行下列表达式时,结果为“假”的是(__)。
A .f==(float)(int)fB .f==(float)(double)fC .i==(int)(double)iD .i==(int)(float)i装订线班级:姓名:学号:5.假定某计算机按字节采用小端方式编址,一个float型变量x的地址为0xffffc000,x=12345678H,则在内存单元0xffffc001中存放的二进制串是(__)。
A.01010110B B.0001001000110100BC.0101B D.00110100B6.假设变量x的位数为n(n>=8),使得x的最高有效字节不变,其余各位全变为0的C语言表达式为(__)。
A.((x&0xFF)<<(n-8))>>(n-8) B.((x&0xFF)>>(n-8))<<(n-8)C.(x>>(n-8))<<(n-8) D.(x<<(n-8))>>(n-8)7.若在一个8位计算机中完成x+2y的运算,假定变量x和y的机器数用补码表示为[x]补=44H,[y]补= DCH,则x+2y的机器数及相应的溢出标志OF分别是(__)。
A.32H、1 B.FCH、1C.FCH、0 D.32H、08.对于IEEE 754单精度浮点数加减运算,只要对阶时得到的两个阶之差的绝对值|ΔE|大于等于(__),就无需继续进行后续处理,此时,运算结果直接取阶大的那个数。
A.25 B.128C.127 D.239.假设R[eax]=0000B160H,R[ebx]=00FF0110H,执行指令“imulw %bx”后,通用寄存器的内容变化情况为(__)。
A.R[eax]=FFAC7600H,其余不变B.R[eax]=00007600H,R[dx]=FFACHC.R[eax]=00BC7600,其余不变D.R[eax]=00007600H,R[dx]=00BCH10.假定全局数组a的声明为char *a[8],a的首地址为0x80498c0,i 在ECX中,现要将a[i]取到EAX相应宽度的寄存器中,则所用的汇编指令是()。
A.mov 0x80498c0( , %ecx), %ahB.mov (0x80498c0, %ecx), %ahC.mov 0x80498c0( , %ecx, 4), %eaxD.mov (0x80498c0, %ecx, 4), %eax二、填空题(将第11~20小题的答案填写在题目中的横线上。
本大题共10道小题、每小题2分,共20分)10.程序P在时钟频率为2GHz的机器M1机器上需要运行10秒,在具有与M1相同的ISA上的运行时间是6秒。
如果P在M2上的CPI是在M1上的CPI的1.5倍,则M2的时钟频率至少应是(5)GHz。
11.在采用16位补码的计算机中,十进制数-2047的机器数是(____F801_____H)。
12.在IA32计算机中,执行C语言的printf("uv=%u\n",(unsigned short)(-32768); 语句后,将在终端显示uv=(___32768_____)。
13.在IA32中,与用补码表示的十进制数v(v<0)的位模式相同的无符号数u=(_v+232__)。
14.处理器中用来保存着最近执行的算术或逻辑指令的状态信息的部件称为(___条件码寄存器/标志寄存器/Flag 寄存器____)。
15.汇编语句movq %rdx %rbx的功能是(_____将rdx的内容传送到rbx_____)。
16.Movb (%rdi, %rcx) %al 的寻址方式是(___变址寻址____)。
17.超标量计算机系统中负责接收实际程序指令并将所接受的指令转换为一组基本操作(微操作)的部件是(_____指令译码逻辑/指令译码器/译码器_____)。
18.链接器把编译器所产生的符号与具体物理内存单元联系起来的过程称为(___地址重定位/地址映射___)。
19.CPU中用来存放正在执行指令的部件称为(____指令寄存器___________)。
三、计算题(根据每小题的具体要求,解答第21至第24小题。
本大题共4道小题,每小题10分,共40分。
)20.(12分)假设有两台采用2的补码表示有符号整数的机器,机器1采用4位整数,机器2采用6位整数。
填写下表中的空白单元格。
int x = -5;unsigned ux = x;?21.下表是5位补码加法的实际例子,填写表中空白单元格(数据采用二进制)。
情况分为4种:1-正溢出,2-正确正值,3-正确负值,4-负溢出。
22.一个在32 位计算机中运行的C 语言程序中对变量设置了初值,写出它们对应的十六进制机器数,要求简要说明理由。
(1)int x=-32768 (2)short y=532 (3)unsigned z=65527(4)char c=’A’ (5)float a=-1.75(1)FFFF8000H(1分)-215=-1000 0000 0000 0000B,负数符号位为1,int 型整数表示为32 位,故机器数为1…1 1000 0000 0000 0000=FFFF8000H (1分)(2)0224H (1分)532=10 0001 0100B,正数符号位为0,short 型整数表示为16 位,故机器数为0000 0010 0001 0100=0214H(1分)(3)0000FFF7H(1分)65527=216-1-8=1111 1111 1111 0111B,unsigned 型整数表示为32 位,无符号位(高位补0),故机器数为0000FFF7H(4)41H(1分)‘A’的ASCII 码是41H,char 型表示为8 位(1分)(5)BFE00000H(1分)-1.75=-1.11B=-1.11×20,阶码为0+ 127=01111111B, 数符为1,尾数小数部分0.11,所以-1.75 表示为10111111 1110 0000 0000 0000 0000 0000, 用十六进制表示为BFE00000H(1分)23.采用IEEE 754 单精度浮点数,按照对阶、尾数相加、规格化、舍入、溢出判断等5个步骤计算0.875+(-33.75)的值。
(1) 将0.875、-33.75转化为二进制的机器表示:(3分)x=0.875=0.111B=(1.110...0)2×2-1,y=-33.75=-100001.11B=(-l.00001110...0)×25,用IEEE754标准单精度格式表示为:[x]浮=0 01111110 11000000...0,[y]浮=1 10000100 00001110 0用Ex、Ey分别表示[x]浮、[y]浮的阶码,Mx,My分别表示[x]浮、[y]浮的尾数,则有:Ex=01111110,Mx=0l.110000000...0,Ey=10000100,My=11.000011100...0,尾数Mx,My的小数点前面的左起第1位为符号位,第2位是隐藏位“1”。
(2)对阶(2分)(ΔE)补=Ex+[-Ey]补= 0111 1110 + 0111 1100=1111 l010(mod 28)=-6, 故Ex向Ey对齐Ex=Ey=10000100,Mx,=00.000001110...0,即将x的尾数右移6位,符号不变,数值高位0,隐藏位右移到小数点后面,并保留最后移出的两位。
(3)尾数相加(2分)Mb=Mx+My=00.000001110...00+11.000011100...0=11.000001110...0 00(3)规格化(1分)所得尾数已经是规格化的形式(数值部分最高位为1)。
(4)舍入(1分)将结果的尾数Mb中最后两位附加位进行舍入得:11.000001110 0(5)溢出判断(1分)上述阶码计算和调整过程中,没有发生”阶码上溢”和"阶码下溢的问题最终结果为Eb=10000100 ,Mb=l(l).000001110...0,即:(-1.00000111)2×25=-32.875四、综合题(通过分析或计算详细解答第25~27小题。
本大题共3道小题,每小题10分,共30分)24.假设某个C语言函数func的原型声明如下:void func(int *xptr, int *yptr, int *zptr);函数func的过程体对应的机器级代码用AT&T汇编形式表示如下:(1)movl10(%ebp), %eax(2)movl14(%ebp), %ebx(3)movl 18(%ebp), %ecx(4)movl(%ebx), %edx(5)movl(%ecx), %esi(6)movl (%eax), %edi(7)movl%edi, (%ebx)(8)movl%edx, (%ecx)(9)movl %esi, (%eax)解答下列问题:(1)在过程体开始时三个入口参数对应实参所存放的存储单元地址是什么?(提示:当前栈帧底部由帧指针寄存器EBP指示)(2)根据上述机器级代码写出函数func的C语言代码。
(1)xptr对应实参所存放的存储单元地址:R[ebp]+10;(1分)yptrr对应实参所存放的存储单元地址:R[ebp]+14;(1分)zptr对应实参所存放的存储单元地址:R[ebp]+18。