1 / 8
文档名称:

计算机系统基础试卷.pdf

格式:pdf   大小:805KB   页数:8页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算机系统基础试卷.pdf

上传人:1781111**** 2024/5/11 文件大小:805 KB

下载得到文件列表

计算机系统基础试卷.pdf

相关文档

文档介绍

文档介绍:该【计算机系统基础试卷 】是由【1781111****】上传分享,文档一共【8】页,该文档可以免费在线阅读,需要了解更多关于【计算机系统基础试卷 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。《计算机系统基础》试卷(编号:A)注意事项:。,满分100分,答题时间90分钟。。题号一二三四总分装得分:号学得分评卷人一、单项选择题(在每小题给出的4个选项中,只有一项是正确的,将正确选项的字母标号填写在“单项选择题答题表”相应题号下的空格中。本大题共10道小题,每小题1分,共10分)单项选择题答题表题号**********(__)。::shortsi=–8196;unsignedshortusi=si;运行后,usi的值是(__)。–1028的结果(十六进制)是(__)。=12345,floatf=,则在一个32位机器中执行下列表达式时,结线果为“假”的是(__)。==(float)(int)==(float)(double)f..:Ci==(int)(double)iDi==(int)(float),一个float型变量x的地址为0xffffc000,x=12345678H,则在内存单元0xffffc001中存放的二进制串是(__)。(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)+2y的运算,假定变量x和y的机器数用补码表示为[x]=44H,[y]=DCH,则x+2y的机器数及相应的溢出标志OF分别是(__)。、、、、,只要对阶时得到的两个阶之差的绝对值|ΔE|大于等于(__),就无需继续进行后续处理,此时,运算结果直接取阶大的那个数。[eax]=0000B160H,R[ebx]=00FF0110H,执行指令“imulw%bx”后,通用寄存器的内容变化情况为(__)。[eax]=FFAC7600H,[eax]=00007600H,R[dx]=[eax]=00BC7600,[eax]=00007600H,R[dx]=*a[8],a的首地址为0x80498c0,i在ECX中,现要将a[i]取到EAX相应宽度的寄存器中,则所用的汇编指令是()。(,%ecx),%(0x80498c0,%ecx),%(,%ecx,4),%(0x80498c0,%ecx,4),%eax2页共8页得分评卷人二、填空题(将第11小题的答案填写在题目中的横线上。本大题共10道小题、每小题2分,共20分),在具有与M1相同的ISA上的运行时间是6秒。,则M2的时钟频率至少应是(5)GHz。,十进制数-2047的机器数是(____F801_____H)。,执行C语言的语句后,将在终端显示uv=(___32768_____)。,与用补码表示的十进制数v(v<0)的位模式相同的无符号数u=(_v+2__)。(___条件码寄存器/标志寄存器/Flag寄存器____)。%rdx%rbx的功能是(_____将rdx的内容传送到rbx_____)。(%rdi,%rcx)%al的寻址方式是(___变址寻址____)。(微操作)的部件是(_____指令译码逻辑/指令译码器/译码器_____)。(___地址重定位/地址映射___)。(____指令寄存器___________)。得分评卷人三、计算题(根据每小题的具体要求,解答第21至第24小题。本大题共4道小题,每小题10分,共40分。)20.(12分)假设有两台采用2的补码表示有符号整数的机器,机器1采用4位整数,机器2采用6位整数。填写下表中的空白单元格。intx=-5;unsignedux=x;?Expression4-bitdecimal4-bitbinary6-bitdecimal6-bitbinary最小补码数-8-32100000x>>1-31101-3111101(x?(?1))>>2-21110-,填写表中空白单元格(数据采用二进制)。情况分为4种:1-正溢出,2-正确正值,3-正确负值,4-负溢出。xyx+yx+t情况5[10100][10001]4[11000][11000][110000][10000]3[00010][00101][000111][00111]2[01100][00100][010000][10000],写出它们对应的十六进制机器数,要求简要说明理由。(1)intx=-32768(2)shorty=532(3)unsignedz=65527(4)charc=’A’(5)floata=-(1)FFFF8000H(1分)-215=-1000000000000000B,负数符号位为1,int型整数表示为32位,故机器数为1…11000000000000000=FFFF8000H(1分)(2)0224H(1分)532=1000010100B,正数符号位为0,short型整数表示为16位,故机器数为0000001000010100=0214H(1分)(3)0000FFF7H(1分)65527=216-1-8=11111**********B,unsigned型整数表示为32位,无符号位(高位补0),故机器数为0000FFF7H(4)41H(1分)‘A’的ASCII码是41H,char型表示为8位(1分)(5)BFE00000H(1分)-=-=-×20,阶码为0+127=01111111B,数符为1,,所以-,用十六进制表示为BFE00000H(1分),按照对阶、尾数相加、规格化、舍入、+(-)的值。、-:(3分)x===(...0)2×2-1,y=-=-=(-...0)×25,用IEEE754标准单精度格式表示为:[x]浮=001111**********...0,[y]浮=110000**********...0用Ex、Ey分别表示[x]浮、[y]浮的阶码,Mx,My分别表示[x]浮、[y]浮的尾数,则有:Ex=01111110,Mx=...0,Ey=10000100,My=...0,尾数Mx,My的小数点前面的左起第1位为符号位,第2位是隐藏位“1”。(2)对阶(2分)(ΔE)补=Ex+[-Ey]补=01111110+01111100=1111l010(mod28)=-6,故Ex向Ey对齐Ex=Ey=10000100,Mx,=...0,即将x的尾数右移6位,符号不变,数值高位0,隐藏位右移到小数点后面,并保留最后移出的两位。(3)尾数相加(2分)Mb=Mx+My=...00+...0=...000(3)规格化(1分)所得尾数已经是规格化的形式(数值部分最高位为1)。(4)舍入(1分)将结果的尾数Mb中最后两位附加位进行舍入得:...0(5)溢出判断(1分)上述阶码计算和调整过程中,没有发生”阶码上溢”和"阶码下溢的问题最终结果为Eb=10000100,Mb=l(l).000001110...0,即:(-)2×25=-、综合题(通过分析或计算详细解答第25~27小题。本大题共3道小题,每小题10分,共30分):voidfunc(int*xptr,int*yptr,int*zptr);函数func的过程体对应的机器级代码用AT&T汇编形式表示如下:(1)movl10(%ebp),%eax(2)movl14(%ebp),%ebx(3)movl18(%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;(分)yptrr对应实参所存放的存储单元地址:R[ebp]+14;(1分)zptr对应实参所存放的存储单元地址:R[ebp]+18。(1分)(2)函数func的C语言代码如下:voidfunc(int*xptr,int*yptr,int*zptr)(1分){inttempx=*xptr;(1分)inttempy=*yptr;(1分)inttempz=*zptr;(1分)*yptr=tempx;(1分)*zptr=tempy;(1分)*xptr=tempz;(1分)},C语言的if-else语句对应的AT&T汇编代码结构如图2所示。给出每条汇编指令的注释,并说明为什么C代码只有一个if语句而汇编代码有两条条件转移指令。p(charx,int*p)1movb8(%ebp),%dl2{2movl12(%ebp),%eax3if(p&&x<0)3testl%eax,%eax4*p+=x;}5testb$0x80,%%dl,(%eax):p的C语言代码及其过程体对应的汇编代码c=cond_expr;c=cond_expr;if(!c)if(!c)gotofalse_label;gototrue_label;then_statementelse_statementgotodonegotodonefalse_label:true_label:else_statementthen_statementdone:done:图2C语言的if-else语句对应的AT&T汇编代码结构汇编指令的注解:分)movb8(%ebp),%dl//R[dl]←M[R[ebp]+8],将x送DLmovl12(%ebp),%eax//R[eax]←M[R[ebp]+12],将p送EAXtestl%eax,%eax//R[eax]andR[eax],//若p为0,$0x80,%dl//R[dl]and80H,//若x>=0,%dl,(%eax)//M[R[eax]]←M[R[eax]]+R[dl],即*p+=:因为C语言if语句中的条件表达式可以对多个条件进行逻辑运算,而汇编代码中一条指令只能进行一种逻辑运算,并且在每条逻辑运算指令生成的标志都是存放在同一个EFLAGS寄存器中,所以,最好在一条逻辑指令后跟一条条件转移指令,把EFLAGS中标志用完,然后再执行另一次逻辑判断并根据条件进行转移的操作。(4分)7页共8页