第一周 计算机系统概述
1 以下术语中,不属于计算机中硬件(即物理上实际存在的部件)的是( )。
算术逻辑部件
喵查答案:指令字
程序计数器(PC)
数据通路
2
以下有关计算机系统层次结构的叙述中,错误的是( )。
最上层是提供给最终用户使用的应用程序(软件)层
喵查答案:应用程序员工作在指令集体系结构层,需要对底层很熟悉
ISA是对硬件的抽象,软件通过ISA使用硬件提供的功能
OS是对ISA和硬件的抽象,程序员通过OS使用系统资源
3 以下有关指令集体系结构的叙述中,错误的是( )。
指令集体系结构位于计算机软件和硬件的交界面上
指令集体系结构是指低级语言程序员所看到的概念结构和功能特性
喵查答案:通用寄存器的长度、功能与编号不属于指令集体系结构的内容
指令集体系结构的英文缩写是ISA
4 以下给出的软件中,属于系统软件的是( )。
喵查答案:Windows XP
MS Word
金山词霸
RealPlayer
5 一个完整的计算机系统包括硬件和软件。软件又分为( )。
操作系统和语言处理程序
喵查答案:系统软件和应用软件
操作系统和高级语言
低级语言程序和高级语言程序
6 以下有关使用高级编程语言编写和开发软件的叙述中,错误的是( )。
须有一个翻译或转换程序,即编译器或解释器
须有一套工具软件或集成开发环境,即语言处理系统
喵查答案:须程序员在应用程序中直接控制外设进行输入/输出
须有程序员与计算机交互的用户接口,即GUI或CUI
7 以下有关机器指令和汇编指令的叙述中,错误的是( )。
机器指令和汇编指令一一对应,功能相同
喵查答案:机器指令和汇编指令都能被计算机直接执行
汇编指令中用符号表示操作码和地址码
汇编指令中用十进制或十六进制表示立即数
8 以下有关编程语言的叙述中,错误的是( )。
喵查答案:不能直接用机器语言(机器指令)编写程序
用高级编程语言编写程序比用汇编语言更方便
汇编语言和机器语言都与计算机系统结构相关
计算机不能直接执行高级语言程序和汇编语言程序
9 以下有关指令以及指令执行过程的叙述中,错误的是( )。
指令由操作码和操作数或操作数的地址码构成
CPU中的控制器对指令操作码进行译码
喵查答案:指令中指定的操作数只能是存放在存储器中的数据
将要执行的下条指令的地址总是在程序计数器PC中
10
以下有关冯.诺依曼结构思想的叙述中,错误的是( )。
计算机由运算器、存储器、控制器和I/O设备组成
程序由指令构成,计算机能自动执行程序中一条一条指令
喵查答案:指令和数据都放在存储器中,两者在形式上有差别
计算机内部以二进制形式表示指令和数据
第四周 乘除运算及浮点数运算
1 对于IEEE 754单精度浮点数加减运算,只要对阶时得到的两个阶之差的绝对值|ΔE|大于等于( ),就无需继续进行后续处理,此时,运算结果直接取阶大的那个数。
23
喵查答案:25
127
128
2
已知float型变量用IEEE 754单精度浮点格式表示,float型变量x和y的机器数分别表示为x=40E8 0000H,y=C204 0000H,则在计算x+y时,第一步对阶操作的结果[Ex–Ey]补为( )。
0000 0111
0000 0011
1111 1011
喵查答案:1111 1101
3
假定整数加法指令、逻辑运算指令和移位指令所需时钟周期(CPI)都为1,整数除法指令所需时钟周期为32。若x为整型变量,为了使计算x/64所用时钟周期数最少,编译器应选用的最佳指令序列为( )。
1条除法指令
1条右移指令
1条加法指令、1条右移指令
喵查答案:两条右移指令、1条与操作指令、1条加法指令
4
假定整数加法指令、整数减法指令和移位指令所需时钟周期(CPI)都为1,整数乘法指令所需时钟周期为10。若x为整型变量,为了使计算54*x所用时钟周期数最少,编译器应选用的最佳指令序列为( )。
1条乘法指令
4条左移指令和3条加法指令
喵查答案:3条左移指令和两条减法指令
两条左移指令和两条减法指令
5
假定整数加法指令、整数减法指令和移位指令所需时钟周期(CPI)都为1,整数乘法指令所需时钟周期为10。若x为整型变量,为了使计算64*x所用时钟周期数最少,编译器应选用的最佳指令序列为( )。
1条乘法指令
喵查答案:1条左移指令
1条左移指令和1条加法指令
两条左移指令和两条加法指令
6
假定变量r1 和r2的机器数用8位补码表示为[r1]补=F5H,[r2]补=EEH。若将运算结果存放在一个8位寄存器中,则下列运算中会发生溢出的是( )。
r1+ r2
r1– r2
喵查答案:r1× r2
r1/r2
7
若在一个8位计算机中完成x/2+2y,假定变量x和y的机器数用补码表示为[x]补=44H,[y]补= DCH,则x/2+2y的机器数及相应的溢出标志OF分别是( )。
CAH、0
CAH、1
喵查答案: DAH、0
DAH、1
8
若在一个8位计算机中完成x–2y,假定变量x和y的机器数用补码表示为[x]补=44H,[y]补= DCH,则x–2y的机器数及相应的溢出标志OF分别是( )。
68H、0
68H、1
8CH、0
喵查答案:8CH、1
9
若在一个8位计算机中完成x+2y的运算,假定变量x和y的机器数用补码表示为[x]补=44H,[y]补= DCH,则x+2y的机器数及相应的溢出标志OF分别是( )。
32H、0
32H、1
喵查答案:FCH、0
FCH、1
10
变量dx、dy和dz的声明和初始化如下:
double dx = (double) x;
double dy = (double) y;
double dz = (double) z;
若float和double分别采用IEEE 754单精度和双精度浮点数格式,sizeof(int)=4,则对于任意int型变量x、y和z,以下哪个关系表达式是永真的?
喵查答案:dx*dx >= 0
(double)(float) x == dx
dx+dy == (double) (x+y)
喵查答案: (dx+dy)+dz == dx+(dy+dz)
dx*dy*dz == dz*dy*dx
dx/dx == dy/dy
第五周 IA-32指令系统概述
1
以下关于IA-32指令格式的叙述中,错误的是( )。
采用变长指令字格式,指令长度从一个字节到十几个字节不等
采用变长操作码,操作码位数可能是5位到十几位不等
指令中指出的位移量和立即数的长度可以是0、1、2或4个字节
喵查答案:指令中给出的操作数所在的通用寄存器的宽度总是32位
2
以下Intel微处理器中,不兼容IA-32指令集体系结构的是( )。
80386和80486
Pentium (II、III、4)
Core(i3、i5、i7)
喵查答案:Itanium和Itanium 2
3 以下选项中,不属于指令集体系结构名称的是( )。
喵查答案:UNIX
IA-32
ARM
MIPS
4 令集体系结构(ISA)是计算机系统中必不可少的一个抽象层,它是对硬件的抽象,软件通过它所规定的指令系统规范来使用硬件。以下有关ISA的叙述中,错误的是( )。
ISA规定了所有指令的集合,包括指令格式和操作类型
喵查答案: ISA规定了执行每条指令时所包含的控制信号
ISA规定了指令获取操作数的方式,即寻址方式
ISA规定了指令的操作数类型、寄存器结构、存储空间大小、编址方式和大端/小端方式
5
对于运算类指令或传送类指令,需要在指令中指出操作数或操作数所在的位置。通常,指令中指出的操作数不可能出现在( )中。
指令
通用寄存器
存储单元
喵查答案:程序计数器
6 一条机器指令通常由多个字段构成。以下选项中,通常( )不显式地包含在机器指令中。
操作码
寻址方式
喵查答案:下条指令地址
寄存器编号
7
以下有关指令的叙述中,错误的是( )。
机器指令是用二进制表示的一个0/1序列,CPU能直接执行
喵查答案:汇编指令是机器指令的符号表示,CPU能直接执行
伪指令是由若干条机器指令构成的一个指令序列,属于软件范畴
微指令是一条机器指令所包含的控制信号的组合,CPU能直接执行
8
以下关于IA-32的定点寄存器组织的叙述中,错误的是( )。
喵查答案:每个通用寄存器都可作为32位、16位或8位寄存器使用
寄存器EAX/AX/AL称为累加器,ECX/CX/CL称为计数寄存器
寄存器ESP/SP称为栈指针寄存器,EBP/BP称为基址指针寄存器
EIP/IP为指令指针寄存器,即PC;EFLAGS/FLAGS为标志寄存器
9 以下关于IA-32中整数运算指令所支持的操作数的叙述中,错误的是( )。
对于加减运算指令,操作数不区分是无符号整数还是带符号整数
对于乘除运算指令,操作数一定区分是无符号整数还是带符号整数
喵查答案:除乘法指令外,其他运算指令的源操作数和目的操作数的位数相等
参加运算的操作数可以是一个字节(8b)、一个字(16b)或双字(32b)
10
以下关于IA-32指令寻址方式的叙述中,错误的是( )。
操作数可以是指令中的立即数、也可以是通用寄存器或存储单元中的内容
对于寄存器操作数,必须在指令中给出通用寄存器的3位编号
存储器操作数中最复杂的寻址方式是“基址加比例变址加位移”
喵查答案:相对寻址的目标地址为“PC内容加位移”,PC内容指当前正在执行指令的地址
第六周 IA-32指令类型
1
假设 R[ax]=FFE8H,R[bx]=7FE6H,执行指令“subw %bx, %ax”后,寄存器的内容和各标志的变化为( )。
喵查答案: R[ax]=8002H,OF=0,SF=1,CF=0,ZF=0
R[bx]=8002H,OF=0,SF=1,CF=0,ZF=0
R[ax]=8002H,OF=1,SF=1,CF=0,ZF=0
R[bx]=8002H,OF=1,SF=1,CF=0,ZF=0
2 设SignExt[x]表示对x符号扩展,ZeroExt[x]表示对x零扩展。IA-32中指令“movswl %cx, –20(%ebp)”的功能是( )。
喵查答案:M[R[ebp]–20]←SignExt[R[cx]]
R[cx]←SignExt [M[R[ebp]–20]]
M[R[ebp]–20]←ZeroExt[R[cx]]
R[cx]←ZeroExt [M[R[ebp]–20]]
3
IA-32中指令“movl 8(%edx, %esi, 4), %edx”的功能是( )。
M[R[edx]+R[esi]*4+8]←R[edx]
M[R[esi]+R[edx]*4+8]←R[edx]
喵查答案:R[edx]←M[R[edx]+R[esi]*4+8]
R[edx]←M[R[esi]+R[edx]*4+8]
4
IA-32中指令“popl %ebp”的功能是( )。
R[esp]←R[esp]–4,R[ebp]←M[R[esp]]
R[esp]←R[esp]+4,R[ebp]←M[R[esp]]
R[ebp]←M[R[esp]],R[esp]←R[esp]–4
喵查答案:R[ebp]←M[R[esp]],R[esp]←R[esp]+4
5
某C语言程序中对数组变量b的声明为“int b[10][5];”,有一条for语句如下:
for (i=0; i<10, i++)
for (j=0; j<5; j++)
sum+= b[i][j];
假设执行到“sum+= b[i][j];”时,sum的值在EAX中,b[i][0]所在的地址在EDX中,j在ESI中,则“sum+= b[i][j];”所对应的指令(AT&T格式)可以是( )。
喵查答案:addl 0(%edx, %esi, 4), %eax
addl 0(%esi, %edx, 4), %eax
addl 0(%edx, %esi, 2), %eax
addl 0(%esi, %edx, 2), %eax
6
以下关于MMX/SSE指令集的叙述中,错误的是( )。
同一个微处理器同时支持IA-32指令集与MMX/SSE指令集
喵查答案:MMX/SSE指令集和IA-32指令集共用同一套通用寄存器
SSE指令是一种采用SIMD(单指令多数据)技术的数据级并行指令
目前SSE支持128位整数运算或同时并行处理两个64位双精度浮点数
7
以下关于x87 FPU浮点处理指令系统的叙述中,错误的是( )。
提供8个80位浮点寄存器ST(0)~ST(7),采用栈结构,栈顶为ST(0)
float、double和long double三种类型数据都按80位格式存放在浮点寄存器中
float、double和long double型数据存入主存时,分别占32位、64位和96位
喵查答案: float和double型数据从主存装入浮点寄存器时有可能发生舍入,造成精度损失
8
程序P中有两个变量i和j,被分别分配在寄存器EAX和EDX中,P中语句“if (i<j) { …}”对应的指令序列如下(左边为指令地址,中间为机器代码,右边为汇编指令):
804846a 39 c2 cmpl %eax, %edx
804846c 7e 0d jle xxxxxxxx 若执行到804846a处的cmpl指令时,i=105,j=100,则jle指令执行后将会转到( )处的指令执行。
8048461
804846e
8048479
喵查答案: 804847b
9 假设short型变量x被分配在寄存器AX中,若R[ax]=FF70H,则执行指令“salw $2, %ax”后,变量x的机器数和真值分别是( )。
喵查答案:FDC0H,–576
FFDCH,–36
FDC3H,–573
3FDC,16348
10 假设R[eax]=0000B160H,R[ebx]=00FF0110H,执行指令“imulw %bx”后,通用寄存器的内容变化为( )。
喵查答案:R[eax]=00007600H,R[dx]=FFACH
R[eax]=FFAC7600H,其余不变
R[eax]=00BC7600,其余不变
R[eax]=00007600H,R[dx]=00BCH
喵查
查看更多答案