汇编语言程序设计模拟题
一、填空:
1、CPU的指令指针寄存器为: ,它与 寄存器联用确定下一条指令的物理地址。
2、若要将所有数据及代码都放在一个段内,应建立 存储模型。
3、操作数:ES:TABLE[DI]、FEES[EBX*2]、MSAK[EAX][EBX]分别采用 、
、 寻址方式。
4、读取当前光标位置可使用BIOS INT 10H的 号功能调用,作为出口参数,光标的行号及列号将从 寄存器中获得。
5、通常用CPU的 寄存器间接寻址端口地址。
6、如果在宏定义体设置局部标号,应使用 伪操作以避免在宏展开时出现标号的多重定义。
7、设(CS)=2A31H,(DS)=9300H,(SS)=25F0H,(BP)=0131H,(SI)=0110H,(DI)=0102H,则指令MOV AX,[BP+SI+8]的源操作数有效地址为________________,物理地址为_________________。
8、设(AX)=1000H,(BX)=2340H,则在执行了指令CMP AX,BX后,CF标志值为___________,ZF标志值为______________。
9、外设的发出中断请求若被CPU响应,有两个条件必不可少,即 和 。
10、显示字符串可使用DOS 9号功能,它要求被显示的字符串最后一个字符必须是 。
11、中断发生时,保存现场将 、 、 寄存器的内容存入堆栈。
12、n位二进制补码数的表数范围为: 。
13、将两个不同模块中的同名段重叠成两个段中较大的一个段,在定义段时应采用 组合属性。
14、操作数:ES:STRING[SI]、COUNT[ESI*4]、MSAK[EBX][ECX]分别采用 、 、 寻址方式。
15、设置光标位置可使用BIOS INT 10H的 号功能调用,作为入口参数,光标的行号及列号应存入 寄存器。
16、通常用CPU的 寄存器间接寻址端口地址。
17、若在模块1中引用模块2中定义的外部符号,则在模块1和模块2中的开头分别使用
、 伪指令。
18、设(CS)=25FFH,(DS)=2140H,(SS)=2510H,(BP)=02D0H,(SI)=0010H,(DI)=0206H,则指令MOV AX,[BP+SI+2]的源操作数有效地址为_________________,物理地址为____ __________。
19、有数据定义如下:
V1 DB 4 DUP(2),2
COUNT EQU 10
V2 DD COUNT DUP(8,5 DUP(?))
则:为变量V1分配____________个字节存贮空间;V2分配____________个字节存贮空间.
20、外设的发出中断请求若被CPU响应,有两个条件必不可少,即 和 。
21、子程序之间传递参数可使用 、 和 三种方式。
22、若中断类型为4AH,则中断向量的地址为 。
23、CPU的指令指针寄存器为: ,它与 寄存器联用确定下一条指令的物理地址。
24、当端口号≥256时,使用IN或OUT指令,必须先将端口号放到 寄存器。
25、操作数:ARY[EAX*2]、ES:[TABLE+SI]、SUM[EBX][EDX]分别采用 、
、 寻址方式。
26、变量有三属性,分别为: 、 、 。
27、如果在宏定义体设置局部标号,应使用 伪操作以避免在宏展开时出现标号的多重定义。
28、宏定义必须由伪指令 开始,伪指令 结束。
29、设(CS)=9896H,(DS)=9100H,(SS)=25F0H,(BX)=0111H,(SI)=0810H,(DI)=0102H,则指令MOV [BX+SI+8],CX的目的操作数有效地址为___ ________,物理地址为____ _________。
30、读取当前光标位置可使用BIOS INT 10H的 号功能调用,作为出口参数,光标的行号及列号将从 寄存器中获得。
31、中断发生时,保存现场将 、 、 寄存器的内容存入堆栈。
32、若:FEES DW 10 DUP(10,5 DUP(?)),则指令:MOV CX,LENGTH FEES执行后,(CX)= .
二、选择题
1、 下列寄存器中,( )可作为基址寄存器。
A、AX B、BX C、CX D、DX
2、 下列指令序列中,清除当前中断请求(EOI)命令为:( )
A、MOV AL,20H B、MOV AL,20H C、MOV AL,21H D、MOV AL,21H
OUT 20H,AL IN AL,20H OUT AL,21H IN AL,21H
3、 段定义时,使用( )定位类型,则该段必须从小段的边界开始。
A、BYTE B、WORD C、DWORD D、PARA
4、 若:(BX)=4336H,(CX)=0136H指令:SUB BX,CX 执行后,SF、ZF、OF、CF标志分别为( )
A、0,0,0,0 B、0,1,0,0 C、1,0,0,0 D、0,0,0,1
5、 若:FEES DW 10 DUP(100,?)
指令:MOV CX,LENGTH FEES执行后,CX的内容为:( )
A、1000 B、1 C、10 D、2000
6、 在循环指令中作为计数器的是( )寄存器。
A、AX B、BX C、CX D、DX
7、 在执行除法指令时,若除数为零则产生一个类型号为( )的中断。
A、0 B、1 C、3 D、4
8、 段定义时,使用( )定位类型,则该段必须从字的边界开始。
A、PARA B、WORD C、DWORD D、BYTE
9、 若:(BX)=4336H,(CX)=0136指令:SUB BX,CX 执行后,SF、ZF、OF、CF标志分别为:( )
A、0,0,0,1 B、0,1,0,0 C、1,0,0,0 D、0,0,0,0
10、若:FEES DW 100 DUP(?),
则指令:MOV CX,LENGTH FEES执行后,CX的内容为:( )
A、100 B、1 C、10 D、0
11、下列寄存器中,( )不能作为变址寄存器。
A、EAX B、EBP C、ECX D、ESP
12、 下列指令序列中,哪条指令与SUB AX,AX效果相同:( )
A、AND AX,AX B、OR AX,AX C、XOR AX,AX D、NOT AX
13、 将两个不同模块中的同名段重叠成两个段中较大的一个段,应采用( )组合属性。
A、PUBLIC B、COMMON C、PRIVATE D、MEMORY
14、 若:(AX)=0F365H,(CX)=0E024H指令:ADD AX,CX 执行后,SF、ZF、CF、OF标志分别为:( ).
A、1,0,1,0 B、0,1,0,0 C、0,0,0,0 D、0,0,0,1
15、 显示字符串可使用DOS 9号功能,它要求被显示的字符串最后一个字符必须是( ).
A、& B、$ C、% D、@
三、判断下列指令及伪指令是否正确(在括号中打“√”或“×”):
1、DIV 20H ( )
2、XCHG BX,ES ( )
3、CMP [BX],TABLE[SI] ( )
4、IN AL,DX ( )
5、MOV BYTE PTR[BX],25H ( )
6、MOV CS,0200H ( )
7、RET 8 ( )
8、LEA TABLE,BX ( )
9、ACL1 MACRO A,B,C ( )
┆
ACL1 ENDM
10、NEWP PROC ( )
┆
NEWP ENDP
11、MUL 20H ( )
12、MOV BX,[SI][DI] ( )
13、CMP [BX],TABLE[SI] ( )
14、OUT DX,AL ( )
15、MOV [DX],25H ( )
16、POP CS ( )
17、RET 8 ( )
18、LEA TABLE,BX ( )
19、MOVE EQU MOV ( )
20、FEED MACRO X,Y,Z ( )
┆
FEED ENDM
21、ADD ES:BX,20H ( )
22、XCHG DX,DS ( )
23、CMP [BX],TABLE[SI] ( )
24、OUT DX,AL ( )
25、RET 8 ( )
26、DATA1 DB DATA0 ( )
27、MOVE EQU MOV ( )
四、完成下列指令序列:
1、将数据段中字串STRING1(长度为N),传送到附加段中以BUFF为首地址的缓冲区:
┆
MOV SI,
MOV DI,
MOV CX, N
CLD
REP
2、分别用一条语句实现下述指明的功能
(1)变量AYD存放的地址指针送ES和SI
(2)AX的内容加1,要求不影响CF
.CODE
MAIN PROC FAR
MOV AX,@DATA
MOV DS,AX1、设置中断向量(中断例行程序为INTERHAND,中段类型号为N)
┆
MOV AX,SEG INTERHAND
MOV DS,AX
MOV DX,
MOV AL,N
INT 21H
┆
INTERHAND:
┆
IRET
3、清除全屏幕
┆
MOV AX,
MOV BH,7
MOV CX,
MOV DX,
INT 10H
┆
4、分别用一条语句实现下述指明的功能
(1)字变量LIST存放的地址指针送ES和DI.
(2)将AX的内容加1,要求不影响CF.
(3)将BX的高4位置1,其余位不变.
(4)将SI指向的字单元内容存入堆栈.
(5)比较两个带符号数,若前者≥后者,则转向NEXT.
5、清除屏幕右半区域:
┆
MOV AX,
MOV BH,7
MOV CX,0
MOV DX,
INT 10H
┆
6、 MOV CL,8
SHL AX,CL
SHR BX,CL
ADD AX,BX
MOV WORD PTR DATA1,AX
问:上述指令序列的功能是什么?
7、 ┆
MOV AL,N
MOV AH,35H
INT 21H
PUSH ES
PUSH BX
PUSH DS
MOV AX,SEG INTERHAND
MOV DS,OFFSET INTERHAND
MOV AL,N
MOV AH,25H
INT 21H
POP DS
┆
问:上述指令序列的功能是什么?
8、分别用一条语句实现下述指明的功能:
① 栈顶内容弹出送字变量MG1.
② 变量MG2类型属性送AH.
③ AX的内容加1,要求不影响CF.
④ 将EBX的低4位取反.
⑤ 若(CX)=0则转移至NEXT.
五、分析计算题:
1. 设(AX)=201BH,(BX)=110CH,(DI)=0001H,(DS)=4000H,(4110CH)=0AH,(4110DH)=81H,(4110EH)=70H;
则:① MOV AX,[BX]指令执行后,(AX)= ;
② MOV BH,BYTE PTR[BX+DI+1],指令执行后,(BX)= .
2.
MOV AX,6540H
MOV DX,3210H
MOV CL,04
SHL AX,CL
MOV BL,AH
OR DL,BL
试问上述程序段运行后,
(AX)=
(BL)=
(DX)=
3、
DATA1 DW 1000H
DATA2 DW 2000H
┆
PUSH DATA1
PUSH DATA2
POP DATA1
POP DATA2
问:①上述程序段执行后,(DATA1)= ,(DATA2)= .
②设执行前(SP)=200H,执行后(SP)= .
4、 BUFF DB 7 , 6 , '56' ,?
ARRAY DW 0 , 67H , 7
BASUB EQU ARRAY-BUFF
问:BASUB的值是多少?它表示什么意义?
5、
MOV CL,3
MOV BX,0B7H
ROL BX,1
ROR BX,CL
问:上述程序执行完毕,BX寄存器的内容是什么?
6、
┆
.DATA
STRING1 DB 50,?,50 DUP(?)
NEXT:
LEA DX,STRING1
MOV AX,0AH
INT 21H
CMP STRING1+2,0DH
JE EXIT
JMP SHORT PTR NEXT
EXIT:
MOV AX,4C00H
INT 21H
MAIN ENDP
END MAIN
说明上述指令序列的功能。
7.设(AX)=9A6CH,(BX)=710BH,(DI)=0002H,(DS)=6000H,(6710BH)=09H,(6710CH)=87H
(6710EH)=5EH;
则:① MOV AX,[BX]指令执行后,(AX)= ;
② MOV BL,BYTE PTR[BX+DI+1],指令执行后,(BX)= .
8. OPER1 DB 1,2
OPER2 DW 1234H,5678H
则: 指令 ① MOV AX,WORD PTR OPER1+1执行后,(AX)= .
② MOV AL,BYTE PTR OPER2执行后,(AL)= .
③ MOV AH,SIZE OPER2执行后,(AH)= .
六:叙述题:
调用程序和子程序之间参数传递有哪几种主要方式? 各自的特点是什么?
简述8086CPU的中断响应过程。
简述子程序调用与宏调用工作方式的区别。
七:程序设计:
1、设X、Y、Z、W均为16位带符号数单元地址,写出执行下述计算的子程序。
Z=│X+Y-W│
2、编写汇编语言源程序:测试ALPHA字节变量单元中的ASCII码字符串,进行如下操作:
(1)若为数字字符,送入NUM字节单元中,置标记FLAG为0;
(2)若为大写字母字符,送入BICCHR字节单元中,置标记FLAG为0;
(3)若为小写字母字符,送入SMLCHR字节单元中,置标记FLAG为0;
(4)否则,置标记FLAG为1.
(字符0,9,A,Z,a,z的ASCII分别为30H,39H,41H,5AH,61H,7AH)
3、设X、Y、Z均为16位带符号数单元地址,写出执行下述计算的子程序。
X+Z ,X≥Z
Y=
X-Z ,X<Z
4、已知有256个字节整数a1,a2,a3,...,a256存放在以NUMBER为首地址的数据区中。编一程序将其中的负数去除后将剩下的正数重新顺序存放在以PLUS开始的数据区中。
5、 编写程序段。用串处理指令,比较两个有10个字符的字符串变量CHR1和CHR2,如果两者全不相同则执行子程序OTHER,否则,顺序执行。
6、编写汇编语言源程序: 设在字单元A、B和C中存放有三个数,若三个数都不为0,则求出三个数之和存入字单元D中,若有一个为0,则将其他两个单元也清零。
温馨提示:内容为网友见解,仅供参考