0.0647

五煦查题

快速找到你需要的那道考题与答案

超星汇编语言程序设计_4课后答案(学习通2023完整答案)

46 min read

超星汇编语言程序设计_4课后答案(学习通2023完整答案)

第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、冯诺依曼计算机结构中指令和数据可以从形式上加以区分。

第1章 单元测试

1、将汇编语言源程序文件翻译成目标代码文件的过程,称为( )
A、汇编
B、编辑
C、连接
D、调试

2、IA-32处理器的寄存器中,下面哪个寄存器可以分成8位寄存器单独使用?
A、CS
B、EBP
C、EDX
D、EFLAGS

3、IA-32处理器中,代码段的段地址用CS提供,偏移地址由( )寄存器提供。
A、EBX
B、ESP
C、EDI
D、EIP

4、现代计算机中,主存储器采用( )编址
A、字节
B、字
C、双字
D、四字

5、以下关于 CISC和RISC 计算机的叙述中,不正确的是( )。
A、RISC 机器指令种类多,指令功能强
B、RISC 机器中通用寄存器比 CISC 多
C、CISC的指令集复杂庞大,而RISC的指令集简单精简
D、CISC计算机编码长度可变,寻址方式种类丰富

6、以下关于指令集体系结构的说法中,错误的是:
A、指令集体系结构位于计算机软件和硬件的交界面上
B、程序员可见寄存器的长度、功能与编号不属于指令集体系结构的内容
C、指令集体系结构的英文缩写是ISA
D、指令集体系结构是指低级语言程序员所能看到的概念结构和功能特性

7、以下关于冯诺依曼计算机结构中,指令和数据表示形式的叙述中,正确的是:
A、指令和数据可以从形式上加以区分
B、指令以二进制形式存放,数据以十进制形式存放
C、指令和数据都以二进制形式存放
D、指令和数据都以十进制形式存放

8、以下关于冯诺依曼计算机结构的描述中,错误的是
A、计算机由运算器、控制器、存储器和输入/输出设备组成
B、程序由指令和数据构成,存放在存储器中
C、指令和数据都以二进制形式存放
D、指令按地址访问,所有的数据在指令中直接给出

9、在实地址工作方式下,逻辑地址“B630H: 7000H”表示的物理地址是
A、B6300H
B、C3300H
C、BD300H
D、12630H

10、IA-32处理器的状态标志中,CF是
A、进位标志
B、零标志
C、溢出标志
D、符号标志

11、以下有关计算机中指令和数据存放位置的叙述中,正确的是
A、指令存放在内存,数据存放在外存
B、指令和数据任何时候都存放在内存
C、指令和数据任何时候都存放在外存
D、程序被启动后,其指令和数据被装入内存

12、Intel 8086支持( )容量主存空间。
A、64KB
B、16KB
C、4GB
D、1MB

13、以下有关程序编写和执行方面的叙述中,错误的是
A、可用高级语言和低级语言编写出功能等价的程序
B、高级语言和汇编语言源程序都不能在机器上直接执行
C、编译程序员必须了解机器结构和指令系统
D、汇编语言是一种与机器结构无关的编程语言

14、8086存储器分段,每个段不超过
A、64M字节
B、1M字节
C、1K字节
D、64K字节

15、汇编语言的优点,不包括
A、直接有效的控制硬件
B、运行速度快
C、生成的目标代码序列短小
D、编程容易

16、8086某存储单元的物理地址是12345H, 可以作为它的段基地址的有
A、2345H
B、12340H
C、12345H
D、1234H

第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的地址。

第2章 单元测试

1、下列有关汇编语言中标号的命名规则中,错误的是( )
A、通常由字母打头的字符、数字串组成
B、标号的长度不能超过31个字符
C、?和$不能单独作为标号
D、.号不可位于标号首

2、使用80X86的伪指令定义 BUFFER BYTE 2 DUP(1,2,3 DUP(’4’),2 DUP(1,0))后, 以BUFFER为首址的存储区中前10个字节的数据依次是( )
A、1,2,4,4,4,1,0,1,0,3
B、1,2,3,4,4,4,1,0,1,0
C、1,2,34H,34H,34H,1,0,1,0,1
D、1,2,3,34H,34H,34H,1,0,1,0

3、下列伪指令定义在语法上正确的是( )
A、X1 BYTE ‘ABCD’
B、X1 BYTE 1234H
C、X1 WORD ‘ABCD’
D、X1 DD ‘Hello’

4、使汇编程序执行某种操作的命令是
A、变量
B、指令
C、伪指令
D、宏指令

5、有如下伪指令定义: array dword 9abcdef0h, 12345678h 执行指令mov ax, word ptr array+3后, ax=( )
A、0def0h
B、789ah
C、5678h
D、0f012h

6、某数组共有4个字,第一个字的物理地址是1F100H, 则第4个字的物理地址是( )
A、1F105H
B、1F106H
C、1F107H
D、1F108H

7、书写汇编语言程序时规定,对字母开头的十六进制数,其前面必须加( )
A、0
B、D
C、B
D、H

8、有语句:COUNT EQU 256下列四种叙述中,正确的是( )
A、COUNT是变量
B、COUNT占用一个字节存储单元
C、COUNT是符号常数
D、COUNT占用二个字节存储单元

9、设数据段中已有: da1 byte 12h,34h da2 word 56h,78h 下面有语法错误的句是( )
A、MOV DA1+1,AX
B、ADR1 DWORD DA1
C、MOV BYTE PTR DA2+1,AL
D、MOV AH,DA1

10、汇编语言源程序经汇编后不能直接生成( )
A、OBJ文件
B、LST文件
C、EXE文件
D、CRF文件

11、设数据段中已有伪指令定义语句如下: DA1 BYTE ‘89’ DA2 WORD ‘89’ 则DA1+1和DA2+1单元内容为( )
A、39H,38H
B、39H,39H
C、8H,8H
D、9H,8H

12、一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是( )
A、12C5BH
B、12B6BH
C、12C59H
D、12BFEH

13、已知数据段定义如下: .data org 100h var1 word 1234h, 5678h org $+10h var2 dword var1 执行指令MOV EBX , OFFSET VAR2后, EBX=( )
A、00000004H
B、00000014H
C、00000114H
D、00000104H

14、在下列语句中,BVAR1称为(???? )? BVAR1??BYTE?01H,0AH
A、符号
B、变量
C、助记符
D、标号

15、汇编语言源程序,可以是( )
A、可以直接由机器执行
B、必须由编译程序生成目标代码才能执行
C、必须由解释程序生成目标代码才能执行
D、必须由汇编程序汇编生成目标代码才能执行

16、已知数据段定义如下: org 200h buf byte 56h, 78h 执行指令mov ax, word ptr buf后, ax=( )
A、5678H
B、7856H
C、0200H
D、0012H

17、伪指令DA1 BYTE 04H DUP( 3 DUP(2), 2 DUP(3))在数据区能构成0203H操作数共有( )
A、07个
B、04个
C、03个
D、02个

第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

第3章 单元测试

1、MOV EAX, 80H[EBX] 指令的源操作数采用( )寻址方式。
A、存储器间接
B、寄存器
C、寄存器相对
D、立即数

2、利用寄存器间接方式访问堆栈数据时,默认使用的寄存器是 ( )
A、EBX
B、EBP
C、EIP
D、ESI

3、MOV EAX, [EBX] [ESI] 指令的源操作数采用( )寻址方式。
A、基址变址
B、寄存器
C、寄存器相对
D、存储器间接

4、MOV EAX, [8000H]指令的源操作数是( )方式
A、立即数寻址
B、寄存器相对寻址
C、寄存器间接寻址
D、直接寻址

5、立即数寻址方式中,数据存在( )中。
A、指令代码
B、寄存器
C、堆栈
D、存储器

6、SHR和SAR,两条指令执行结果完全相同的条件是( )
A、目的操作数最高位为0
B、目的操作数的最高位为1
C、目的操作数为任意情况
D、无论什么情况都不可能完全相同

7、下列指令中,不能使寄存器AL和进位标志位CF同时清0的指令是( )
A、MOV AL,00H
B、XOR AL,AL
C、SUB AL,AL
D、AND AL,00H

8、假定AX=6987H,执行指令CMP AX,0EB30H后,则标志位CF和OF的状态( )
A、0,0
B、0,1
C、1,0
D、1,1

9、设有双字变量DVAR和标号LAB,不正确的指令是( )
A、LEA EBX, DVAR
B、LEA EBX, LAB
C、MOV EBX, OFFSET DVAR
D、MOV EBX, DVAR

10、执行“sar ebx,1”指令后,ebx最高D31位一定等于( )
A、0
B、1
C、D0位
D、D30位

11、假定ESP=00120100H,EAX=1F6C2107H,执行指令PUSH EAX后,存放数据07h的物理地址是( )。
A、00120104H
B、00120101H
C、001200FCH
D、001200FFH

12、下列指令执行后既能使EAX=0,同时又能使CF=0和OF=0的是( )
A、XOR EAX,EAX
B、AND EAX,EAX
C、OR EAX,EAX
D、TEST EAX,0

13、完成对ECX寄存器的内容乘以4的正确操作是( )
A、ROL ECX,1
B、MUL 4
C、SHL ECX, 2
D、MOV ECX, 2

14、若AX=1020H,BX=1200H,CF=1,则SBB AX, BX的执行结果是( )
A、0EF1FH
B、0FEFFH
C、0FE1FH
D、0FE21H

15、下列关于堆栈的说法,错误的是( )
A、以“先入后出”为原则。
B、堆栈区域可以利用EBP寄存器间接寻址来访问
C、运行中ESP寄存器动态跟踪栈顶位置。
D、压栈和弹出都是以字节为单位

16、若要求一个操作数中的若干位维持不变,若干位置1,可以使用( ?)
A、NOT
B、OR
C、AND
D、XOR

17、下列标志位中,可以用来判断计算结果正负的是( ?)
A、PF
B、SF
C、DF
D、OF

18、已知AX=0008H,执行TEST?AX,1?后,?AX寄存器的内容是( ?)。
A、0005H
B、FFFBH
C、0003H
D、0008H

19、已知AX=0001H, ?下列四条指令执行后,不能使ZF=1的语句是( ?)。
A、DEC?AX
B、SUB?AX,?1
C、AND?AX,?1
D、CMP?AX,?1

第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次。

第4章 单元测试

1、测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是( )
A、XOR BL, 4FH JZ NEXT
B、TEST BL,4FH JZ NEXT
C、AND BL,4FH JZ NEXT
D、OR BL,4FH JZ NEXT

2、子程序最后,通常需要执行的返回指令是( )
A、LOOP
B、JZ
C、CALL
D、RET

3、JMP FAR PTR LABEL1指令的寻址方式是( )
A、段内转移直接寻址
B、段内转移间接寻址
C、段间转移直接寻址
D、段间转移相对寻址

4、下列叙述正确的是( )
A、对于两个无符号数比较用CMP指令,对于两个有符号数比较用CMPS指令
B、对于两个无符号数比较用CMPS指令,对于两个有符号数比较用CMP指令
C、对于无符号数条件转移采用JAE/JNB指令,对于有符号数条件转移采用JGE/JNL指令
D、对于无符号数条件转移采用JGE/JNLJAE/JNB指令,对于无符号数条件转移采用JAE/JNB指令

5、条件转移指令JNE的测试条件为( )
A、ZF=1
B、ZF=0
C、CF=1
D、CF=0

6、执行如下程序, MOV EAX, 0 MOV EBX, 1 MOV ECX, 10 L1: ADD EAX, EBX INC EBX LOOP L1 执行后,EBX=( )
A、9
B、10
C、11
D、12

7、假设X,Y 是双字变量,下面指令序列执行后完成的运算,正确的算术表达式是 ( ) MOV EAX, X SHL EAX, 2 DEC EAX MOV Y, EAX
A、X=4X+1
B、Y=2X-1
C、X=4Y-1
D、Y=4X-1

8、在程序的执行过程中,EIP寄存器中始终保存的是( )
A、上一条指令的首地址
B、下一条指令的首地址
C、正在执行指令的首地址
D、需要计算有效地址才能确定地址

9、程序P中有两个unsigned类型变量i和j,被分别分配在寄存器EAX和EDX中,P中存在以下if语句: if ( i<j) { …}; 该if语句对应的指令序列一定不会是( )
A、CMP EDX, EAX JBE NEXT
B、CMP EAX, EDX JBE NEXT
C、CMP EDX, EAX JA NEXT
D、CMP EDX, EAX JAE NEXT

10、检测EAX的数据是不是偶数,如果是奇数则跳转到标号odd处,程序段正确的是( )
A、TEST EAX, 80000000H JZ ODD
B、SHR EAX, 1 JNC ODD
C、TEST EAX, 00000001H JZ ODD
D、ROR EAX,1 JS ODD

11、已知jmp指令的转移目标地址采用相对寻址方式,jmp指令操作码为11101001,其转移的目标地址是( ) 00404000 E9 FB jmp xxxxxxxxxxx 00404002 8B D8 mov ebx, eax
A、00404002
B、004040fb
C、00403ffd
D、00404005

12、编写分支程序,在进行条件判断前,可用指令构成条件, 其中不能形成条件的指令有 ( ) 。
A、CMP
B、SUB
C、AND
D、MOV

13、以下关于switch语句的机器级代码表示的叙述中,错误的是( )
A、当case中出现的条件取值范围较小时,可以用跳转表的方式实现
B、每个case 至少对应一条条件转移指令,因而一定会包含多条条件转移指令
C、当case的条件值相差较大时,编译器还是生成分段跳转代码,不会采用跳转表的方式进行跳转
D、可以用连续的if ~ else ~ if ~ else ~ if …语句对应的机器代码来实现switch语句

14、以下是一段C语言程序代码 1 int add(int x, int y) 2 { 3 return x+y; 4 } 5 6 int caller( ) 7 { 8 int t1=200; 9 int t2=300; 10 int sum=add(t1, t2); 11 return sum; 12 } 以下关于上述程序代码在IA-32处理器上执行的叙述中,错误的是( )
A、变量t1和t2被分配在caller函数的栈帧中
B、传递参数时t1和t2的值从高地址到低地址依次存入栈中
C、add函数返回时返回值存放在EAX寄存器中
D、变量sum被分配在caller函数的栈帧中

15、以下关于各类控制转移指令的叙述中,错误的是( )
A、无条件转移指令JMP可以直接将转移目标地址送到EIP寄存器中
B、条件转移指令Jcc将根据EFLAGS寄存器中的标志信息进行条件判断
C、条件转移指令Jcc的判断条件可用于整数之间和浮点数之间的大小比较
D、过程调用指令(CALL)和返回指令(RET)都是特殊的无条件转移指令

第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指令。

第5章 单元测试

1、下面描述中,不是MIPS指令系统特点的是( )
A、简单的寻址模式
B、指令功能强大
C、指令格式规整
D、指令数量少

2、MIPS-32微处理器中,一个字是( )位
A、8
B、16
C、32
D、64

3、MIPS汇编程序中,定义代码段的伪指令是( )
A、.data
B、.code
C、.text
D、.stack

4、执行下面语句,输入的数据存在( )寄存器中。 li $v0, 5 syscall
A、$a0
B、$v0
C、$a1
D、$v1

5、下面的程序片段,将$t1寄存器的整型数据输出到屏幕上,正确的是( )
A、li $v0, 1 move $a0, $t1 syscall
B、li $v0, 1 move $v0, $t1 syscall
C、li $v0, 5 move $a1, $t1 syscall
D、li $v0, 4 move $a0, $t1 syscall

6、MIPS指令系统分为R型和I型指令两类。

7、MIPS微处理器是CISC处理器的典型代表。

8、MIPS架构最早是在80年代初期由斯坦福(Stanford)大学Hennessy教授领导的研究小组研制出来的。

9、字符串定义伪指令.ascii 和.asciiz的功能完全一样。

10、MIPS指令系统中存储器的访问只能用LOAD和STORE来完成。

第6章 MIPS汇编程序设计

6.1 MIPS顺序程序设计随堂测验

1、MIPS汇编的算术运算类指令的操作数可以是立即数、寄存器和存储器。

2、MIPS汇编的算术运算类指令的寄存器可以是8位、16位和32位。

3、MIPS汇编的右移指令分逻辑右移和算术右移指令。

4、MIPS汇编的逻辑运算类指令都是三操作数。

5、与80x86不同,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指令是取存储器地址指令,是一条宏指令。

第6章 单元测试

1、下面MIPS指令中,错误的是( )
A、addu $t0, $t1, $t2
B、addu $8, $9, $10
C、add $t0, $t1, 12($t3)
D、addi $t0, $t1, 10

2、如果$t3<$t4,则跳转到next标号处,正确的指令是( )
A、ble $t3, $t4, next
B、blt $t3, $4, next
C、bgt $t3, $t4, next
D、bge $t3, $t4, next

3、如果$t3<$t4,则跳转到next标号处,正确的指令是( )
A、slt $at, $t3,$t4 bne $at, $0, next
B、slt $at, $t4,$t3 beq $at, $0, next
C、slt $at, $t4,$t3 bne $at, $0, next
D、slt $at, $t3,$t4 beq $at, $0, next

4、如果$t3寄存器中的数是偶数,则跳转到even,正确的指令是( )
A、and $t4, $t3, 1 bnez $t4, even
B、and $t4, $t3, 0x80 bnez $t4, even
C、and $t4, $t3, 0x80 beqz $t4, even
D、and $t4, $t3, 1 beqz $t4, even

5、下面MIPS指令中,正确的是( )
A、move $a3, 12($t3)
B、la $t3, $t0
C、lw $t3, 8(array)
D、sw $t0, array($t1)

6、MIPS处理器没有帮助运算判断的标志寄存器 。

7、MIPS没有单独的栈指令,所有对栈的操作都是统一的内存访问方式。

8、由于MIPS固定指令长度, 所以MIPS编译后的二进制文件和内存占用空间比X86要小。

9、MIPS对存储器的访问只能一次读取一个字。

10、无条件转移指令和分支转移指令的跳转范围都是256M字节。

第7章 模块化程序设计

第7章 单元测试

1、指令CALL EBX 采用了( )寻址方式.
A、段内相对寻址
B、段内间接寻址
C、段间直接寻址
D、段间间接寻址

2、80x86汇编程序子程序最后,通常需要执行的返回指令是( )
A、RET
B、JNZ
C、CALL
D、LOOP

3、利用堆栈传递子程序参数时,寻址堆栈段数据的寄存器是( )
A、ESP
B、EAX
C、EBP
D、EIP

4、假设P 为调用过程,Q为被调用过程,程序在IA-32处理器上执行,以下有关过程调用的叙述中,错误的是( )
A、C语言程序中的函数调用就是过程调用
B、从P 传到Q的实参无需重新分配存储空间
C、从P跳转到Q执行应使用CALL指令
D、返回地址是CALL指令下一条指令的地址,被保存在栈中

5、MIPS汇编过程调用时,返回地址存在( )寄存器中。
A、$a0
B、$v0
C、$0
D、$ra

6、过程定义PROC是一条处理器指令。

7、CALL指令的执行不影响堆栈指针ESP。

8、宏调用与子程序调用一样都要使用CALL指令实现。

9、MIPS汇编的JAL指令的执行不影响堆栈指针ESP。

10、MIPS汇编的过程调用只能使用寄存器传递参数。

首都师范大学信息工程学院成人2021年第一学期(微机原理与汇编)期末试卷

《微机原理与汇编》期末客观题试卷

1、IA-32微处理器有多种寻址方式可以访问存储单元,但访问I/O端口时只有两种寻址方式,是直接寻址和( )
A、AX间接寻址
B、BX间接寻址
C、CX间接寻址
D、DX间接寻址

2、8086微处理器中堆栈段SS作为段基址,那么偏移量由( )提供。
A、BX
B、SP
C、SI
D、DI

3、8086/8088的一个基本总线周期所包含的时钟周期数为( )
A、2个
B、2个加1个等待周期
C、4个
D、4个加2个等待周期

4、若要使寄存器AL中的高4位不变,低4位为0,所用指令为( )
A、AND AL, 0FH
B、AND AL, 0F0H
C、OR AL, 0FH
D、OR AL, 0F0H

5、在汇编语言中,( )用于定义常量、变量及内存空间的分配和定位,它一般在汇编时被解释。
A、机器指令
B、伪指令
C、程序运行
D、汇编

6、指令MOV AL,[EBX]中源操作数的寻址方式为( )
A、寄存器间接寻址
B、立即数寻址
C、寄存器寻址
D、基址寻址

7、用程序查询方式进行I/O传输,总是按( )的顺序完成一个字符的传送。
A、写数据端口,读/写控制端口
B、读状态端口,读/写数据端口
C、写控制端口,读/写状态端口
D、视具体情况而定

8、8086/8088 CPU与慢速存储器或I/O接口之间进行数据传输,为了使传送速度匹配,有时需要在( ) 状态之间插入若干等待周期TW。
A、T1和T2
B、T2和T3
C、T3和T4
D、随机

9、8086系统中,中断向量表存放在存储器的( )中。
A、FFC00H~FFFFFH
B、00000H~003FFH
C、EEC00H~FFFFFH
D、EEBFFH~FFFFFH

10、在微机系统中采用DMA方式传输数据时,数据传送是( )
A、由CPU控制完成
B、由执行程序(软件)完成
C、由DMAC发出的控制信号控制下完成的
D、由总线控制器发出的控制信号控制下完成的

11、8255A中只有( )可以工作于方式2,即双向总线方式。
A、A口
B、B口
C、C口
D、任意口

12、8086/8088的中断向量表( )
A、存放类型号
B、存放中断处理程序入口地址
C、是中断处理程序人口
D、是中断处理程序的返回地址

13、汇编程序编写的源程序扩展名为( )
A、TXT
B、ASM
C、OBJ
D、EXE

14、在Windbg环境下的数据是( )
A、十进制数据
B、十六进制数据
C、二进制数据
D、八进制数据

15、8255工作在方式0,A口输入,B、C口输出,其方式控制字为( )
A、88H
B、89H
C、90H
D、91H

16、汇编时用到的程序是( )
A、MASM.EXE
B、DEBUG.EXE
C、LINK.EXE
D、EDIT.EXE

17、8259芯片是( )
A、中断控制器
B、总线仲裁器
C、DMA控制器
D、定时/计数器

18、在MOV指令中,两个操作数的物理位置不可以安排在( )中。
A、一个堆栈单元和一个数据寄存器
B、两个数据寄存器
C、一个主存储单元和一个数据寄存器
D、两个主存储单元

19、8255芯片是( )
A、DMA芯片
B、时钟芯片
C、中断芯片
D、并口芯片

20、IA-32微处理器的指令指针寄存器是( )
A、EIP
B、ESP
C、EBP
D、EFLAGS

21、完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是( )
A、MOV AL,00H
B、AND AL,00H
C、XOR AL,AL
D、SUB AL,AL

22、下列指令中的操作数在代码段的是( )
A、MOV AL,42H
B、ADD BL,[2000H]
C、SUB [EBX],AL
D、INC BYTE PTR [EDI]

23、子程序最后,通常需要执行的返回指令是( )
A、LOOP
B、JZ
C、CALL
D、RET

24、假设AL=9BH,执行MOVSX DX,AL 后,DX=( )
A、F09BH
B、009BH
C、109BH
D、FF9BH

25、下面的数据传送指令中,错误的操作是( )
A、MOV [EBX],0
B、MOV DX,1000H
C、MOV SS:[EBX+EDI],1258H
D、JMP EAX

26、mov eax, [8000H]指令的源操作数采用( )寻址方式。
A、存储器间接
B、寄存器
C、直接
D、立即数

27、设数据段中已有: da1 byte 12h,34h da2 dword 12345678h,0ff78h 下面有语法错误的语句是( )
A、LEA EBX, DA1
B、MOV DA1+1,AX
C、MOV BYTE PTR DA2+2,AL
D、MOV AH,DA1

28、ADD求和指令的结果最高位为1,则SF=( )
A、0
B、1
C、任意
D、不影响

29、若AL=87H,执行ADD AL,0F5H后,SF,ZF,CF,OF,PF的状态为( )
A、SF=1,ZF=0,CF=1,OF=0,PF=1
B、SF=0,ZF=0,CF=1,OF=1,PF=0
C、SF=0,ZF=0,CF=0,OF=1,PF=0
D、SF=1,ZF=0,CF=1,OF=1,PF=1

30、假设存储器中从7462H单元开始的四个相邻字节单元中的内容依次是32H,46H,52H,0FEH,则存放字数据0FE52H的字地址是( )
A、7462 H
B、7463H
C、7464H
D、7465H

31、jmp short label1指令的寻址方式是( )
A、段内转移间接寻址
B、段间转移直接寻址
C、段内转移相对寻址
D、段间转移相对寻址

32、如果两个有符号数比较,小于等于跳转到next标号处,正确的指令是( )
A、JLE NEXT
B、JG NEXT
C、JBE NEXT
D、JAE NEXT

33、80X86在实地址工作方式下,逻辑地址“1234H: 800H”表示的物理地址是( )
A、9234H
B、12340H
C、12B40H
D、13140H

34、若CL= 4,AX=0FF0FH,执行语句“ROL AX,CL”后 ,AX=( )
A、0FFFFH
B、0FFF0H
C、0F0FFH
D、0FFFH

35、数据段有语句: BUF1 BYTE 2 DUP (1, 3 DUP( 'A', 'B'), 4) COUNT EQU $- BUF1 符号COUNT的值等于( )
A、2
B、6
C、8
D、16

《微机原理与汇编》期末主观题试卷

1、二、简答题(每题5分,共20分) 8086CPU具有哪些中断类型?试简述8086CPU对可屏蔽中断的响应过程。 典型的I/O接口电路通常有哪些可编程寄存器?各自的作用是什么? 常用的微机与外设数据交换方式有哪些?请说明各自的特点。 PC机对8259A的初始化程序如下,请说明8259A的地址是多少?并说明其设定的工作方式。 MOV AL, 13H OUT 0A0H, AL MOV AL, 70H OUT 0A1H, AL MOV AL, 01H OUT 0A1H, AL 三、编程题(每题10分,共20分) 编写32位汇编程序片段:请使用移位和加减指令编写一个程序片段计算EAX*19,假设乘积不超过32位。 8255A接口电路如图所示: 已知8255A的端口地址为60H~63H,编写8255A循环彩灯控制程序。初始时D1亮,其余不亮,D1亮一秒后移位一次,D2亮,其余不亮,以此类推每隔一秒移位一次,每移位8次为一个循环,共循环10次。请将下面的程序补全。 ;设置该8255 b口为方式0输出,其他位可置0 ;将控制字写到8255控制口 mov cx , 10 ;设置循环次数 again: ;先设置d1位输出为高电平,点亮第一个彩灯 nextp: out 62h, al call delay1s ;b口相应位发出高电平点亮彩灯,调用1s子程序 jnz nextp

汇编语言程序设计期末考试

汇编语言程序设计客观题考试

1、下列关于CISC和RISC的描述错误的是( )
A、CISC指令长度是不固定的
B、CISC指令的操作数必须预存于寄存器中
C、RISC指令长度是固定的
D、RISC架构的指令种类通常比CISC架构更少

2、下列x86指令中,下面不属于算术运算指令的是( )
A、ADD
B、DEC
C、NEG
D、LEA

3、指令JMP EBX 采用了( )寻址方式
A、段内相对寻址
B、段内间接寻址
C、段间直接寻址
D、段间间接寻址

4、MIPS按照指令的基本格式可以分为三种类型,以下不属于这三种类型的是( )
A、R型指令
B、I型指令
C、J型指令
D、O型指令

5、很多x86指令的功能比较复杂,往往一条x86指令可以完成的功能,需要多条MIPS指令才能实现。请问下列x86指令中,不能够只用一条MIPS指令完成对应的功能的是( )(注:只需考虑这条指令本身,不用考虑对后续指令的影响)
A、ADD EAX, 12345678H
B、MOV DL, 28H
C、ADD EAX, EBX
D、MOV EAX, [EBX+08H]

6、MOV EAX, [ESI]指令的源操作数采用( )寻址方式
A、寄存器间接
B、寄存器
C、寄存器相对
D、立即数

7、使用80X86的伪指令定义 BUFFER BYTE 2 DUP(1,2,3 DUP(’4’),2 DUP(1,0))后, 以BUFFER为首址的存储区中前10个字节的数据依次是( )
A、1,2,4,4,4,1,0,1,0,3
B、1,2,3,4,4,4,1,0,1,0
C、1,2,34H,34H,34H,1,0,1,0,1
D、1,2,3,34H,34H,34H,1,0,1,0

8、假定AX=6987H,执行指令CMP AX,0EB30H后,则标志位CF和OF的状态( )
A、0,0
B、0,1
C、1,0
D、1,1

9、假设存储器中从7462H单元开始的四个相邻字节单元中的内容依次是32H,46H,52H,0FEH,则存放字数据0FE52H的字地址是( )
A、7462H
B、7463H
C、7464H
D、7465H

10、有伪指令语句:COUNT EQU 256下列四种叙述中,正确的是( )
A、COUNT是变量
B、COUNT占用一个字节存储单元
C、COUNT是符号常数
D、COUNT占用二个字节存储单元

11、MIPS汇编程序中,如果$t1>$t2,则跳转到next标号处,正确的指令是( )
A、ble $t1, $t2, next
B、blt $t1, $t2, next
C、bgt $t1, $t2, next
D、bge $t1, $t2, next

12、若CL= 4,AX=0FF0FH,执行语句“ROL AX,CL”后 ,AX=( )
A、0FFFFH
B、0FFF0H
C、0F0FFH
D、0FFFH

13、检测EAX的数据是不是偶数,如果是奇数则跳转到标号odd处,程序段正确的是( )
A、TEST EAX, 80000000H JZ ODD
B、SHR EAX, 1 JNC ODD
C、TEST EAX, 00000001H JZ ODD
D、ROR EAX,1 JS ODD

14、已知jmp指令的转移目标地址采用相对寻址方式,jmp指令操作码为11101001,其转移的目标地址是( ) 00404000 E9 FB jmp xxxxxxxxxxx 00404002 8B D8 mov ebx, eax
A、00404002
B、004040fb
C、00403ffd
D、00404005

15、IA-32指令中,要将DX的内容送入堆栈中从当前栈顶起第10个字中,应使用( )语句
A、MOV 18[ESP],DX
B、MOV 18[EIP],DX
C、MOV EBP,ESP MOV 18[EBP],DX
D、PUSH 18[DX]

16、IA-32处理器采用大端方式存储多字节数据。

17、IA-32指令采用变长操作码,操作码位数可能是5位到十几位不等。

18、IA-32处理器中的每个通用寄存器都可作为32位、16位或8位寄存器使用。

19、IA-32每进行一次过程调用,用户栈从高地址向低地址增长出一个栈帧。

20、X86的条件转移指令Jcc要利用标志作为条件,因此也影响标志。

21、与无条件转移指令JMP相似,子程序调用指令CALL也可以分为段内调用和段间调用。

22、宏指令不仅能简化源程序,而且还能减小的目标代码。

23、MIPS指令中,只有Load和Store指令可以访问存储器。

24、IA-32中的加减运算指令,操作数不区分是无符号整数还是带符号整数。

25、MIPS汇编的过程调用是利用堆栈存放返回地址。

汇编语言程序设计主观题考试

1、设EAX,EBX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。(每空填一条指令) test eax,80000000h    (1)   mov plw,ebx jmp done k1: (2) done:

2、将EAX寄存器的内容转换为对应的二进制字符串存放在缓冲区BinStr中。请将程序中所缺指令语句补上。(每空填一条指令)    .data BinStr byte 32 dup(?), 0; .code mov ecx, 32 mov ebx, offset BinStr again: shl eax, 1 (1) mov byte ptr [ebx], '0' jmp next next1: mov byte ptr [ebx], '1' next: inc ebx (2)

3、以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中。请将程序中所缺指令语句补上。(每空填一条指令) .data buf byte 5,6,7,58h,62,45h,127,…… count equ $-buf max byte ? .code mov cx, count mov esi, 0 mov al, buf[esi] inc esi lop1: (1) jae next (2) next: inc esi loop lop1 mov max, al

4、设 ESP =80H ,EBX = 0FFH, EAX =1 PUSH EBX ADD EBX , EAX XOR EBX , EAX PUSH EBX POP ECX 程序段执行后: (1) ESP = H (2) ECX = H

5、同学你好! 经过近3个月的持之以恒不懈的努力,终于到了收获的时候,祝贺你们,也请大家对课程的学习总结一下,以便进一步改进和提高。可从两个方面总结: (1)从课程学习的方面,谈谈自己学习该课程的体会、收获和感想; (2)从课程建设的方面,针对本课程的教学内容与资源、教学设计与方法、教学效果与影响等方面给出针对性的意见和建议。 请将总结写在文本框内,谢谢您的积极参与和配合!^_^ 为大家的学习提供优质服务是我们的责任,祝同学们学习进步!更上一层楼!

学习通汇编语言程序设计_4

一、循环结构

在汇编语言中,循环结构是通过跳转指令来实现的。比如,我们可以使用“jmp”指令来跳转到指定的地址,实现无条件跳转。而“jz”、“jnz”等指令则可以根据指定的条件来判断是否跳转。

下面是一个简单的循环结构程序,实现从1到100的累加。

mov ax, 1       ;将1赋值给ax寄存器    mov bx, 100     ;将100赋值给bx寄存器    mov cx, 0       ;将0赋值给cx寄存器loop1:    add cx, ax      ;将ax寄存器中的值与cx中的值相加,并将结果存储到cx寄存器中    inc ax          ;将ax寄存器中的值加1    cmp ax, bx      ;比较ax和bx寄存器中的值    jle loop1       ;如果ax小于等于bx,则跳转到loop1    ;输出结果    mov ah, 9    mov dx, offset result    int 21h    ;结束程序    mov ah, 4ch    int 21hresult db \1+2+3+...+100=\ \\

在该程序中,我们使用了“cmp”指令比较ax和bx寄存器中的值,并使用“jle”指令来跳转到循环结构的起始位置。当ax的值大于100时,循环结束。

二、调用子程序

在程序设计中,我们有时需要将代码分割成多个子程序,便于管理和调用。在汇编语言中,我们可以使用“call”指令来调用子程序,使用“ret”指令来返回主程序。

下面是一个简单的子程序调用程序,实现计算两个数的和。

mov ax, 5       ;将5赋值给ax寄存器    mov bx, 8       ;将8赋值给bx寄存器    ;调用子程序    push bx         ;将bx寄存器中的值压入堆栈    push ax         ;将ax寄存器中的值压入堆栈    call add        ;调用add子程序    add sp, 4       ;将堆栈指针加4,清空堆栈    ;输出结果    mov ah, 9    mov dx, offset result    int 21h    ;结束程序    mov ah, 4ch    int 21hadd proc near    mov cx, [bp+4]  ;将堆栈中第二个参数的值赋给cx寄存器    add cx, [bp+6]  ;将堆栈中第一个参数的值与cx寄存器中的值相加,并将结果存储到cx寄存器中    mov ax, cx      ;将cx寄存器中的值赋给ax寄存器    ret             ;返回主程序add endpresult db \5+8=\ \\

在该程序中,我们使用“push”指令将参数压入堆栈,并使用“call”指令调用add子程序。在子程序中,我们使用“mov”指令将参数赋值给cx寄存器,使用“add”指令计算两个数的和,并使用“ret”指令返回主程序。

三、递归调用

在程序设计中,我们有时需要使用递归调用的方式实现一些算法。在汇编语言中,我们也可以使用递归调用来实现。

下面是一个简单的递归调用程序,实现计算n!。

mov ax, 5       ;将5赋值给ax寄存器    ;调用递归子程序    push ax         ;将ax寄存器中的值压入堆栈    call fact       ;调用fact子程序    add sp, 4       ;将堆栈指针加4,清空堆栈    ;输出结果    mov ah, 9    mov dx, offset result    int 21h    ;结束程序    mov ah, 4ch    int 21hfact proc near    cmp word ptr [bp+4], 1  ;比较参数是否为1    je fact_end             ;如果参数为1,则跳转到fact_end    dec word ptr [bp+4]     ;将参数减1    push ax                 ;将ax寄存器中的值压入堆栈    call fact               ;递归调用fact子程序    add sp, 2               ;将堆栈指针加2,清空堆栈    mul word ptr [bp+4]     ;将ax寄存器中的值与参数的值相乘fact_end:    retfact endpresult db \5!=\ \\

在该程序中,我们使用递归调用的方式实现了计算n!的算法。在子程序中,我们使用“cmp”指令判断参数是否为1,如果为1,则跳转到结束标号fact_end。否则,我们使用“dec”指令将参数减1,然后递归调用fact子程序。在递归调用返回后,我们使用“mul”指令将ax寄存器中的值与参数的值相乘,并返回结果。

四、总结

本文简要介绍了汇编语言中的循环结构、调用子程序和递归调用等内容。这些知识点对于深入理解汇编语言,提高程序设计能力都有着重要的作用。希望本文能对读者有所帮助。