《汇编语言》练习试题库参考答案解析.docx
《《汇编语言》练习试题库参考答案解析.docx》由会员分享,可在线阅读,更多相关《《汇编语言》练习试题库参考答案解析.docx(25页珍藏版)》请在冰豆网上搜索。
《汇编语言》练习试题库参考答案解析
华中师范大学网络教育学院
《汇编语言程序设计》练习测试题库参考答案
一、选择题答案:
1.B
2.C
3.B
4.C
5.C
6.C
7.A
8.A
9.D
10.C
11.B
12.A
13.C
14.B
15.A
16.D
17.A
18.A
19.D
20.A
21.A
22.D
23.C
24.B
25.C
26.D
27.B
28.D
29.A
30.A
31.D
32.A
33.D
34.D
35.D
36.D
37.B
38.C
39.A
40.D
41.A
42.C
43.B
44.B
45.C
46.D
47.D
48.D
49.A
50.A
51.D
52.B
53.C
54.A
55.B
56.C
57.A
58.C
59.D
60.C
61.A
62.D
63.C
64.C
65.D
66.A
67.B
68.C
69.B
70.D
71.D
72.A
73.D
74.C
75.D
76.C
77.C
78.D
79.D
80.B
二、判断题答案:
1.×
2.×
3.√
4.√
5.×
6.√
7.×
8.×
9.×
10.×
11.√
12.√
13.×
14.√
15.√
16.√
17.×
18.×
19.√
20.√
21.√
22.√
23.√
24.×
25.√
26.×
27.√
28√
29.√
30.√
31.√
32.√
33.√
34.√
35.√
36.√
37.√
38.√
39.×
40.√
41.×
42.√
三、填空题答案:
1.运行管理程序
2.汇编程序汇编
3.存储器译码分析
4.源地址目标地址存储器IO设备
5.63
6.64KD字节
7.不能64K
8.00
9.55
10.FF
11.55
12.源操作数
13.目的操作数
14.CNT1CL
15.字字节
16.带符号数无符号数
17.CFOF
18.SIDI
19.ALAXDF
20.ALAXSI
21.+-
22.段内转移 段间转移
23.IPCS
24.段地址 偏移地址
25.-128+127
26.条件码
27.末尾
28.不影响
29.内部外部
30.IPCSPSW
31.第一个
32.不能
33.PTR
34.标号
35.":
"
36.PTR
37.地址表达式
38.SEG
39.OFFSET
40.TYPE
41.LENGTH
42.HIGH
43.标号、变量
44.指令、伪操作、宏指令的助记符
45.表达式
46.注释项
47.操作数项
48.顺序线性法
49.算法存储工作
50.1-几没有
51.00H4CH
52.数据工作
53.计数控制法
54.任一
55.256
56.已知未知
57.单重循环
58.满足
59.条件
60.DO-UNTILDO-WHILE
61.IF
62.EXE
63.堆栈,SS
64.;(或分号)
65.AH
66.用寄存器传递、用存储单元传递、用堆栈传递(顺序可调换)
67.中断,中断源。
68.SI,DI
69.接口
70.16H、10H和17H
71.ASCII码,属性
72.000DH85B92H
73.85B92H
74.SHLAX,1 SHL,AX,1
75.OF,AF,PF
76.DH=0F0H CF=1
77.+65528__,____-32760___
78.___状态___,__控制___
79._CF__,_OF___
80.下一条指令的首地址
81.___6__,___3__
82.__ES:
[DI]___
83.SI或DI
84. 320EH
85. 100H
四、编程题答案:
1.试编写一个程序段,要求能从键盘接收一个个位数N,然后响铃N次(响铃的ASCII码为07)。
…
MOVAH,01
INT21H
MOVCH,AL
DOWN:
MOVAH,02H
MOVDL,07H
INT21H
DECCH
JNZDOWN
…
2.编写一个完整的汇编语言程序,在屏幕上显示“华中师范大学”的英文名称。
DATASEGMENT
STRDB”HUAZHONGSHIFANDAXUE$”
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
BEGIN:
MOVAX,DATA
MOVDS,AX
LEADX,STR
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDBEGIN
3.编程求从1开始连续50个奇数之和,并将结果存放在SUM字存储单元中。
DATASEGMENT
SUMDW?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
BEGIN:
MOVAX,DATA
MOVDS,AX
MOVCX,50
MOVAX,1
MOVBX,1
LOP:
ADDAX,BX
ADDBX,2
DECCX
JNZLOP
MOVSUM,AX
MOVAH,4CH
INT21H
CODEENDS
ENDBEGIN
4.已知数组A包含6个互不相等的整数,数组B包含9个互不相等的整数,试编一程序将在A、B两数组中都出现的整数存放于数组C中。
DATASEGMENT
ADB2,……
BDB5,…..
CDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
BEGIN:
MOVAX,DATA
MOVDS,AX
LEASI,A
LEADI,B
LEABX,C
MOVCH,6
LOP1:
MOVCL,9
LOP:
MOVAH,[SI]
CMP[DI],AH
JNZL
MOV[BX],AH
INCBX
L:
INCDI
DECCL
JNZLOP
INCSI
LEADI.B
DECCH
JNZLOP1
MOVAH.4CH
INT21H
CODEENDS
ENDBEGIN
5.试编写从内存BUF单元开始的256个字单元的清零程序。
DATASEGMENT
BUFDW21,22,……..
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
BEGIN:
MOVAX,DATA
MOVDS,AX
LEABX,BUF
MOVCX,0FFH
LOP:
MOV[BX],0
ADDBX,2
DECCX
JNZLOP
MOVAH,4CH
INT21H
CODEENDS
ENDBEGIN
6.设在变量ADR为起始地址的字节存储单元中存放一组有符号数据,编写程序分别统计:
(1)正数的个数;
(2)负数的个数;(3)0的个数。
DATASEGMENT
ADRBD9,-1,3,-5,4,….
SUMDB?
?
?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
BEGIN:
MOVAX,DATA
MOVDS.AX
LEABX,ADR
LOP:
MOVAH,[BX]
CMPAH,0
JZL1
JLL2
INCCH
JMPDOWN
L1:
INCCL
JMPDOWN
L2:
INCDL
DOWN:
DECDL
JNZLOP
MOVSUM,CL
MOVSUM+1,CH
MOVSUM+2,DL
MOVAH,4CH
INT21H
CODEENDS
ENDBEGIN
7.在DATA1首址区有100个字节数据,试编写一个完整程序,将其中的奇、偶数分开。
统计奇、偶数的个数,并将奇数送DATA2首址区,偶数送DATA3首址区。
DATASEGMENT
DATA1DB12,3,4,……..
DATA2DB100DUP(?
)
DATA3DB100DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
BEGIN:
MOVAX,DATA
MOVDS,AX
LEABX,DATA1
LEASI,DATA2
LEADI,DATA3
MOVCH,0
MOVCL,0
MOVDX,100
LOP:
MOVAH,[BX]
TESTAH,01H
JNZL
MOV[DI],AH
INCDI
INCCL
JMPL1
L:
MOV[SI],AH
INCSI
INCCH
L1:
INCBX
DECDX
JNZLOP
MOVAH,4CH
INT21H
CODEENDS
ENDBEGIN
8.编写一程序段,将AL中的第7位和第0位,第6位和第1位,第5位和第2位,第4位和第3位互换。
…
MOVCX,8
MOVAH,0
K1:
SHRAL,1
RCLAH,1
DECCX
JNZK1
MOVAL,AH
…
9.编制一个程序求数组变量ARRAY中有多少个二进制位为1的程序。
DATASEGMENT
ARRAYDW-l,7FFFH,-80000H.+9,-56ABH
DW0B12H,-2,O,6578H,30EFH
COUNTEQU($-ARRAY)/2
NUMBITDB2DUP(?
)
TEMDW?
DATAENDS
STACKSEGMENT
STAPNDB1000DUP(?
)
SYACKENDS
CODESEGMENT
ASSUMECS,CODE,DS:
DATA,SS:
STACK
BEGINPROCFAR
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
MOVTEM,SP
LEABX,ARRAY
MOVCX,COUNT
GOON:
MOVAX,LBX]
AGAIN:
SHLAX,1
JNCNEXT
ADDWORDPTRNUMBIT+1
ADCNUMBIT+2,0
NEXT:
ANDAX,AX
JNZAGAlN
ADDBX,2
LOOPGOON
MOVSP,TEM
RET
BEGINENDP
CODEENDS
10.写一子程序CRLF,其功能是输出回车换行。
CRLFPROC
PUSHAX
PUSHDX
MOVAH,2
MOVDL.0DH
INT21H
MOVDL,0AH
INT21H
POPDX
POPAX
RET
CRLFENDP
11.编一程序将字节变量DATAl中的压缩BCD数转换成二进制数,并将其存储到原变量中去的程序。
DATASEGMENT
DATAlDB99H
TEMDW?
DATAENDS
STACKSEGMENT
STABDBl00DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS;CODE,DS:
DATA,SS:
STACK
STARTPROCFAR
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVTEM,SP
MOVAL,DATAl
MOVCL.4
SHRAL,CL
MOVDL,lO
MULBL
MOVDL,Al
MOVAL,DATAl
ANDAL,0FH
ADDAL,BL
MOVDATA1。
AL
MOVSP,TEM
RET
STARTENDP
CODEENDS
ENDSTART
12.试编写一程序段,在CHAR为首址的26个字节单元中依次存放字母'A'~'Z'。
chardb26dup(?
)
...
start:
leabx,char
moval,'A'
movcx,26
lop1:
mov[bx],al
incal
incbx
looplop1
...
13.设在DAT1,DAT2字单元中存放一双字长有符号数,编一程序段,完成求出该双字长数的绝对值后送ABS1和ABS2字存储单元。
…
start:
movax,dat1
movdx,dat2
ordx,dx
jnsnext
notax
notdx
addax,1
adcdx,0
next:
movabs1,ax
movabs2,dx
…
14.有两个无符号数分别存放于DATA1和DATA2单元,要求将两数中大的一个挑选出来,并送入DATA3单元。
…
MOVAL,DATA1
CMPAL,DATA2
JNCS1
MOVAL,DATA2
S1:
MOVDATA3,AL
HLT
…
15.试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
…
BEGIN:
MOVAH,1
INT21H
CMPAL,’a’
JBSTOP
CMPAL,’z’
JASTOP
SUBAL,20H
MOVDL,AL
MOVAH,2
INT21H
JMPBEGIN
STOP:
RET
…
16.编制程序段实现:
将AX寄存器中的16位二进制数分成四组,每组4位,然后把这4组数分别放在AL、BL、CL、和DL中。
BC
MOVBH,AL
MOVCH,AH
MOVAL,AH
ANDAL,0F0H
MOVBL,AH
ANDBL,0FH
MOVCL,BH
ANDCL,0F0H
MOVDL,BH
ANDDL,0FH
17.编制完整程序实现下列算式:
W=X+Y+36-Z。
设X、Y、Z、W均为双字长数据,各自的低十六位数和高十六位数分别存放在X、X+2、Y、Y+2、Z、Z+2的存储单元中,结果的低十六位字和高十六位字分别存放在W和W+2两个单元中。
BC
DATASEGMENT
XDD…
YDD…
ZDD…
WDD…
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,X
ADDAX,Y
MOVBX,X+2
ADCBX,Y+2
ADDAX,36
ADCBX,0
SUBAX,Z
SBBBX,Z+2
MOVW,AX
MOVW+2,BX
CODEENDS
ENDSTART
18.下述程序段完成计算2~20之间的偶数的和,并存于AX中。
试把空白处填上适当的指令。
CXTK
XORAX,AX
MOVBX,0
MOVCX,10或MOVCX,0AH
CONT:
ADDAX,BX
ADDBX,2
LOOPCONT
19.试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为奇数,则将进位位置1,否则进位位清0。
BC
DATA SEGMENT
DA1 DW XXXX
DATAENDS
答:
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI,DA1
MOV CX,16
XORBL,BL
AGAIN:
MOV AL,[SI]
HLAL,1
JCNEXT
INCBL
NEXT:
INCSI
LOOPAGAIN
TESTBL,01H
JNE L1
CLC
JMPDONE
L1:
STC
DONE:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
20.设在内存单元SQTAB首址开始存放了0~15的平方数表。
要求用直接查表法编一程序,求出A单元中给定数(<=15=的平方值送B单元保存。
BC
答:
DATASEGMENT
SQTABDB0,1,4,9,16,25,36,49,64,81
DB100,121,144,169,196,225
ADB12
BDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARTPROCFAR
PUSHDX
XORAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVBX,OFFSETSQTAB
MOVAL,A
XLAT
MOVB,AL
RET
STARTENDP
CODEENDS
ENDSTART