汇编语言期中试题答案.docx
- 文档编号:3550515
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:17
- 大小:83.31KB
汇编语言期中试题答案.docx
《汇编语言期中试题答案.docx》由会员分享,可在线阅读,更多相关《汇编语言期中试题答案.docx(17页珍藏版)》请在冰豆网上搜索。
汇编语言期中试题答案
班级软件2班学号20112723姓名林苾湲
密封装订线密封装订线密封装订线
z西南交通大学2012-2013学年第
(二)学期中期试卷
课程代码3200514课程名称汇编语言程序设计考试时间120分钟
题号
一
二
三
四
五
六
总成绩
得分
阅卷教师签字:
(注意:
请将所有题的答案写在答题纸上,直接写在考卷上不给分)
一、填空题(答案填在横线上,每空1分,共10分)
1.堆栈段的段地址保存在ss寄存器,栈顶指针保存在sp寄存器。
2.某计算机的机器字长为16,其十进制数-10的二进制数补码是:
111111*********0。
3、80386有哪几种工作方式:
实模式、保护模式、虚拟8086模式。
4.有效地址可以由以下四种成分组成,分别是位移量、基址、变址、比例因子。
二、选择题(将答案的编号填在题后的括号内,每题2分,共20分)
1.两个带符号数分别保存在AX和BX寄存器中,且AX>BX,当执行指令CMPAX,BX之后,OF和SF的值为(
(1)).
(1)相同
(2)不同(3)无法确定(4)SF=0,OF=1
2.指令MOVAX,[BX][SI]的寻址方式是(
(1)).
(1)基址变址寻址
(2)间接寻址(3)相对的基址寻址(4)相对的基址变址寻址
3.如果SP=20H,在执行指令PUSHAX之后,SP的值为((4)).
(1)22H
(2)18H(3)1EH(4)1DH
4.如果CONSTEQU0ABCDH,在执行MOVAH,HIGHCONST指令后,AH的值为(
(2)).
(1)0AH
(2)0ABH(3)0CDH32(4)0BCH
5.某程序在数据段定义了某变量Arraydw200DUP(100),在程序中执行MOVCX,Array之后,CX寄存器的值为:
(
(1))
(1)100
(2)200(3)400(4)2
6.下面哪个段寄存器通常用于存放数据((4))
(1)ES
(2)CS(3)SS(4)DS
7.如果在程序中须使用386以后的32位寄存器,则需要在该指令之前进行说明,可采用伪指令(
(1))
(1).386
(2).8086(3).Use32(4)Use32
8.下面哪一个字符串不是汇编语言保留字(
(2)).
(1)ALPHA
(2)ALPH(3)CLD(4)LOOP
9.下面在数据段中定义的标识符中哪一个是合法的标识符((4))
(1)Add
(2)23AC(3).ab(4)$50H
10.下面哪条语句可用于表示子程序返回((3))
(1)ENDM
(2)ENDP(3)RET(4)END
三、判断下面的8086指令是否有误。
若有错,请指明错误原因,并修改使其完成相同操作(可用多条指令,每题2分,共10分)
1.MOVAX,BH
解:
错误,源/目的操作数长度不一致
改为:
MOVAH,BH
2.MOV[2000H],AX
解:
正确
3.MOV[AX],BX
解:
错误,对于内存单元,必须指明其长度
改为:
MOVWORDPTR[AX],BX
4.MOVBYTEPTR[BX],1234H
解:
错误,源/目的操作数长度不一致
改为:
MOVWORDPTR[BX],1234H
5.MOV[DI],[SI]
解:
错误,源/目的操作数不能同时为内存单元
改为:
MOVAX,WORDPTR[SI]
MOVWORDPTR[DI],BX
四、简答题(共35分)
1.已知某程序的数据段定义如下,请用图表示其在内存中的存放形式(以16进制数形式表示)。
DataSegment
Var1DB-10,2DUP(20H,30H)
Var2EQU$-Var1
Var3dw20H,1122H
Var4DD0FEH
Var5DB2DUP(20H,-1,2DUP(-2,03H))
Dataends
解:
11110110B
20H
30H
20H
30H
20H
00H
22H
11H
0FEH
00H
00H
00H
20H
11111111B
11111110B
03H
11111110B
03H
20H
11111111B
11111110B
03H
11111110B
03H
2.用寄存器BX实现寄存器相对寻址方式(位移量为0200H),将DX的内容和存储单元中的一个字相加,和放在存储单元中。
解:
ADD0200H[BX],DX
3.按照下面的要求设计某数据段,段名为DATA,变量名依次为ITEM1到ITEM5:
(a)十进制数为71的字节变量,用16进制形式表示。
(b)未赋初值的字变量。
(C)十进制数为7524的双字变量,用十六进制形式表示。
(d)十进制数为47的字节变量,用二进制形式表示。
(e)包含6,9,14,18,23,29,31和38的字变量.
解:
DATAsegment
ITEM1db47h
ITEM2DW?
ITEM3DD0474H
ITEM4DB00101111B
ITEM5DW6,9,14,18,23,29,31,38
DATAENDS
4.编写程序段,采用Loop指令将存放在BCDVAL中的01060803H转换成31363833H,并将转换结果保存在ASCII开始的存储单元。
解:
datasegment
BCDVALdd01060803h
Add31363833h
ASCIIdd?
dataends
stacksegmentparastack
db20hdup(0)
stackends
codesegment
assumecs:
code,ss:
stack,ds:
data
start:
movax,data
movds,ax
movcx,4
movsi,3
lop:
moval,bytePTRA[si]
movbyteptrBCDVAL[si],al
MOVbyteptrASCII[si],al
decsi
looplop
movah,4ch
int21h
codeends
endstart
5.下面的程序实现TABLE表中元素的排序,请检查程序中的错误,并修改。
1.TITLEBUBBLESORT
2.DATASEGMENT
3.TABLEDB20,-30,11,120,29,32,-48,-25,72
4.DB96,33,21,50,-19,-46,35,29,-21
5.COUNTEQU$-TABLE
6.DATAENDS
7.STACKSEGMENTPARASTACK
8.DW20HDUP(0)
9.STACKENDS
10.CODESEGMENT
11.ASSUMECS:
CODE,SS:
STACK,DS:
DATA
12.MAIN:
MOVAX,DATA
13.MOVDS,AX
14.MOVDX,COUNT
15.decDX
16.LOP1:
MOVBL,0
17.MOVCX,DX
18.MOVSI,2
19.LOP2:
MOVAL,TABLE[SI]
20.CMPAL,TABLE[SI+1]
21.JLENEXT
22.XCHGAL,TABLE[SI+1]
23.MOVTABLE[SI],AL
24.MOVBL,0FFH
25.NEXT:
INCSI
26.LOOPLOP2
27.INCDX
28.CMPBL,0
29.JNELOP1
30.MOVAH,4CH
31.INT21H
32.CODEENDS
33.ENDMAIN
解:
1.第15句错误,冒泡不用比到最后一位的前一位,这里需要在该句前加一句decDX
2.第18句错误,每次从第一个数开始比较,采用冒泡排序,把最大的数甩到当前最后位置,应该改为MOVSI,0
3.第27句错误,DX记下每次从开始处到要甩的最后位置的距离,长度不应该增加,应该减小。
改为:
DECDX
4.第28句错误,BL中存标记项,如果发生交换bl被置FF,需要再循环,如果bl为0表示排序已经完成,无需再继续。
这句无错
6.编写程序将下面数据段中BYTE_TBL开始的6个存储单元的内容相加并保存到CL寄存器中。
DATASEGMENT
BYTE_TBLDB12,15,16,10,8
DATAENDS
解:
Codesegment
Assumecs:
code,ss:
stack,ds:
data
Start:
movax,data
Movds,ax
LeaSI,BYTE_TBL
MOVCX,5;送入循环次数,如送入cl,ch必先清0
XORBL,BL
LOP:
ADDBL,[SI];累加
INCSI
LOOPLOP;cl减1后循环
MOVCL,BL
Codeends
Endstart
五、程序阅读(阅读程序并绘制流程,共10分)
datasegment
Msg1db"Pleaseinputthefirststring:
$"
Msg2db"Pleaseinputthesecondstring:
$"
Ensgdb0ah,0dh,'$'
sdb100,0,100dup(0)
s1db100,0,100dup(0)
dsp1db"s>=s1$"
dsp2db"s dataends stacksegmentparastack db20hdup(0) stackends codesegment assumecs: code,ss: stack,ds: data start: movax,data movds,ax moves,ax leadx,Msg1 movah,09h int21h leadx,s movah,0ah int21h leadx,Ensg movah,09h int21h leadx,msg2 movah,09h int21h leadx,s1 movah,0ah int21h leadx,ensg movah,09h int21h movch,s+1 cmpch,s1+1 janext movcl,ch jmpnext1 next: movcl,s1+1 next1: leasi,s+2 leadi,s1+2 xorch,ch cld repzcmpsb jznext2 janext3 jmpnext4 next2: movch,s+1 cmpch,s1+1 jbnext4 next3: leadx,dsp1 jmpnext5 next4: leadx,dsp2 next5: movah,09h int21h movah,4ch int21h codeends endstart 解: JAJB JA JB JZ JB JA JZ 六、用汇编语言重写下面的C语言程序。 (共15分)。 intmain() { intsum=0,n,i=0; printf(“Pleaseinputintegern: \n”); scanf(“%d”,&n); while(i sum+=i; i=i+1; } printf(“sum=%d\n”,sum); return1; } 解: datasegment Msg1db"Pleaseinputintegern: $" Msg2db"TheSUMare: $" EntMsgdb0ah,0dh,'$' numdw0 tamountdw0;累加结果 resultdb8dup(0) dataends stacksegmentparastack db200dup(0) stackends codesegment assumecs: code,ss: stack,ds: data start: movax,data movds,ax leadx,Msg1 movah,09h int21h callinone movnum,dx;num获取累加总数 callcompute;计算累加结果后存入tamount leadx,Msg2 movah,09h int21h calloutput exit1: movah,4ch int21h inoneproc;结果按小数点后面有几位,扩大相应倍数后存在dx pushax pushbx pushcx xordx,dx lop2: movah,01h int21h cmpal,0dh jzextp1 cmpal,'.' jznext andal,0fh movcl,al movax,dx movbx,10 mulbx movdx,ax movch,0 adddx,cx next: jmplop2 extp1: popcx popbx popax ret inoneendp computeproc;计算累加结果后存入tamount pushcx pushdx pushax pushbx xorcx,cx movcx,num xorax,ax movbx,1 lop1: addax,bx;开始累加 incbx looplop1 movtamount,ax popbx popax popdx popcx ret computeendp outputproc pushsi pushbx pushax pushcx xorcx,cx leasi,result addsi,8;si指尾 movax,tamount movbx,10;作为除数 lop3: xordx,dx divbx mov[si],dl;每次把余数放入相应位子 inccx cmpcx,0;比较是倒数第0位时,赋小数点(无小数) jnznext2 decsi pushax moval,'.' mov[si],al popax next2: cmpax,0;;比较ax(原数)是否除到头了,是就结束去显示 jznext3 decsi jmplop3 next3: leasi,result movcx,9 lop4: moval,[si] incsi deccx cmpal,0;如果是0就跳过,去掉前面的0 jzlop4 decsi inccx lop5: moval,[si] cmpal,'.';是小数点就直接显示 jznext4 oral,30h;非小数点化成ascll码后显示 next4: movdl,al movah,02h int21h incsi looplop5 popcx popax popbx popsi ret outputendp codeends endstart
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 期中 试题答案