admin管理员组文章数量:1530846
2024年2月15日发(作者:)
一、单项选择题(本大题共20小题,每小题1分,共20分)
1.设A=0.4H,B=0.8H,C=0.4,D=0.4Q,它们之间的关系是( )
A. C+D=B B. A+D=B
C. B=D D. A>C>D
2.标志寄存器中属于控制标志位的是( )
,OF,SF ,IF,TF
,CF,PF ,OF,SF
3.8088/8086存储器分段,每个段不超过( )
A.64K个字 B.32K个字节
C.1兆个字节 D.64K个字节
4.设AL中已有压缩型BCD码,为实现对AL的减1操作,可选用的指令序列是(
AL AL,0
AAS DAS
AL,1 AL,1
AAS DAS
5.要输入端口1234H中的8位数据,其指令应是( )
DX,1234H DX,1234H
OUT DX,AL 1N AL,DX
C.1N AX,1234H DX,1234H
6.若AX=-15要得到AX=15应执行的指令是( )
AX AX
AX AX
7.8086/8088系统执行传送指令MOV时( )
A.不影响标志位 B.影响DF方向标志
C.影响SF符号标志 D.影响CF进位标志
8.MOV AL,79
ADD AL,0B1H
上面指令执行后,设置的标志位CF和OF的值是( )
=0,OF=1 =1,OF=1
=0,OF=0 =1,OF=0
9.已知AX,BX中均为带符号数,当进行字相除时,下面指令或指令序列正确的是(
BX
IDIV BX
DX,DX
DIV BX IDIV BX
10.下列指令中操作数在代码段中的是( )
AL,42H AL,BL
[BX],DI D.1NC [DI]
11.用REPE SCASB指令对字符串进行扫描,如CX0时,扫描结束,那么表示(A.在字符串中遇上第一个AL中指定的字符
B.在字符串中有一个AL中指定的字符
) ) )
C.在字符串中有一个不是AL中指定的字符
D.在字符串中遇上第一个不是AL中指令的字符
12.下列指令执行后对源和目的操作数均无影响的是( )
[BX+2],AX
[SI],BX
AX,2467H
AX,BX
4567H
ˋCDˊ
13.表示过程定义结束的伪指令是( )
14.下列有语法错误的语句是( )
12H
ˋBCDˊ
┇
15.DB1 DB 8 DUP(2 DUP(3),3 DUP(2))
MOV AX,WORD PTR DB1 [04H]
上面指令执行后,AX的内容是( )
A.0302H B.0203H
C.0202H D.0303H
16.BUF1 DB 3 DUP(0,2 DUP (1,2),3)
COUNT EQU $ -BUF1
符号COUNT等价的值是( )
A.6
C.16
B.18
D.8
17.DA1 DW 2A05H
DA2 DB 0FAH
┇
MOV AL,BYTE PTR DA1
SUB DA2,AL
上述指令执行后,DA2中的内容是( )
A.0DAH
C.0F5H
B.0FAH
D.0D0H
18.设(SS)=338AH,(SP)=450H,执行PUSH BX,和PUSHF两条指令后,堆栈顶部的物理地址是( )
A.33CECH
C.33CF4H
A.0036H
C.0030H
B.33CF2H
D.33CE8H
B.0022H
D.0020H
B. CF=0 AND ZF=1
D. CF=1 AND ZF=1
19.设(SP)=0028H,执行段内返回指令RET 6后,SP的内容是( )
20.条件转移指令JNBE产生转移的条件是( )
A. CF=0 AND ZF=0
C. CF=1 AND ZF=0
21.与MOV BX,0FFSET VAR指令完全等效的指令是( )。
①MOV BX,VAR ②LDS BX,VAR ③LES BX,VAR ④LEA BX,VAR
22.在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是( ).
①WORD ②PAGE ③BYTE ④PARA
23.在汇编语言程序的开发过程中使用宏功能的顺序是( )。
①宏定义,宏调用 ②宏定义,宏展开
③宏定义,宏调用,宏展开 ④宏定义,宏展开,宏调用
24.汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省
略的项是( )。
①名字项 ②操作项 ③操作数项 ④注释项13. MOV SP,3210H
PUSH AX
执行上述指令序列后,SP寄存器的值是( )。
①3211H ②320EH ③320FH ④3212H
DW 10H DUP(3 DUP(2,10H),3,5)
上述语句汇编后,为变量BUF分配的存储单元字节数是( )。
①80H ②100H ③124 ④192
二、简答题(本大题共3小题,每小题2分,共6分)
1.假设DS=2000H,COUNT=0100H,SI=0030H,指令MOV AX,COUNT[ST]
①写出源操作数的物理地址?
②该指令可否写成MOV AX,[COUNT+SI]?
2.下面指令有无错误?若有错,是什么错误?
①MOV AX,[SI][DI]
②CMP [SI],[BX]
3.条件转移指令的判断条件除标志位PF外还有哪几个标志位?
三、程序分析题(每小题6分,共36分)
l.已知 AX=0FF60H,CF=1
MOV DX,96
XOR DH,0FFH
SBB AX,DX
执行上述指令序列后,AX= ,CF=
2.设寄存器AL,BL,CL中内容均为76H,
XOR AL,0FH
AND BL,0FH
OR CL,0FH
执行上述指令序列后,AL= BL= CL=
3.已知AX=0A33AH,DX=0F0F0H
AND AH,DL
XOR AL,DH
NEC AH
NOT AL
执行上述指令序列后,AH= ,AL=
4. DATA SEGMENT
S9 DB 0,1,2,3,4,5,6,7,8,9
DATA ENDS
:
LEA SI,S9
LEA, DI,S9+1
MOV CX,5
LOP: MOV AL,[SI]
XCHC AL,[DI]
MOV [SI],AL
ADD SI,2
ADD DI,2
LOOP LOP
上述程序段运行后,S9开始的10个字节存储单元内容是什么?
5. MOV AL,38H
MOV BL,49H
CALL SUB0
INC AL
DEC CL
.........
SUB0 PROC
ADD AL,BL
MOV CL,AL
DAA
RET
SUB0 ENDP
上述程序段运行后,AL= CL=
6.ADR DW 1234H,5678H
┇
LEA SI,ADR
LDS BX,ADR
设变量ADR的偏移地址是100H,上述两条指令执行后:SI= ,BX= 。
7.已知DS和ES指向同一个段,且当前数据段从0000H到00FFH单元内容分别为01,02,03,„,0FF,00H。问下列程序段执行后,0000~0009H的内容是些什么值。
MOV SI,0000H
MOV DI,0001H
MOV CX,0080H
CLD
REP MOVSW
8.STR1 DB ˋCOMPUTERNDPASCALˊ
SCA DB ˋNˊ
┇
LEA DI,STR1
MOV AL,SCA
MOV CX,10H
CLD
REPNE SCASB
NEXT:„„
程序运行到NEXT时CX= ZF=
9.已知AX=0FFFFH,DX=0001H
MOV CX,2
LOP:SHL AX,1
RCL DX,1
LOOP LOP
上述程序段执行后,DX= AX=
10.已知DX=0A476H,CX=0302H,CF=1
OR DX,DX
RCR DX,CL
XCHG CH,CL
RCL DX,CL
上述程序段执行后,DX= CF=
11.MOV AX,10
SHL AX,1
SHL AX,1
MOV BX,AX
MOV CL,2
SHL AX,CL
ADD AX,BX
上述程序段执行后,BX= AX=
12.已知AX=78H,BX=0804H
SHR BX,1
AND BX,0F0FH
MOV CX,4
LOP:XCHG BH,BL
DIV BL
SAL AX,1
LOOP LOP
上述程序段执行后,AX= BX=
四.改错. 阅读下列数据传送程序段,改正使用不当的语句
A DB 35,47,2AH,'XYZ'
B DB N DUP(0)
N EQU $-A
MOV SI, A
MOV DI, B
MOV CX, LENGTH A
LP: MOV AX, [SI]
MOV [DI], AX
INC SI
INC DI
DEC CX
LOOP LP
五.程序填空题(每空3分,共18分)
1.下面是程序段是判断寄存器AH和AL中第3位是否相同,如相同,AH置0,否则AH置全1.试把空白处填上适当指令.
AND AH , 08H
MOV AH , 0FFH
JMP NEXT
ZERO: MOV AH, 0
NEXT : ........
2.有一个首址为A的字数组,完成从大到小的排序.
DATAREA SEGMENT
A DW N DUP(?)
DATAREA ENDS
PROGRAM SEGMENT
MAIN PROC FAR
START :
PUSH DS
SUB AX, AX
PUSH AX
MOV DS ,AX
MOV CX , N
LOOP1: MOV DI ,CX
MOV BX ,0
LOOP2: MOV AX ,A[BX]
CMP
JGE CONTINE
XCHG AX ,
MOV A[BX] , AX
CONTINE: ADD BX
LOOP LOOP2
LOOP LOOP1
RET
MAIN ENDP
END START
3.该程序段的功能是求出存放在DX、AX中的双精度数的绝对值,并将结果保存在A和A+2单元中,请在空白处填写指令。
[1]
JNS RESULT
NOT AX
NOT DX
INC AX
[2]
RESULT:
MOV A , AX
MOV A+2 , DX
4. 下面程序执行后,AL的内容为ARRAY数组中的最小数,请在空白处各填上一条指令。
ARRAY DB 3,5,-3,-2,4,5,-8,6
┇
MOV CX,7
MOV DI,0
MOV AL,ARRAY
A1: INC DI
①
JLE A2
MOV AL,ARRAY [DI]
A2 ②
5.下面程序段是判断两个存储单元是否同为正数,如是,则AX置全0,否则AX置非0。试在空白处各填上适当的一条条件转移指令(两空白处要利用不同的标志位选用不同的条件转移指令)。
VAR1 DW ××××
VAR2 DW ××××
┇
MOV AX,VAR1
MOV BX,VAR2
XOR AX,BX
①
TEST BX,8000H
②
MOV AX,0
NEXT:„„
6.以BUFF为首地址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中.
BUF DB 5,6,7,58H,62,45H,127,.......
COUNT EQU $-BUF
MAX DB ?
.
.
MOV BX ,OFFSET BUF
MOV CX ,COUNT -1
MOV AL ,[BX]
NXET: INC CX
JAE NEXT
MOV AL, [BX]
NEXT: DEC CX
MOV MAX , AL
六、编制程序题(第1小题8分共16分)
l.现有 data segment
array dw 64 dup(?)
dw 5 dup(?)
data ends
试编写一程序段,要求在array+8到array+10(两者都包括在内)单元中插入5个0.(提示:先把从array+8单元开始的数据后移5个单元,然后再在规定位置插入0)
2.从键盘上输入来宾的姓名Mr.×××或Mrs.×××,当按动任意键时,屏幕上显示出:
"Welcome Mr.×××".
3.定义宏指令并展开宏调用:
宏指令JOE把一串信息“MESSAGE NO.K”存入数据区XK中.
宏调用I=0
JOE TEXT , I
JOE TEXT ,I
JOE TEXT ,I
4.在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一个完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首的数据区中。
DATA SECMENT
BUF1 DW -56,24,54, -1,89, -8,„„
BUF2 DW 45, -23,124, 345, -265,„„
SUM DW 10 DUP(0)
DATA ENDS
5. 改错. 阅读下列数据传送程序段,改正使用不当的语句
A DB 35,47,2AH,'XYZ'
B DB N DUP(0)
N EQU $-A
MOV SI, A
MOV DI, B
MOV CX, LENGTH A
LP: MOV AX, [SI]
MOV [DI], AX
INC SI
INC DI
DEC CX
LOOP LP
6.内存中由SOURCE指示的个字节有符号数组成的数组分成正数和负数两个数组,并求这两个数 组的数据个数,结果存放在RESULT指示的内存区域。存放形式为正数个数在前,其后跟正数组元素,然后是负数个数及负数数组元素.
7从键盘输入一系列字符,以字符’$’为结束符,然后对其中的非数字字符计数,并显示出计数结果
8.在STRING到STRING+99单元中存放着一个字符串,并编写一个程序,测试该字符串中是否存在数字.如有数字则把DL的第5位置1,否则将该位置0
9.统计串中的空格个数和逗号的个数.
11. . 用地址表转移表实现下列C语句,其中变量A和B是有符号的整型变量:
switch(a%8)
{ case 0 :b=32 ; break;
case 1:
case2: b=b+43; break;
case3: b=b*a; break;
case4: b-- ; break;
case5:
case6:
case7: printf("Function 5_6_7 "); break;
}
}
版权声明:本文标题:汇编语言练习题 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1707993932a211896.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论