汇编复习题Word文档下载推荐.docx
《汇编复习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《汇编复习题Word文档下载推荐.docx(14页珍藏版)》请在冰点文库上搜索。
LOOPAGAIN
也可用(A)指令完成同样的功能。
A.REPMOVSBB.REPLODSB
C.REPSTOSBD.REPESCASB
13.设SP初值为2000H,执行指令“PUSH
AX”后,SP的值是(C)
A.1998HB.1FFFH C.1FFEHD.2002H
14.设SP初值为2000H,执行指令“POPBX”后,SP的值是(D)
15.执行下列指令序列后,正确的结果是(A)
MOV
AL,81H
ADD
AL,AL
ADC
A.AL=05H B.AL=204H C.AL=04H D.AL=205H
16.下列指令被编译时会出错的是(D)
A.MULBXB.MULCLC.MULDAT1D.MUL56
17.与MOV
BX,OFFSETVAR指令完全等效的指令是(
B
)。
A、MOV
BX,VARB、LEA
BX,VAR
C、LDS
BX,VARD、MOVBX,SEGVAR
18.指令指针寄存器是(C)
A.BPB.SPC.IPD.PSW
19.下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是(B)
A.AX,BX,CX,DXB.BX,BP,SI,DI
C.SP,IP,BP,DXD.CS,DS,ES,SS
20.下列数据段中:
BUF1DB3DUP(0,2DUP(1,2),3)
COUNTEQU$-BUF1
符号COUNT等价的值是(B)
A.6B.18C.16D.8
21.设数据段中已有:
DA1DB12H,34H
DA2DW56H,78H
下面有语法错误的语句是(C)
A.MOVAL,DA1B.MOVWORDPTRDA1,AX
C.MOVDA1+1,AXD.MOVBYTEPTRDA2+1,AL
22.指令MOVBYTEPTR[BX+SI],00H中目的操作数的寻址方式是(D)
A.立即寻址B.寄存器寻址
C.寄存器间接寻址D.基址变址寻址
23.指令MOVES:
[BX],AL中目的操作数的寻址方式是(C)
A.直接寻址B.寄存器寻址
24.条件转移指令JB产生程序转移的条件是(A)
A.CF=1 B.CF=0
C.CF=1和ZF=1 D.CF=1和ZF=0
25、若执行SALSI,CL后能将SI的内容乘以8,则(CL)=(B)
A、2B、3C、4D、8
26.编辑汇编语言源程序时,对于注释语句必须用英文输入法中的(B)来标示。
A.:
B.;
C.,D..
27.将AL高4位清0,应执行的指令是
(
B)
A.ANDAL,0F0H
B.ANDAL,0FH
C.ORAL,0FH
D.TESTAL,0FH
28.若程序中定义了26B的数据段data,那么程序载入内存,该data段实际占用的内存空间是(C)。
A、16BB、26BC、32BD、64KB
29.在8086CPU系统中一个段的容量最小为(A)。
A、16BB、64KBC、512KBD、1KB
30.下列地址信息与0020H:
03EFH确定的内存地址不同的是(B)。
A、5EFHB、203H:
00EFH
C、005EH:
000FHD、0002H:
05CFH
二、填空题
1、完成下列数制转换:
11101010B=234D=EAH
2.在存储器分段管理中,物理地址需要_____2______个16位寄存器来存储。
3.对于指令FEESDW100DUP(0)
LENGTH=100,SIZE=200B。
4.设DS=2000H,BX=1256H,变量TABLE的偏移地址为20A1H,(232F7H)=3280H.下列指令分别执行后,IP的值各是多少?
(1)JMP
BX;
IP=______1256H_____________
(2)JMP
TABLE[BX];
IP________3280H_____________
5.设(DS)=2000H,有下列数据段,请用十六进制写出下列各字节单元的内容:
ORG2100H
TABLEDB10,3*5,10H
ADDRESSDDTABLE
ARRAYDW2DUP(3827H,?
)
(1)(2100H)=______OAH_______
(2)(2103H)=
_____00H_________
(3)(2106H)=______20H________
(4)(210CH)=
_______38H_______
6.已知X=-38D,Y=-64D,则[X-Y]补=____1A_______(结果用十六进制表示)
7、设(DS)=2000H,(ES)=3000H,(SS)=4000H,(BX)=1000H,(BP)=1000H,(SI)=0001H,(DI)=0002H,(21000H)=1234H,(21002H)=5678H,(31000H)=9ABCH,(31002H)=0DEF0H,(41000H)=3456H,(41002H)=789AH
计算下列各指令中源操作数的物理地址,并指出指令执行后AX寄存器的内容。
(1)MOVAX,ES:
[1000H];
物理地址PA=
31000H
(2)MOVAX,[BP];
物理地址PA=41000H
(3)MOVAX,[BX][SI]
物理地址PA=
21001H
(AX)=
5634H
8.计算机中8位二进制有符号数(含一位符号位)的补码表示范围是-128到127
9.若机器进行有符号数运算,执行指令:
MOVAL,0F0H
ADDAL,78H
则ADD指令执行后:
(CF)=1,(OF)=0
10.8086CPU允许有256个中断源,其中定时器中断的中断类型号为,在中断向量表中N类型对应中断向量的地址为。
三、判断下列指令的正误
1、MULAL,BL(N)
2、MOVCS,BX(N)
3、PUSHAL(N)
4、SHLAX,CX(N)
5、MOVAH,BYTEPTR[SI][DI](N)
6、OUT03FCH,AX(N)
7、SUBAX,[BX](Y)
8、ANDAL,0FH(Y)
9、MOV[SI],[DI](N)
10、MOV[BX],0FFH(N)
11、MUL0AH(N)
12、CALLFARPTRS(Y)
13、ADDDS,AX(N)
14、ADDAL,100H(N)
15、MOV[BX],BX(N)
16、INT1000H(N)
17、JMPSHORTPTRS(N)
18、0RAL,0FFFH(N)
19、CALLBX(Y)
20、IN03H,AX(N)
四、程序分析题
1.阅读下面程序段,回答问题。
A
DB
0F8H
BDB
3
DUP(?
┇
LEA
DI,B
CX,3
AL,A
LOP:
SAR
AL,1
MOV
[DI],AL
INC
DI
LOOP
LOP
┇
上述程序段运行后,从B单元开始依次存放的数据是多少?
7C,3E,1F
2、分析下面程序段的功能
……
DATASEGMENT
S9DB0,1,2,3,4,5,6,7,8,9
DATAENDS
┇
LEASI,S9
LEADI,S9+1
MOVCX,5
MOVAL,[SI]
XCHGAL,[DI]
MOV[SI],AL
ADDSI,2
ADDDI,2
LOOPLOP
上述程序段运行后,S9开始的10个字节存储单元内容是什么?
01000302050407060908
3、已知BUF开始的数据区中存放有10个大、小写字母,分析下面程序段完成的功能是什么?
……
MOV
CX,10
LEA
BX,BUF
K2:
MOV
AL,[BX]
CMP
AL,‘Z’
JBE
K1
SUB
AL,20H
MOV
[BX],AL
K1:
INC
BX
K2
……
使数据区中所有的数都变成大写
4.分析下面程序段完成的功能是什么?
……;
(DX:
AX)联合存放了一个32位数据
MOVCL,4
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
使DX:
AX中的数整体向左移4位,DX中的底四位从AX中移出的补上,相当于把存在这两个寄存器中的数扩大了4倍。
5、分析下面程序段完成的功能是什么?
……
MOVCX,10
LOP1:
MOVAH,1
INT21H
PUSHAX
LOOPLOP1
MOVCX,10
LOP2:
POPDX
MOVAH,2
LOOPLOP2
从键盘中输入十个字符并且回显,然后反向顺序输出字符
6、以下是二进制数(bx)到十六进制数转换并显示程序的源文件BINIHEX.ASM,阅读并完成该程序。
START:
MOVCH,4
ROTATE:
MOVCL,4
ROLBX,CL
MOVAL,BL
ANDAL,0FH
ADDAL,30H
CMPAL,3AH
JLPRINTIT
ADDAL,07H
PRINTIT:
MOVDL,AL
MOVAH,02H
DECCH
JNZROTATE
MOVAH,4CH
INT21H
7、以下是子程序BCDIASC,请阅读程序并完成填空。
;
功能:
将十进制的两位数的BCD码转换为ASCII码并在屏幕中间显示.
参数:
(AL)=十进制的两位数的BCD码,无出口参数
BCDIASC:
MOVAH,AL
MOVCL,4
SARAH,CL;
将AH的高4位移至低4位
AND0FH;
保留AL的低4位
ADDAH,30H;
转变为ASCII码
ADDAL,30H
MOVBX,0B800H
MOVES,BX
MOVBYTEPTRES:
[160*12+40*2],AH;
显示十位数
[160*12+40*2+2],AL;
显示个位数
RET;
子程序结束,返回主程序
8.下面程序通过子程序调用,将数据段中字数组ARRAY的COUNT个元素求和,并将结果送SUM单元(COUNT、SUM都是字单元),分析这段程序后补充完整程序中的空格部分。
MOVBX,OFFSETSUM
PUSHBX
MOVBX,OFFSETARRAY
MOVBX,OFFSETCOUNT
CALLSUMPRO;
调用子程序计算
…….
SUMPROPROCNEAR
PUSHAX
PUSHCX
PUSHSI
PUSHDI
PUSHBP
MOVBP,SP
MOVSI,[BP+
]
MOVDI,[BP+
MOVCX,[DI]
]
XORAX,AX
NEXT:
ADDAX,[SI]
LOOPNEXT
MOV[
],AX
POP
BP
POPDI
POPSI
POPCX
POPAX
RET
SUMPROENDP
请画出用堆栈传送参数地址时,堆栈最满时的状态。
五、编程题
1、从BUF1单元开始存放有10个字节的字符串,使用串传送指令编写指令序列将BUF1中的数据复制到BUF2开始的10个字节单元。
2、编写指令序列,完成用空格符(20H)清除某一字符区的工作,字符区首地址为ARRAY,其长度为COUNT,ARRAY和COUNT均为字节存储单元。
3.编写一个显示字符串的宏定义PRINT,字符串以”$”作为结束符号,字符串首地址STRADDR为变元。
4、编写子程序CLEAR实现清除屏幕的功能。
5、编写指令把12行0列到22行79列的屏面清除。
6.写出采用位触发方式控制发声的子程序SOUND.
BX:
发声频率,控制脉宽
CX:
发声时间,控制音长。
7、已知在内存数据段中GRA开始单元连续存放着10个学生的成绩,试编程实现以下功能:
计算平均成绩(只取整数部分)存放在内存单元AVG中。
DSGSEGMENT
GRADB90,58,70,80,68,98,66,83,96,72
AVGDB?
DSGENDS
8、已知在内存数据段中STR开始单元连续存放着10个大小写字母,试编程实现以下功能:
将10个字母中的小写字母全部转换为大写字母。
STRDB“BbcDeFgHIj”