第4章 80x86汇编语言程序设计
4.1 C语言程序的机器级表示随堂测验
1、表示过程结束的伪指令是( )
A、ENDS
B、END
C、ENDP
D、ENDM
2、假设P为调用过程,Q为被调用过程,程序在IA-32处理器上执行,以下关于过程调用的叙述,错误的是( )
A、C语言程序中的函数调用就是过程调用
B、从P传到Q的实参无需重新分配空间存放
C、从P跳转到Q执行应使用CALL指令
D、从Q跳回到P执行应使用RET指令
3、返回地址是CALL指令下一条指令的地址,被保存在堆栈中。
4、过程调用时,入口参数必须使用堆栈传递。
5、过程调用时,用户栈从高地址向低地址增长出一个栈。
4.3 无条件和条件转移指令随堂测验
1、JMP WORD PTR[EBX]转移的目标地址是( )
A、EBX中的内容
B、ESP+EBX的和
C、EIP+[EBX]之和
D、EBX指示的内存单元的内容
2、在代码段内的-128~127个字节前后范围的跳转,可以用( )类型名表示。
A、WORD
B、DWORD
C、SHORT
D、FAR
3、JMP SHORT LABEL1指令的寻址方式是( )
A、段内直接寻址
B、段内相对寻址
C、段内间接寻址
D、段内立即数寻址
4、如果两个数相等就跳转到next标号处,正确的指令是( )
A、JC NEXT
B、JS NEXT
C、JZ NEXT
D、JP NEXT
5、如果两个无符号数比较,大于等于跳转到next标号处,正确的指令是( )
A、JL NEXT
B、JGE NEXT
C、JBE NEXT
D、JAE NEXT
4.4 C语言分支语句的机器级表示和程序设计随堂测验
1、检测BX的数据是不是偶数,如果是偶数则跳转到标号EVEN处,程序段正确的是( )
A、test bx,8000h jnz even
B、shl bx, 1 jnc even
C、test bx,0001h jz next
D、test bx,0001h jns next
2、检测BX的有符号数是不是大于等于0,如果大于等于0则bx=1,小于0则跳转到标号min处,程序片段中不正确的是( )
A、cmp bx,0 jl min
B、test bx,8000h jz max
C、cmp bx,0 jns min
D、cmp bx,0 jge max
3、在if-then-else分支结构对应的机器级代码的表示中,一定包含一条条件转移指令。
4、在if(条件)-then-else分支结构对应的机器级代码的表示中,计算条件的代码一定在条件转移之前。
5、在switch语句的机器级代码的表示中,每个case对应的一段代码结束后,都会有一条无条件转移指令。
4.6 C语言循环语句的机器级表示随堂测验
1、假设int 型数组a的首地址在EDX中,i 在ECX中,现要将a[i] 的内容给EAX,则所用的汇编指令是( )
A、mov eax, [edx+ecx]
B、mov eax, [edx+2*ecx]
C、mov eax, [edx+4*ecx]
D、mov eax, [edx+8*ecx]
2、循环结构语句的机器级代码表示中,一定至少包含一条条件转移指令。
3、循环结构语句的机器级代码表示中,不一定包含无条件转移指令。
4、循环结构语句的机器级代码表示中,循环结束条件通常用一条比较指令CMP来实现。
5、循环结构语句的机器级代码表示中,循环体内执行的指令不包括条件转移指令。
4.7 循环程序设计随堂测验
1、循环指令LOOPNZ终止循环的条件是( )
A、ECX=0, 且ZF=0
B、ECX=0, 或ZF=1
C、ECX=1, 且ZF=0
D、ECX=1, 或ZF=1
2、JECXZ指令的跳转条件是( )
A、ECX=1
B、ECX=-1
C、ECX=0
D、ZF=0
3、循环指令LOOPZ跳转的条件是( )
A、ECX不等于0, 且ZF=0
B、ECX等于0, 或ZF=1
C、ECX不等于0, 且ZF=0
D、ECX不等于0, 且ZF=1
4、LOOP指令默认使用ECX寄存器做为计数器。
5、如果ECX=0,则执行LOOP指令循环次数是0次。
第5章 MIPS汇编基础
5.1 MIPS处理器和指令格式随堂测验
1、MIPS 32 微处理器的寄存器是( )位的。
A、8
B、16
C、32
D、64
2、MIPS 32微处理器的寄存器有( )个。
A、8
B、16
C、32
D、64
3、MIPS 32微处理器的每条指令长度是( )位。
A、64
B、32
C、16
D、不确定,不同的指令长度不同。
4、MIPS 32 微处理器的指令功能简单,一条指令只能完成一个操作。
5、MIPS 32 微处理器的对存储器的访问只有Load和Store指令。
第6章 MIPS汇编程序设计
6.2 MIPS分支程序设计随堂测验
1、如果$t0=0,则跳转到next标号处,正确的指令是( )
A、bnq $t0,next
B、bgez $t0,next
C、beqz $t0,next
D、bltz $t0,next
2、如果$t1>=$t2,则跳转到next标号处,正确的指令是( )
A、ble $t1, $t2, next
B、bne $t1, $t2, next
C、bge $t2, $t1, next
D、bge $t1, $t2, next
3、如果$t1>=$t2,则跳转到again标号处,正确的指令是( )
A、slt $at, $t1,$t2 bne $at, 0, again
B、slt $at, $t1,$t2 beq $at, 0, again
C、slt $at, $t2,$t1 beq $at, 0, again
D、slt $at, $t2,$t1 bne $at, 0, again
4、如果$t1=$t2,则跳转到again标号处,正确的指令是( )
A、bne $t1, $t2, again
B、bge $t1, $t2, again
C、ble $t1, $t2, again
D、beq $t1, $t2, again
5、无条件转移指令J label的转移范围是256M字节。
6.4 MIPS 汇编存储器访问随堂测验
1、MIPS指令只能通过load和store指令访问存储器。
2、MIPS指令对存储器访问有多种寻址方式。
3、伪指令array .space 40,是预留40个字的存储空间。
4、load和store指令只能一次取、存一个字。
5、la指令是取存储器地址指令,是一条宏指令。
第1章 计算机系统概述
1.3 寄存器随堂测验
1、IA-32处理器内部的寄存器都是32位。
2、IA-32位处理器中EIP是堆栈指针寄存器。
3、指令指针寄存器EIP表示将要执行指令的地址,程序员不能对EIP进行存取操作。
4、CS寄存器保存了代码段的起始地址。
5、通用寄存器只能保存数据,暂存运算结果,不能存放存储器地址。
1.4 存储器组织随堂测验
1、现代计算机中存储器采用字节编址方式。
2、逻辑地址由段基地址和偏移地址组成。
3、编程时采用的是存储器的物理地址。
4、存储器的一个物理地址只能对应一个逻辑地址。
5、IA-32处理器支持4G容量的线性地址空间。
1.5 从高级语言到汇编语言随堂测验
1、指令集体系结构的英文缩写是ISA。
2、汇编语言是一种和机器结构无关的编程语言。
3、ISA处于计算机软件和硬件的交界面上。
4、计算机程序设计语言分为高级语言、汇编语言和机器语言三大类。
5、冯诺依曼计算机结构中指令和数据可以从形式上加以区分。
第2章 汇编语言基础
2.3 变量及属性随堂测验
1、变量实质是主存单元中的数据,因此可以改变。
2、dword伪指令是为变量分配分配一个或多个字量数据。
3、80x86处理器采用大端方式存放多字节数据。
4、语句dvar dword 5 dup (?)中,?表示初值不确定,实际上存放的0。
5、变量名表示初值表中首元素的逻辑地址。
2.3 变量及属性随堂测验
1、使用80x86伪指令定义,buffer word 5 dup (2,?) 执行语句 mov eax, sizeof buffer后, eax=
A、00000014H
B、00000020H
C、00000010H
D、0000000aH
2、有如下伪指令定义: msg byte 'welcome' , 0 count= $-msg 则:count的值为
A、7
B、8
C、10
D、11
3、有如下伪指令定义: array dword 12345678h 执行指令mov ax, word ptr array+1后, ax=
A、1234h
B、5678h
C、3456h
D、5634h
4、变量定义后,便具有地址属性和类型属性。
5、align 4 表示接下来存放数据起始于模4的地址。
第3章 80x86指令系统和寻址方式
3.1 80x86的数据寻址方式随堂测验
1、MOV EAX, 12345678H指令的源操作数是( ) 方式。
A、立即数寻址
B、寄存器相对寻址
C、基址变址寻址
D、相对基址变址寻址
2、MOV EAX, [2000H]指令的源操作数是( )方式。
A、立即数寻址
B、直接寻址
C、寄存器相对寻址
D、相对基址变址寻址
3、假设ARRAY是已定义的双字变量,MOV EAX, ARRAY[EBX+ESI]指令的源操作数是( )方式。
A、立即数寻址
B、寄存器相对寻址
C、基址变址寻址
D、相对基址变址寻址
4、MOV EAX, [EBX]指令的源操作数是( )方式。
A、立即数寻址
B、寄存器相对寻址
C、寄存器间接寻址
D、基址寻址
5、立即数寻址方式中,数据存在( )中。
A、指令代码
B、寄存器
C、堆栈
D、存储器
3.2 数据传送类指令随堂测验
1、在MOV指令中,两个操作数的物理位置不可以安排在( )中。
A、一个堆栈单元和一个数据寄存器
B、两个数据寄存器
C、一个主存储单元和一个数据寄存器
D、两个主存储单元
2、下面的数据传送指令中,错误的操作是( )
A、MOV [EBX],0
B、MOV DX,1000H
C、MOV SS:[EBX+EDI],1258H
D、PUSH AX
3、下面的数据传送指令中,正确的操作是( )
A、MOV ES,1258H
B、MOV AL,280H
C、MOV EIP,EAX
D、LEA EBX,[EBX+EAX*2]
4、IA-32处理器的堆栈指令可以对字节、字和双字为单位操作。
5、LEA指令的作用等用于汇编语言MASM的地址操作符OFFSET。
3.3 算术运算类指令随堂测验
1、若AL=87H,执行ADD AL,0F5H后,SF,ZF,CF,OF,PF的状态为( )
A、SF=0,ZF=0,CF=0,OF=1,PF=0
B、SF=1,ZF=0,CF=1,OF=0,PF=1
C、SF=0,ZF=0,CF=1,OF=1,PF=0
D、SF=1,ZF=0,CF=1,OF=1,PF=1
2、已知AL=9BH, 执行MOVSX BX, AL指令后, BX=
A、009BH
B、109BH
C、FF9BH
D、119BH
3、在除法指令IDIV EBX 中,被除数隐含为( )和 ( )。
A、EDX.EBX
B、EDX.EAX
C、ECX.EAX
D、ECX.EBX
4、CMP指令和SUB指令的区别是CMP指令不会送目的操作数减去源操作数的差。
5、IA-32处理器的乘除指令需要区分无符号数和有符号数。
3.4 位操作类指令随堂测验
1、如果要将AL中的数据的D1和D4位取反,可以实现这个功能的指令为:
A、OR AL, 00010010B
B、XOR AL, 00010010B
C、XOR AL, 11101101B
D、AND AL, 00010010B
2、将DX的内容除以2,正确的指令是
A、DIV 2
B、DIV DX,2
C、SAR DX,1
D、SHL DX,1
3、若要使寄存器AL中的高4位不变,低4位为0,所用指令为( )
A、AND AL,0FH
B、AND AL,0F0H
C、OR AL,0FH
D、OR AL,0F0H
4、若CL= 4,AX=0FF0FH,执行语句“ROL AX, CL”后 ,AX=( )
A、0FFFFH
B、0FFF0H
C、0F0FFH
D、0FFFH
5、若CL= 4,AX=0FF0FH,执行语句“SAR AX, CL”后 ,AX=( )
A、0FFF0H
B、0FFFH
C、00FFH
D、0FF0H