汇编语言程序设计复习题
一、选择题
1.用户为了解决自己的问题,用汇编语言所编写的程序,称为(B)
A.目标程序
B.源程序
C.可执行程序
D.汇编程序
2.某系列微机对存储器的分段,如果每一个段最多的字节存储单元是64K,那么表示段内字节单元偏移地址的二进制位数应是(B)
A.20位
B.16位
C.15位
D.12位
3.设SP初值为2000H,执行指令“PUSH AX”后,SP的值是(D)
A.1FFFH
B.1998H
C.2002H
D.1FFEH
4.循环指令LOOP产生循环的条件是(C)
A.CX-1=1
B.CX-1=0
C.CX-1≠0
D.CF=1和ZF=0
5.汇编语言源程序中,每个语句可由四项组成,其中名字项是一个符号,下面列出的有效名字是(A)
A.Variable
B.First&ld
C.0FFFFH
D.‘Memphis’
6.要求将A,B两个字符的ASCⅡ码41H,42H顺序存放在连续两个字存储单元中,可选用的语句是(A)
A.DA1DB‘AB’
B.DA1DW‘AB’
C.DA1DB0ABH
D.DA1DW‘ABH
7.某程序装入内存后,DS=1200H,CS=1400H,则程序中数据段中的数据最多是(C)字节。
A.2K
B.4K
C.8K
D.16K
8.有语句:COUNT EQU256下列四种叙述中,正确的是(C)。
A.COUNT是变量
B.COUNT占用一个字节存储单元
C.COUNT是符号常数
D.COUNT占用二个字节存储单元
9.下面指令中,源操作数的寻址方式为立即寻址的是(C)。
A.MOV AX,OFFSET A
B.MOV AX,A
C.MOV AX,1
D.MOV AX,A〔BX〕
10.下列指令执行后,不改变AL寄存器内容的指令是(B)。
A.AND AL,1
B.CMP AL,DL
C.XOR AL,AL
D.SUB AL,DL
11.执行1号DOS系统功能调用,从键盘输入的字符值存放在(A)寄存器中。
A.AL
B.BL
C.CL
D.DL
12.将CX寄存器低4位清零的正确指令是(B)。
A.AND CX,0F0H
B.AND CX,0FFF0H
C.AND CX,1110H
D.MOV CX,0
13.微机中,有符号数是用(B)表示的
A.原码B.补码C.反码D.BCD码
14.把汇编源程序变成目标代码程序的过程是(B)A.编译B.汇编C.编辑D.链接
3.ADD AX,CL;AX是16位的,CL是8位的,不能相加
4.AND AX,[DX];DX不是基址寄存器
5.MOV CS,AX;MOV指令不能给CS段寄存器传送数据
6.MOV M1,M2;MOV指令不能给两个存储单元之间直接传送数据
7.LEA BX,OFFSET VAR;多了OFFSET项
四、简答题
1.试述CMP AX,BX和SUB AX,BX两条语句的异同点?
相同点:都执行AX-BX操作,影响所有标志位且对档志位的影响相同不同点:CMP执行后AX,BX内容不改变,而SUB执行后,AX内为AX-BX之差,即内容变化了。
2.标号有哪三个属性?其含义是什么?
段属性指定义该标号的段地址;
偏移属性:指该标号的偏移地址
类型属性:指标号是在定义它的段内引用还是在其它段引用
3.子程序和中断处理子程序在调用方法及返回指令上有何区别?
字符串长度17模式串长度
子程序调用是由CALL指令调用的,而中断分为内中断和外中断,内中断是通过INT n指令调用中断处理子程序的,外中断是来自于CPU外部的中断,它的产生是不可预测的,当这些中断产生时由系统自动完成中断处理子程序的调用。子程序返回执行RET指令,而中断处理子程序的返回执行IRET。
4.简述宏指令与子程序的区别。
采用宏和子程序均能达到代码共享、简化源程序的目的,但它们的区别也是显而易见的。区别主要有以下几点:
(1)工作方式的区别
宏调用是在汇编时由汇编程序进行宏扩展的,而子程序是在程序执行期间由调用程序调用的。因此使用宏指令占用较大的空间但速度较快,而使用子程序占用较小的空间但执行时间较长。
(2)参数传递的方便性
宏指令定义时可以带有形式参数,宏调用时可以直接在宏指令名后带有实参数以替换形式参数,参数传递十分方便。而子程序参数的传递是通过寄存器、堆栈等方法实现的,实现起来不是很方便。
(3)参数的多样性及灵活性:宏指令的实参数可以是常数、寄存器、内存变量、操作码或操作码的一部分等,这是子程序所不能比拟的。
5.简述子程序设计注意事项。
(1).子程序说明:为了便于引用,子程序就在开头对其功能、调用参数各返回参数等予以说明,例如参数的类型、格式及存放位置等。
(2).寄存器的保存与恢复:设计良好的子程序在其开头应保存它将用到的寄存器的内容,而在返回前再恢复它们,以保证调用程序的寄存器内容不被破坏。
(3).密切注意堆栈状态:在含有子程序的汇编语言程序设计中,要密切注意堆栈的变化,这包括要注意一切与堆栈有关的操作。当执行RET指令时,从堆栈弹出的数据应该正好是由相应的CALL指令压入的值,否则后果不可预测。
6.简述完整段定义和简化段定义的汇编语言程序的一般结构。
完整段定义汇编语言程序一般格式如下:
STSG SEGMENT STACK‘S’
DW32DUP(?);堆栈段定义
STSG ENDS
DATA SEGMENT
。。。。。。;数据段定义
DATA ENDS
CODE SEGMENT;代码段定义
MAIN PROC;主程序开始
ASSUMECS:CODE,DS:DATA,SS:STSG
MOV AX,DATA;设置DS段的值
MOV DS,AX
。。。。。。。。。。。;
MOV AX,4C00H;程序结束返回DOS
INT21H
MAIN ENDP
CODE ENDS
END MAIN
简化段定义汇编语言程序的一般结构:
(1)使用16位指令模式的一般格式
.MODEL SMALL;存储模式
.586;指令集
.STACK64;堆栈段定义
.
DATA;数据段定义
。。。。。。。。。。
.CODE;代码段定义
.STARTUP;主程序起始
。。。。。。。。。
.EXIT;程序结束返回DOS
END
(2)使用32位指令模式的一般格式
.model flat,stdcall;存储模式
option casemap:none
.586;指令集
includelib msvcrt.lib;函数库包含。。。。。。。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。