资源描述
一、单项选择题(本大题共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.标志寄存器中属于控制标志位的是( )
A.DF,OF,SF B.DF,IF,TF
C.OF,CF,PF D.AF,OF,SF
3.8088/8086存储器分段,每个段不超过( )
A.64K个字 B.32K个字节
C.1兆个字节 D.64K个字节
4.设AL中已有压缩型BCD码,为实现对AL的减1操作,可选用的指令序列是( )
A.DEC AL B.SBB AL,0
AAS DAS
C.SUB AL,1 D.SUB AL,1
AAS DAS
5.要输入端口1234H中的8位数据,其指令应是( )
A.MOV DX,1234H B.MOV DX,1234H
OUT DX,AL 1N AL,DX
C.1N AX,1234H D.OUT DX,1234H
6.若AX=-15要得到AX=15应执行的指令是( )
A.NEG AX B.NOT AX
C.INC AX D.DEC AX
7.8086/8088系统执行传送指令MOV时( )
A.不影响标志位 B.影响DF方向标志
C.影响SF符号标志 D.影响CF进位标志
8.MOV AL,79
ADD AL,0B1H
上面指令执行后,设置的标志位CF和OF的值是( )
A.CF=0,OF=1 B.CF=1,OF=1
C.CF=0,OF=0 D.CF=1,OF=0
9.已知AX,BX中均为带符号数,当进行字相除时,下面指令或指令序列正确的是( )
A.DIV BX B.CWD
IDIV BX
C.XOR DX,DX D.CBW
DIV BX IDIV BX
10.下列指令中操作数在代码段中的是( )
A.MOV AL,42H B.ADD AL,BL
C.SUB [BX],DI D.1NC [DI]
11.用REPE SCASB指令对字符串进行扫描,如CX0时,扫描结束,那么表示( )
A.在字符串中遇上第一个AL中指定的字符
B.在字符串中有一个AL中指定的字符
C.在字符串中有一个不是AL中指定的字符
D.在字符串中遇上第一个不是AL中指令的字符
12.下列指令执行后对源和目的操作数均无影响的是( )
A.MOV [BX+2],AX B.SUB AX,2467H
C.SBB [SI],BX D.CMP AX,BX
13.表示过程定义结束的伪指令是( )
A.ENDP B.ENDS
C.END D.ENDM
14.下列有语法错误的语句是( )
A.DB 12H B.DW 4567H
C.DD ˋBCDˊ D.DB ˋCDˊ
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 B.18
C.16 D.8
17.DA1 DW 2A05H
DA2 DB 0FAH
┇
MOV AL,BYTE PTR DA1
SUB DA2,AL
上述指令执行后,DA2中的内容是( )
A.0DAH B.0FAH
C.0F5H D.0D0H
18.设(SS)=338AH,(SP)=450H,执行PUSH BX,和PUSHF两条指令后,堆栈顶部的物理地址是( )
A.33CECH B.33CF2H
C.33CF4H D.33CE8H
19.设(SP)=0028H,执行段内返回指令RET 6后,SP的内容是( )
A.0036H B.0022H
C.0030H D.0020H
20.条件转移指令JNBE产生转移的条件是( )
A. CF=0 AND ZF=0 B. CF=0 AND ZF=1
C. CF=1 AND ZF=0 D. CF=1 AND ZF=1
21.与MOV BX,0FFSET VAR指令完全等效的指令是( )。
①MOV BX,VAR ②LDS BX,VAR ③LES BX,VAR ④LEA BX,VAR
22.在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是( ).
①WORD ②PAGE ③BYTE ④PARA
23.在汇编语言程序的开发过程中使用宏功能的顺序是( )。
①宏定义,宏调用 ②宏定义,宏展开
③宏定义,宏调用,宏展开 ④宏定义,宏展开,宏调用
24.汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省
略的项是( )。
①名字项 ②操作项 ③操作数项 ④注释项
25. MOV SP,3210H
PUSH AX
执行上述指令序列后,SP寄存器的值是( )。
①3211H ②320EH ③320FH ④3212H
25.BUF 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]?
①物理地址:20130H(1分)
②可以(1分)
2.下面指令有无错误?若有错,是什么错误?
①MOV AX,[SI][DI]
②CMP [SI],[BX]
①错,不能同时出现[SI],[DI](1分)
②错,存储单元之间不能直接比较(1分)
3.条件转移指令的判断条件除标志位PF外还有哪几个标志位?
OF、ZF、SF,和CF的标志位(2分)
三、程序分析题(每小题6分,共36分)
l.已知 AX=0FF60H,CF=1
MOV DX,96
XOR DH,0FFH
SBB AX,DX
执行上述指令序列后,AX= 0 ,CF= 0
2.设寄存器AL,BL,CL中内容均为76H,
XOR AL,0FH
AND BL,0FH
OR CL,0FH
执行上述指令序列后,AL= 79H BL= 06H CL= 7FH
3.已知AX=0A33AH,DX=0F0F0H
AND AH,DL
XOR AL,DH
NEC AH
NOT AL
执行上述指令序列后,AH= 60H ,AL= 35H
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个字节存储单元内容是什么?
S9 DB 1,0,3,2,5,4,7,6,9,8
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= 88H CL= 80H
6.ADR DW 1234H,5678H
┇
LEA SI,ADR
LDS BX,ADR
设变量ADR的偏移地址是100H,上述两条指令执行后:SI= 100H ,BX=1234H 。
7.已知DS和ES指向同一个段,且当前数据段从0000H到00FFH单元内容分别为01,02,03,…,0FF,00H。问下列程序段执行后,0000~0009H的内容是些什么值。
MOV SI,0000H
MOV DI,0001H
MOV CX,0080H
CLD
REP MOVSW
(从0单元开始的内容是01,01,02,02,04,04,06,06,08,08)
8.STR1 DB ˋCOMPUTERNDPASCALˊ
SCA DB ˋNˊ
┇
LEA DI,STR1
MOV AL,SCA
MOV CX,10H
CLD
REPNE SCASB
NEXT:……
程序运行到NEXT时CX= 7 ZF= 1
9.已知AX=0FFFFH,DX=0001H
MOV CX,2
LOP:SHL AX,1
RCL DX,1
LOOP LOP
上述程序段执行后,DX= 0007H AX= 0FFFCH
10.已知DX=0A476H,CX=0302H,CF=1
OR DX,DX
RCR DX,CL
XCHG CH,CL
RCL DX,CL
上述程序段执行后,DX= 48ECH CF= 1
11.MOV AX,10
SHL AX,1
SHL AX,1
MOV BX,AX
MOV CL,2
SHL AX,CL
ADD AX,BX
上述程序段执行后,BX= BX=40或28H AX= AX=200或00C8H
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=40或28H BX= AX=200或00C8H
四.改错. 阅读下列数据传送程序段,改正使用不当的语句
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.试把空白处填上适当指令.
XOR AH,AL
AND AH , 08H
1. JE ZERO
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
DEC CX
LOOP1: MOV DI ,CX
MOV BX ,0
LOOP2: MOV AX ,A[BX]
CMP AX,A[BX+2]
JGE CONTINE
XCHG AX , A[BX+2]
MOV A[BX] , AX
CONTINE: ADD BX
LOOP LOOP2
2. MOV CX,DI
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
①
CMPAL,ARRAY[DI]
JLE A2
MOV AL,ARRAY [DI]
A2 ②
LOOP Al
5.下面程序段是判断两个存储单元是否同为正数,如是,则AX置全0,否则AX置非0。试在空白处各填上适当的一条条件转移指令(两空白处要利用不同的标志位选用不同的条件转移指令)。
VAR1 DW ××××
VAR2 DW ××××
┇
MOV AX,VAR1
MOV BX,VAR2
XOR AX,BX
①
JS NEXT
TEST BX,8000H
②
JNE NEXT
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
CMP AL ,[BX]
JAE NEXT
MOV AL, [BX]
NEXT: DEC CX
JNZ LOPI
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)
1. CODE SEGMENT
ASSUME ,DS:DATA ,ES:DATA
START: PUSH
XOR AX,AX
PUAH AX
MV AX,DATA
MOV DS ,AX
MOV ES,AX
MOV SI,OFFSET ARRAY+7EH
MOV DI,OFFSET ARRAY+88H
STD
MOV CX,60
REP MOVSW
MOV BX,OFFSET ARRAY+8H
MOV CX,5
NEXT: MOV WORD PTR[BX],0
ADD BX.2
LOOP NEXT
RET
CODE ENDS
END STARAT
2.从键盘上输入来宾的姓名Mr.×××或Mrs.×××,当按动任意键时,屏幕上显示出:
"Welcome Mr.×××".
2.DESG SEGMENT
MAXLEN DB 16
ACTLEN DB ?
NAMES DB 16 DUP(‘ ‘)
MESS1 DB ‘WELCOME’
MESS2 DB 16 DUP(‘ ‘)
CRLF DB 0DH,0AH,’$’
DSEG ENDS
CSEG SEGMENT
MAIN PROC FAR
ASSUME CS:CSEG,DS:DSEG,ES:DSEG
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DSEG
MOV DS,AX
MOV ES ,AX
CLD
BEGIN:MOV CX,16
MOV AL,20H
LEA DI,MESS2
REP STOSB
LEA DX,MAXLEN
MOV AH,0AH
INT 21H
MOV AH,7
INT 21H
CMP AL, 3
JE EXIT
DISPLAY: MOV CH,0
MOV CL,ACTLEN
LEA SI,NAMES
LEA DI,MESS2
REP MOVSB
MOV AH,09H
LEA DX,MESS1
INT 21H
EXIT:RET
MAIN ENDP
CSEG ENDS
END MAIN
3.定义宏指令并展开宏调用:
宏指令JOE把一串信息“MESSAGE NO.K”存入数据区XK中.
宏调用I=0
JOE TEXT , I
JOE TEXT ,I
JOE TEXT ,I
3.JOE MACRO A,J
MARY A,%J
J=J+1
ENDM
MARY MACRO X,K
X&K DB ‘MESSAGE NO.&K’
ENDM
宏展开:I=0
JOE TEXT , I
+ TEXT0 DB ‘MESSAGE NO.0’
JOE TEXT , I
+ TEXT1 DB ‘MESSAGE NO.1’
JOE TEXT , I
+ TEXT2 DB ‘MESSAGE NO.2’
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
4.STACK1 SEGMENT PATA STACK
DW 20H DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV CX,10
LEA SI,BUF1
LEA DI,BUF2
LEA BX,SUM
NXET: MOV AX,[SI]
MOV DX,[DI]
TEXT AX,8000H
JE TDX
NEG DX
TDX:TEST DX,8000H
NEG DX
ADDS:ADD AX,DX
MOV [BX],AX
ADD SI,2
ADD DI,2
ADD BX,2
LOOP NEXT
MOV AH,4CH
INT 21H
CODE ENDS
END START
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从键盘输入一系列字符,以字符’$’为结束符,然后对其中的非数字字符计数,并显示出计数结果
. DSEG SEGMENT
BUFF DB 50 DUP(‘ ‘)
COUNT DW 0
DSEG ENDS
…..
BEGIN:LEA BX,BUFF
MOV COUNT , 0
INPUT:MOV AH,01
INT 21H
MOV [BX] ,AL
INC BX
CMP AL ,’$’
JNZ INPUT
LEA BX ,BUFF
NEXT: MOV CL ,’$’
JZ DISP
CMP CL,[BX]
JZ DISP
CMP CL,30H
JB CONT
CMP CL,39H
JBE NXET
CONT:INC COUNT
JMP NEXT
DISP: ……..
8.在STRING到STRING+99单元中存放着一个字符串,并编写一个程序,测试该字符串中是否存在数字.如有数字则把DL的第5位置1,否则将该位置0
.DSEG SEGMENT
STRING DB 100 DUP(?)
DSEG ENDS
CSEG SEGMENT
MAIN PROC FAR
ASSUME CS:CSEG,DS:DSEG,ES:DSEG
START: PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DSEG
MOV DS,AX
MOV ES,AX
BEGIN: MOV CX,100
MOV SI ,0
REPEAT: MOV AL,STRING[SI]
CMP AL,30H
JB GOON
CMP AL,39H
JA GOON
OR DL,20H
JMP EXIT
GOON:INC SI
LOOP REPEAT
AND DL,0DFH
EXIT: RET
MAIN ENDP
CSEG ENDS
END START
9.统计串中的空格个数和逗号的个数.
.DATA SEGMENT
STRN DB ‘Aabcd BE,RES,…’ ‘.’$’
SPCLN DB ?
DELILN DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DSAX
MOV OFFSETG STRN
MOV DX,0
AGAIN:MOV AL,[SI]
CMP AL,’$’
JE DONE
CMP AL,20H
JNE NEXT
INC DH
JMP CONTI
NXET:CMP AL,2CH
JNE CONTI
INC DL
COUNTI: INC SI
JMP AGAIN
DONE: MOV SPCLN ,DH
MOV DELILN,DL
MOV AH,4CH
INT 21H
CODE ENDS
END START
10.编一程序段将BUF字节单元中的数折成高低四位,并且将分离出的高四位和低四位分别放于BUF+1和BUF+2字节单元的低四位上。
MOV AL.BUF
MOV BUF+2,AL
AND BUF+2,0FH
MOV CL,4
SHR AL,CL
M0V BUF+1,AL
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;
}
}
11.DATA SEGMENT
A DW ?
B DW ?
Table DW case0,case12,case12,case3
DW case4,case567,case567,case567,
MSG DB ‘Function 5_6_7$’
DATA ENDS
CODE SEGMENT
...
MOV AX,A
MOV BX,AX
AND BX,7
SHL BX,1
JMP Table[BX]
Case0: MOV B,32D
JMP NEXT
CASE12: ADD AX,43D
MOV B,AX
JMP NWXT
CASE3: SHL AX,1
MOV B,AX
JMP NEXT
CASE4: DEC B
JMP NEXT
CASE567:LEA DX,MSG
MOV AH,9
INT 21H
JMP NEXT
NEXT:...
CODE ENDS
展开阅读全文