一、单项选择题(每小题1分,共10分)
1、十进制数269变换为十六进制数是( )。 (A)10B (B)10C (C)10D (D)10E
2、指令mov 100[si][bp],ax目标操作数的隐含段为( )。 (A)数据段 (B)堆栈段 (C)代码段 (D)附加段 3、以下语句汇编后,CENTH的值是( ) buf1 dw 8,19
buf2 db 6,'abc$',10 dup('5') CENTH equ buf2—buf1
A.14 B.8 C.4 D.17
4、若栈顶物理地址为20100H,当执行完指令PUSH AX后,栈顶的物理地址为()。 (A)20102H (B)20101H (C)200FFH (D)200FEH 5、执行下列指令后,正确的结果是( )。 MOV AL, 100 MOV BL, -2
(A)AL=100H,BL=02H (B)AL=64H,BL=0FEH (C)AL=64H,BL=82H (D)AL=100H,BL=0FEH
6、假定AX的内容为-32768,在执行了指令NEG AH后,标志位(SF,OF)为( )。 (A)0,0 (B)0,1 (C)1,0 (D)1,1
7、设AL=0B4H,BL=11H,指令“MUL BL”和指令“IMUL BL”分别执行后OF,CF的值为()。
(A)OF=1,CF=0 (B)OF=1,CF=1 (C)OF=0,CF=0 (D)OF=0,CF=1 8、当A≥B时转移的条件转移指令为(A,B为带符号数)( )。 (A)JA (B)JAE (C)JG (D)JGE
9、完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是( )。 (A)MOV AL,00H (B)AND AL,00H (C)XOR AL,AL (D)SUB AL,AL
10、已知CALL BX执行前SP=100H,执行后SP的内容为( )。 (A)100H (B)102H (C)98H (D)0FEH 二、填空题(每空1分,共10分) 1、(00101011)B+(13)D+(1B)H=( )Q
2、IBM PC机内存容量最大为( )B,要寻找这样大的空间,需要( )根地址线。
3、有一个由20个字组成的存储区,其起始处段地址为4701H,偏移地址为2012H。试写出该存储区首单元和末单元的物理地址分别为( )和( )。
4、已知AL, BL中数据为带符号数,若求AL∕BL的商,应使用指令序列为:( ) 和( )。
5、调用程序与子程序之间的参数传递方法有三种,即( )、( )和( )。 三、指出下列指令的错误并改正(每小题1分,共9分)
1、MUL 20H( )
2、RCR AX , 3( ) 3、CMP [2000H] , LAB( ) 4、LDS DWORD PTR BUFFER( ) 5、CALL AL( ) 6、MOV AL,300( ) 7、MOV ???AX ,DI+BX ( ) 8、MOV [SP] , BX( )
9、IN AX , 1234H( ) 四、简答题(每小题4分,共16分)
1、8086有哪4种逻辑段?各种逻辑段分别是什么用途? 2、请分别用一条汇编语言指令完成如下功能:
(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。
(2)用寄存器BX和SI的基址变址寻址方式把存储器的1字节与AL寄存器的内容相加,并把结果送到AL中。
(3)用BX和位移量为0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中。
(4)用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储器中。
3、变量和标号有什么属性?
4、什么是子程序的嵌套、递归和重入? 五、程序分析题(每小题5分,共20分) 1、下列程序完成的是什么功能? cmp ax,0 jns nonneg neg ax nonneg:
2、假设X和X+2单元的内容为双字数据P,Y和Y+2单元的内容为双字数据Q(X单元与Y单元为低位字),说明下列程序段完成什么工作? MOV DX, X+2 MOV AX, X ADD AX, X ADC DX, X+2 CMP DX, Y+2 JL L2 JG L1
CMP AX, Y JBE L2
L1:MOV AX, 1 HLT;停止工作 L2:MOV AX, 2 HLT
3、下述程序段运行后,S9开始的10个字节存储单元内容是什么? DATA SEGMENT
S9 DB 0,1,2,3,4 DB 5,6,7,8,9 DATA ENDS ┆ LEA SI,S9 LEA DI,S9+1 MOV CX,5
LOP: MOV AL,[SI] XCHG AL,[DI] MOV [SI],AL
ADD SI,2 ADD DI,2 DEC CX
JNZ LOP
4、分析下面的程序段完成什么功能? MOV AX,0FFFFH MOV SI,0 MOV CX,100
AGAIN: MOV BX,DATA[SI] TEST BX,1 JNZ NEXT CMP AX,BX JB NEXT
MOV AX,BX NEXT: ADD SI,2 LOOP AGAIN
六、 程序填空题(每空只能填一条指令!每空2分,共10分)
下列程序段是把string字符串中所有大写字母改为小写,该字符串以0结尾,请补全程序。 (1) again: mov al,[bx] (2) jz done cmp al,'A' jb next
(3) ja next
(4) mov [bx],al next: (5) jmp again done: nop
七、编制程序题(第一题10分,第二题15分,共25分) 1、查表法,实现一位16进制数转换为ASCII码显示
2、设有一段英文,其字符变量名为ENG,试编写一个程序,查对单词READ在该文中出现次数并存放在BX寄存器中。
答案
一、单项选择题(每小题1分,共10分)
(1)C;(2)B;(3)C;(4)D;(5)B;(6)D;(7)B;(8)D;(9)A;(10)D 二、填空题(每空1分,共10分)
(1)123;(2)1M;(3)49022H:49048;(4)CBW和IDIV BL;(5)堆栈法 寄存器法 存储单元 三、指出下列指令的错误并改正(每小题1分,共9分) (1) 立即数不能作为MUL指令的操作数。改正:MUL AL
(2) 移位次数大于1的时候不允许使用立即数。改正:RCR AX,1
(3) 两个操作数不允许同时为存储器操作数。改正:CMP [2000H],AL (4) 缺少目的操作数。改正:LDS BX,DWORD PTR BUFFER
(5) 子程序调用指令的操作数必须是16位或32为。改正:CALL AX (6) 无效的操作数。改正:MOV AL,30
(7) 寻址方式书写不正确。改正:MOV AX,[DI+BX] (8) 目的寻址寄存器书写不正确。改正:MOV [BP],BX
(9) 端口号大于255的时候不能用立即数。改正IN AX,12H 四、简答题(每小题4分,共16分)
1、8086有哪4种逻辑段?各种逻辑段分别是什么用途? 代码段:用来存放程序的指令序列。 数据段:存放当前运行程序所用的数据。 堆栈段:确定堆栈所在的主存区域。
附加段:是附件的数据段,也可用于数据的存放。 2、请分别用一条汇编语言指令完成如下功能: (1) ADD DX,BX
(2) ADD AL,[BX+SI]。 (3) ADD [BX+0B2H],CX。 (4) ADD [0520H],3412H。 3、变量和标号有什么属性?
(1) 段属性:定义标号的段起始地址,此值必须在一个段寄存器中,而标号的段则总是在CS寄存器中。段属性值可以用SEG算符求得。
(2) 偏移属性:标号的偏移地址是从段起始地址到定义标号的位置之间的字节数。标号偏移量属性值可由OFFSET算符求得。
(3) 类型属性:类型属性用来指出该标号是在本段内引用还是在其他段中引用的。标号类型值可用TYPE算符求得。
4、什么是子程序的嵌套、递归和重入?
子程序的嵌套:子程序内包含有子程序的调用就是子程序嵌套。 递归:当子程序直接或间接地嵌套调用自身时称为递归调用。
重入:是指子程序被中断后又被中断服务程序所调用,子程序的重入不同于子程序的递归。重入是被动地进入,而递归是主动地进入。 五、程序分析题(每小题5分,共20分) (1) 求AX的绝对值
(2) 如果2P小于等于Q,则AX=2,否则AX=1 (3) 1,0,3,2,5,4,7,6,9,8
(4) 在以DATA为首地址的100个字的无符号的数据中,求出最小偶数并存入AX寄存器中。
相关推荐: