汇编语言程序设计模拟试题及参考答案2
- 格式:doc
- 大小:39.00 KB
- 文档页数:6
汇编语言程序设计模拟试题及参考答案2
一、单项选择题(从四个备选答案中选出一个正确的答案填在题干的括号内)(20分)
1. 指令MOV AL,[SI+10H]的源操作数的寻址方式为 ( )。
A. 变址寻址 B. 寄存器间接寻址 C. 基址寻址 D.基址变址寻址
2.确定下列哪些数据在汇编语言中是合法的 ( )。
A. AL+19H B. 19H AND 45 C. ABH D. 35H SAL 1
3.已知AL,BX为无符号数,计算AL*BX的乘积,用下述程序段 ( )。
A. MUL BX B. IMUL BX C. XOR AH,AH D. CBW
MUL BX MUL BX
4. 已知AX=8065H,BX=103AH,则指令SUB BH,AH执行后,OF和CF的值分别为( )。
A. 0,0 B. 0,1 C. 1,0 D. 1,1
5. 已知SP=100H, 指令PUSH AX执行后,SP的内容为 ( )
A. 100H B. 102H C. 00FEH D. 98H
6. 下列程序段执行后, AL的值应为 ( )。
MOV AX,0FFFEH
MOV BL,0FFH
IDIV BL
A. 溢出,无结果 B. 02H C. -02H D. 0FEH
7. JMP WORD PTR[SI] 的目标地址偏移量为 ( )。
A. IP+[SI] B. IP+SI的内容
C. SI的内容 D. SI所指向的内存字单元的内容
8. 已知SUBR是一个属性NEAR的子程序, 下述调用SUBR子程序的指令序列中, 哪一个不能实现
调用SUBR的目的。 ( )
A. CALL SUBR B. CALL NEAR PTR SUBR
C. MOV BX, OFFSET SUBR D. MOV BX, OFFSET SUBR
CALL NEAR PTR[BX] CALL BX
9. 初始化8259A时,ICW2的值为15H,当IR3端有中断请求时,8259A送出的中断方式码是( )。
A. 18H B. 15H C. 13H D. 10H
10. 在两个8259A级联的中断系统中,从8259A连接在主8259A的IR4上,主8259A和从8259A
的ICW3应设置为 ( )。
A. 10H,04H B. 04H,10H C. 08H,04H D. 04H,08H
二、判断题(判断每题正误,对的在题后的括号内打“√”;错的在题后的括号内打“×”)。(10分)
1. MOV AX,BL ( ) 6. PUSH 1234H ( )
2. XCHG AL,10H ( ) 7. JNS AX ( )
3. LEA AX,SI ( ) 8. CALL AX ( )
4. AND AL, NOT 10H ( ) 9. IN AX,20H ( )
5. MOV [SI], 10H ( ) 10. OUT AX,DX ( )
三、填空题。(20分)
1. 已知:BX=100H,BP=200H,SI=300H,DS=1000H,SS=2000H,CS=3000H,指出下述指令中
存储器操作数的有效地址及实际地址。(6分)
指 令 有效地址 实际地址
MOV AL,[SI]
MOV AL,[BP+100H]
MOV CS:[BX+SI-100H],AL
2. 写出下述两条数据定义伪指令语句经过汇编后的内存分配情况。(6分)
DATA1 DB 85, -85,‘12’
DATA2 DW 85, -85,‘12’
DATA1 DATA2
3. 依据下述子程序说明文件把子程序补充完整。(8分)
1)子程序名:MADD;
2)子程序功能:两个多字节数据相加;
3)入口条件:被加数和加数的低字节地址分别在SI和DI中,字节数在CX中;
4)出口条件:结果值在被加数单元(SI为地址指示器);
5)受影响的寄存器:F。
MADD PROC
PUSH SI
PUSH AX
PUSH CX
PUSH DI
( )
MADD1: MOV AL,[DI]
ADC [SI],AL
( )
( )
LOOP MSUB1
POP DI
POP CX
POP AX
POP SI
( )
MADD ENDP
四、改错题。(10分)
已知下述程序是从两个无符号数中选出较大者送入MAX中,但程序有错,请改正。
要求:不必操题,直接在试题上修改。在错误的部分下面划一条线,然后在本行的后面给出正
确的答案即可。
1. DSEG SEGMENT
2. DAX: DB A0H
3. DAY DB 300
4. MAX DW 0
5. DSEG END
6. CSEG SEGMENT
7. ASSUME CS:CSEG;DS:DSEG
8. BEGIN: MOV DS,DSEG
9. MOV AL,DAX
10. CMP AL,DAY
11. JG LMAX
12. MOV AL,DAY
13. LMAX MOV MAX,AL
14. HLT
15. CSEG ENDS
16. END START
五、简答题(25分):用尽可能少的指令编写完成下列功能的程序段。
1. 将寄存器AL的第4、3位变反,其余位保持不变。
2.DX和AX联合存放一个32位整数(DX存放高16位),将该数据逻辑右移一位。
3.将寄存器AL的第i+1、i位写入BL的第i+1、i位,BL的其余位保持不变,i值在CL中。
4.如果AH的第4,3位为00,则将AH清0,否则置全1。
5. 已知一个设备的中断服务程序入口地址为SERVER,中断方式码为10H,写出将该设备的中断服
务程序的入口地址写入中断向量表的程序段。
六、程序设计题。(15分)
已知一组无符号字节数据存放在内存DATA开始的连续单元中,数据个数在CNT单元存放。
编制程序求出该组数据的最小值,并将其存入MIN单元。
参考答案
一、 A B C C C B D C C A
二、 × × × √ × × × √ √ ×
三、
1.
指 令 有效地址 实际地址
MOV AL,[SI] 300H 10300H
MOV AL,[BP+100H] 300H 20300H
MOV CS:[BX+SI-100H],AL 300H 30300H
2. DATA1 DATA2
55H ABH 31H 32H 55H 00H ABH FFH 32H 31H
3. CLC
INC SI
INC DI
RET
四、
2行,DAX:改为DAX,A0H改为0A0H
3行,300超出字节范围,改为30H
4行,DW改为DB
5行,END改为ENDS
7行,分号;该为逗号
8行,改为如下两条语句:
BEGIN: MOV AX,DSEG
MOV DS,AX
11行,JG改为JA
13行,LMAX改为LMAX:
16行,START改为BEGIN
五、
1.
XOR AL,18H
2.
SHR DX,1
RCR AX,1
3.
MOV AH,03H
SHL AH,CL
AND AL,AH
NOT AH
AND BL,AH
OR BL,AL
4.
AND AH, 18H
JZ L1
MOV AH, 0FFH
L1:
5.
XOR AX,AX
MOV ES,AX
MOV DI,10H*4
CLD
MOV AX,OFFSET SERVER
STOSW
MOV AX,SEG SEREVR
STOSW
六、
DSEG SEGMENT
DATA DB 10H,20H,35H,64H,89H,3AH,25H,0ABH,67H,42H
CNT DW 10
MIN DB 0
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG
START: MOV AX, DSEG
MOV DS, AX
LEA SI, DATA
MOV CX, CNT
MOV AL, [SI]
DEC CX
AGAIN: INC SI
CMP AL, [SI]
JB NEXT
MOV AL, [SI]
NEXT: LOOP AGAIN
MOV MIN, AL
MOV AH, 4CH
INT 21H
CSEG ENDS
END START