汇编语言程序设计复习附答案完整版.docx
《汇编语言程序设计复习附答案完整版.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计复习附答案完整版.docx(27页珍藏版)》请在冰豆网上搜索。
汇编语言程序设计复习附答案完整版
一、
选择
1.下面指令执行后,改变AL寄存器内容的指令是(
D)。
A.TESTAL,02H
B.ORAL,AL
C.CMPAL,BL
D.ANDAL,BL
2.对寄存器AX的内容乘以
4的正确指令序列是(B
)。
A.SHRAX,1/SHRAX,1
B.SHLAX,1/SHL,AX,1
C.ROLAX,1/ROLAX,1
D.RCRAX,1/RCRAX,1
3.设DS=8225H,DI=3942H,指令NEGBYTEPTR[DI]操作数的物理地址是(A)
A.85B92H
B.86192H
C.BB690H
D.12169H
4.指令JMPFARPTRDONE属于
C
A.段内转移直接寻址
B.段内转移间接寻址
C.段间转移直接寻址
D.段间转移间接寻址
5.将
DX
的内容除以
2,正确的指令是
C
A.DIV2
B.DIVDX
,2
C.SARDX
,1
D.SHLDX
,1
6.编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有
(D
)。
A.CMPB.SUBC.ANDD.MOV
7.汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项
是(B)。
A.名字项
B.操作项
C.操作数项
D.注释项
8.假设执行ADD指令后AX=006EH,再执行AAA指令,AX中的值是(
B)
A.14H
B.0104H
C.74H
D.04H
9.用MOV指令将十进制数
89以非压缩BCD码格式存入AX,可使用的指令是(
D)
A.MOV
AX,89
B.MOV
AX,0809
C.MOV
AX,89H
D.MOV
AX,0809H
10.下列语句中能与“DA1DB32H,34H”语句等效的是(
A)
A.MOV
DA1,32H
B.MOV
DA1,32
C.MOVWORDPTRDA1,3234H
D.MOVWORDPTRDA1
,‘24’
MOV
DA1+1,34H
MOV
DA1+1,34
11.使用DOS功能调用时,子程序的编号应放在寄存器中(
A)
A.AH
B.AL
C.AX
D.任意指定
12.
下列语句中能实现留空
8个字节单元的语句是(
D
)
A.DA1DT?
B.DA2DW?
,?
C.DA3
DD
?
D.DA4
DQ?
13.指令JMPFARPTRDONE属于C
A.段内转移直接寻址
B.段内转移间接寻址
C.段间转移直接寻址
D.段间转移间接寻址
14.下列叙述不正确的是B
A.在不改变堆栈段寄存器的情况下,堆栈大小为64KB
B.紧跟设置堆栈段寄存器指令可以是设置堆栈指针以外的任何指令
C.中断服务程序的返回地址在堆栈中
D.堆栈中数据存放的特点是先进后出
15.一个有128
个字的数据区,它的起始地址为
12ABH:
00ABH,请给出这个数据区最末一个字单
元的物理地址是
C
A.12CSBH
B.12B6BH
C.12C59H
D.12BFEH
16.在下列指令的表示中,不正确的是
A.MOVAL,[BX+SI]
C
B.JMPSHORTDONI
C.DEC[BX]
D.MULCL
17.在进行二重循环程序设计时,下列描述正确的是A
A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内
B.外循环初值应置外循环之内;内循环初值应置内循环之内
D.内、外循环初值都应置内循环之外,外循环之内
18.条件转移指令A.ZF=0
JNE的测试条件为A
B.CF=0C.ZF=1
D.CF=1
19.将
DX
的内容除以
2,正确的指令是
C
A.DIV2
B.DIVDX
,2
C.SARDX
,1
D.SHLDX
,1
20.已知BX=2000H,SI=1234H,则指令
A.数据段中偏移量为3236H的字节
B.附加段中偏移量为3234H的字节
C.数据段中偏移量为3234H的字节
D.附加段中偏移量为3236H的字节
MOVAX
,[BX+SI+2]
的源操作在(
A)中。
21.执行如下程序:
A:
MOV
MOV
MOV
ADD
AX,0
BX,1
CX,100
AX,BX
INC
BX
LOOP
A
HLT
执行后(
BX)=
C
A.99
B.100
C.101
D.102
22.上题的程序执行后(
AX)=
B
A.5000
B.5050
C.5100
D.5150
23.在下列指令中,A.JMPNEXT
__D____指令的执行会影响条件码中的
B.JCNEXT
CF位。
C.INCBX
D.SHLAX
,1
24.下面指令序列执行后完成的运算,正确的算术表达式应是
MOVAL,BYTEPTRX
SHLAL,1
DECAL
MOVBYTEPTRY,AL
A.y=x*2+1B.x=y*2+1C.x=y*2-1
D
D.y=x*2-1
25.在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来。
B
A.占内存空间小,但速度慢
B.占内存空间大,但速度快
C.占内存空间相同,速度快
D.占内存空间相同,速度慢
26.在程序执行过程中,IP寄存器中始终保存的是B
A.上一条指令的首地址
B.下一条指令的首地址
C.正在执行指令的首地址
D.需计算有效地址后才能确定地址
二、简答
1.假定(DX)=10111001B,(CL)=3,(CF)=1,试确定下列各条指令单独执行后,DX中的值。
(3分)
(1)SHRDX,1
(2)RCRDL,1
(3)RCLDX,CL
答:
(1)005CH
(2)00DCH(3)05CCH
2.写出完成下述功能的程序段:
(8分)
(1)传送25H到AL寄存器
(2)将AL的内容乘以2
(3)传送15H到BL寄存器
(4)AL的内容乘以BL的内容并请写出最后(AX)=?
答:
(1)MOVAL,25H
(2)SHLAL,1
(3)MOVBL,15H
(4)MULBL
AX=612H
3.指出下列指令的错误原因。
(
14分)
(1)MOV
BX,AL
操作数类型不同
(2)MOV
256,CX
(3)POP
CS
(4)MUL
45H
(5)MOV
DS,2000H
(6)JMP
WORD
PIRLOO
(7)INAL,3F8H
5.设某数据段:
DATA
SEGMENT
ORG20H
NUM1=8
NUM2=NUM1+10H
DA1
DB'COMPUTER'
DB0AH,0DH
COUNT
EQU$-DA1
DA2
DW'CO'
,'MP'
,'UT'
,'ER'
DATA
ENDS
试回答:
(1)DA1的偏移地址是什么?
(2)COUNT
的值是什么?
(3)DA2+5字节单元的内容是什么?
答:
(1)0020H
(2)002AH-0020H=0AH=10
(3)”U”
6.某程序段如下:
MOVDX,0EFADH
MOVAX,1234H
MOVCL,4
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
上面的程序段执行完后,DX、AX的内容是什么?
DX=FAD0H
AX=2340H
三、填空
1.计算机语言分为
机器
语言、
汇编
语言和
高级
语言。
2.23D=10111
B,100101011B=
12B
H。
3.8086系统的操作数分为
立即操作数
、寄存器操作数
和存储器操作数
三种类型。
4.8086CPU内部共有
14个
16
位的寄存器。
5.汇编语言的编译程序一般用
Edit
,调试程序一般用
debug
。
四、程序分析
1.现有如下程序段:
DATA
SEGMENT
ORG0020H
DA1
DW12H
,23H
DA2
DB11H
,21H
DA3
EQU1234H
DA4
EQU$-DA2
DA5
DB31H
,32H
DATA
ENDS
请回答:
(1)该程序段已占有的存储字节数是多少?
(2)符号名DA4的值是多少?
符号名DA5的值是多少?
答:
(1)该程序段已占有的存储字节数是8个字节。
(2)符号名DA4的值为2,符号名DA5的值是0026H。
2.阅读如下程序段,回答所提出的问题,假定X1,X2,XN为无符号数。
ORG
100H
BLOCK
DW
X1,X2,⋯,XN
COUNT
EQU
($-BLOLOK)/2
RESULT
DW
COUNT,?
LEA
BX,BLOCK-2
MOV
CX,RESULT
XOR
AX,AX
GOON:
ADD
BX,2
CMP
AX,[BX]
JAE
NEXT
MOV
AX,[BX]
NEXT:
LOOP
GOON
MOV
RESULT+2,AX
程序段执行完,回答下述问题
RESULT+2字存储单元的内容=_MAX(X1,X2,⋯XN)_____
BX=__100H+2×(COUNT-1)____
程序循环次数=__COUNT____
五、程序填空题
1.在表TABLE如果总和值超过AX整。
处存放着N个无符号字节数,求表中前10个字节数的总和并保存在AX寄存器中。
寄存器的容量,则置AX寄存器内容不变。
请在程序中的空格处填入适当指令使其完
LEABX,TABLE
MOVCX,10
MOVSUM,AX
MEXT:
(1)ADDAL,[BX]
ADCAH,0
JNCDON
(2)MOVAX,SUMJCEND0
DON:
INCBX
(3)LOOPNEXT
ENDO:
HLT
2.BEG为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100
个字节数据。
请在程序中的空格处填入适当的指令使其完整。
MOVCX,32H
LEASI,BEG
MOVDI,SI
(1)ADDDI99
DON:
MOVAL,[SI]
(2)XCHGAL,[DI]
MOV[SI],AL
(3)INCSI
DECDILOOPDONHLT
3.下面程序段完成用单个字符输入的1号功能调用,从键盘输入10个字符,然后用2号功能调用以
相反的顺序显示输出这
10个字符。
请在空白处添上适当的指令(每一空白处只添一条指令)
。
MOV
CX,10
LOP1:
MOV
AH,1
INT
21H
PUSH
AX
LOOP
LOP1
MOV
CX,10
LOP2:
POP
DX
MOV
AH,2
INT
21H
LOOPLOP2
4.下面程序段完成将以
BUFF
为首地址的内存区域全部存储
0FFH
数据。
请在空白处添上适当的指令
(每一空白处只添一条指令)
BUFFDB20HDUP(?
)
。
┋
LEDDI,BUFF
MOVAX
MOVCX
CLD
REPSTOSW
,0FFFFH
,10H
六、编制程序题
1.试编写一个汇编语言子程序,要求将包含任意字符、以0结尾的字符串中的小写字母转换成大写字母。
assumecs:
code,ds:
data
datasgsegment
db'BeginnersAll-purposeSymbolicInstructionCode.',0
datasgends
codesgsegment
begin:
movax,data
movds,ax
movsi,0
callletterc
movah,4ch
int21h
letterc:
pushax
s:
moval,[si]
movah,0
movcx,ax
jcxzreturn
cmpal,61h
jbnext
cmpal,91h
janext
andal,11011111b
mov[si],al
next:
incsi
jmpshorts
return:
popax
ret
codesgends
endbegin
2.写一程序段,求双字长数DX∶BX的相反数。
NEGDX
NEGAX
SBBDX,0
3.设在内存单元SQTAB首址开始存放了0~15
单元中给定数(<=15=的平方值送B单元保存。
的平方数表。
要求用直接查表法编一程序,求出
A
答:
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
4.编写一个子程序,对两个128位数据相加。
答:
书上221页
5.编写程序求:
X+10H
(X<0)
)
Y=
32X
(0≤X≤10)
X-90H
(X>10)
STACK
SEGMENT
PARASTACK‘STACK’
DB
100
DUP(0)
STACK
ENDS
DATA
SEGMENT
X
DW
?
Y
DW
?
DATA
ENDS
CODE
SEGMENT
ASSUME
CS:
CODE,DS:
DATA
START:
MOV
AX,DATA
MOV
DS,AX
MOV
AX,X
CMP
AX,0
JGECASE23
ADD
AX,10H
;第一种情况的计算结果
JMP
RESULT
CASE23:
CMP
AX,10D
JG
CASE3
MOV
BX,30D
IMUL
BX
;第二种情况的计算结果
JMPRESULT
CASE3:
SUBAX,190H;第三种情况的计算结果
RESULT:
MOV
Y,AX
;结果保存到变量
Y中
MOV
AH,4CH
INT21H
CODEENDS
ENDSTART
爱人者,人恒爱之;敬人者,人恒敬之;宽以济猛,猛以济宽,政是以和。
将军额上能跑马,宰相肚里能撑船。
最高贵的复仇是宽容。
有时宽容引起的道德震动比惩罚更强烈。
君子贤而能容罢,知而能容愚,博而能容浅,粹而能容杂。
宽容就是忘却,人人都有痛苦,都有伤疤,动辄去揭,便添新创,旧痕新伤难愈合,忘记昨日的是非,忘记别人先前对自己的指责和谩骂,时间是良好的止痛剂,学会忘却,生活才有阳光,才有欢乐。
不要轻易放弃感情,谁都会心疼;不要冲动下做决定,会后悔一生。
也许只一句分手,就再也不见;也许只一次主动,就能挽回遗憾。
世界上没有不争吵的感情,只有不肯包容的心灵;生活中没有不会生气的人,只有不知原谅的心。
感情不是游戏,谁也伤不起;人心不是钢铁,谁也疼不起。
好缘分,凭的就是真心真意;真感情,要的就是不离不弃。
爱你的人,舍不得伤你;伤你的人,并不爱你。
你在别人心里重不重要,自己可以感觉到。
所谓华丽的转身,都有旁人看不懂的情深。
人在旅途,肯陪你一程的人很多,能陪你一生的人却很少。
谁在默默的等待,谁又从未走远,谁能为你一直都在?
这世上,别指望人人都对你好,对你好的人一辈子也不会遇到几个。
人心只有一颗,能放在心上的人毕竟不多;感情就那么一块,心里一直装着你其实是难得。
动了真情,情才会最难割;付出真心,心才会最难舍。
你在谁面前最蠢,就是最爱谁。
其实恋爱就这么简单,会让你智商下降,完全变了性格,越来越不果断。
所以啊,不管你有多聪明,多有手段,多富有攻击性,真的爱上人时,就一点也用不上。
这件事情告诉我们。
谁在你面前很聪明,很有手段,谁就真的不爱你呀。
遇到你之前,我以为爱是惊天动地,爱是轰轰烈烈抵死缠绵;我以为爱是荡气回肠,爱是热血沸腾幸福满满。
我以为爱是窒息疯狂,爱是炙热的火炭。
婚姻生活牵手走过酸甜苦辣温馨与艰难,我开始懂得爱是经得起平淡。
爱人者,人恒爱之;敬人者,人恒敬之;宽以济猛,猛以济宽,政是以和。
将军额上能跑马,宰相肚里能撑船。
最高贵的复仇是宽容。
有时宽容引起的道德震动比惩罚更强烈。
君子贤而能容罢,知而能容愚,博而能容浅,粹而能容杂。
宽容就是忘却,人人都有痛苦,都有伤疤,动辄去揭,便添新创,旧痕新伤难愈合,忘记昨日的是非,忘记别人先前对自己的指责和谩骂,时间是良好的止痛剂,学会忘却,生活才有阳光,才有欢乐。
不要轻易放弃感情,谁都会心疼;不要冲动下做决定,会后悔一生。
也许只一句分手,就再也不见;也许只一次主动,就能挽回遗憾。
世界上没有不争吵的感情,只有不肯包容的心灵;生活中没有不会生气的人,只有不知原谅的心。
感情不是游戏,谁也伤不起;人心不是钢铁,谁也疼不起。
好缘分,凭的就是真心真意;真感情,要的就是不离不弃。
爱你的人,舍不得伤你;伤你的人,并不爱你。
你在别人心里重不重要,自己可以感觉到。
所谓华丽的转身,都有旁人看不懂的情深。
人在旅途,肯陪你一程的人很多,能陪你一生的人却很少。
谁在默默的等待,谁又从未走远,谁能为你一直都在?
这世上,别指望人人都对你好,对你好的人一辈子也不会遇到几个。
人心只有一颗,能放在心上的人毕竟不多;感情就那么一块,心里一直装着你其实是难得。
动了真情,情才会最难割;付出真心,心才会最难舍。
你在谁面前最蠢,就是最爱谁。
其实恋爱就这么简单,会让你智商下降,完全变了性格,越来越不果断。
所以啊,不管你有多聪明,多有手段,多富有攻击性,真的爱上人时,就一点也用不上。
这件事情告诉我们。
谁在你面前很聪明,很有手段,谁就真的不爱你呀。
遇到你之前,我以为爱是惊天动地,爱是轰轰烈烈抵死缠绵;我以为爱是荡气回肠,爱是热血沸腾幸福满满。
我以为爱是窒息疯狂,爱是炙热的火炭。
婚姻生活牵手走过酸甜苦辣温馨与艰难,我开始懂得爱是经得起平淡。