南昌大学第一学期汇编ABC卷及答案.docx
- 文档编号:23833578
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:54
- 大小:37.28KB
南昌大学第一学期汇编ABC卷及答案.docx
《南昌大学第一学期汇编ABC卷及答案.docx》由会员分享,可在线阅读,更多相关《南昌大学第一学期汇编ABC卷及答案.docx(54页珍藏版)》请在冰豆网上搜索。
南昌大学第一学期汇编ABC卷及答案
试卷编号:
(A)卷
课程编号:
H61030005课程名称:
汇编语言程序设计考试形式:
闭卷
适用班级:
姓名:
学号:
班级:
学院:
信息工程专业:
计算机科学与技术考试日期:
题号
一
二
三
四
五
六
七
八
九
十
总分
累分人签名
题分
20
12
18
20
30
100
得分
考生注意事项:
1、本试卷共7页,请查看试卷中是否有缺页或破损。
如有立即举手报告以便更换。
2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。
一、单项选择题(每小题2分,共20分)
1.一个有128个字的数据区,它的起始地址为12ABH:
00ABH,请给出这个数据区第一个字单元的物理地址是()。
A.12B5BH; B.12B6BH;
C.12C59H; D.12BFEH。
2.在下列指令的中,不能实现把AX寄存器内容清零的指令是()。
A.SUBAX,AX;
B.XORAX,AX;
C.ORAX,0000H;
D.ANDAX,0000H。
3.条件转移指令JNE的测试条件为 ()。
A.ZF=0; B.CF=0;
C.ZF=1; D.CF=1。
4.8086CPU在基址加变址的寻址方式中,变址寄存器可以为()。
A.BX或CX; B.CX或SI;
C.DX或SI; D.SI或DI。
5.设(AX)=1000H,
NEGAX
NOTAX
南昌大学2006~2007学年第一学期期末试卷及答案
执行上述两条指令后,正确的结果是()。
A.(AX)=1001H;B.(AX)=0FFFH;
C.(AX)=1000H; D.(AX)=0111H。
6.串指令中的目的操作数地址一定是由______提供。
()
A.ES:
[DI]; B.SS:
[BP];
C.DS:
[SI]; D.CS:
[IP]。
7.将DX的内容除以2,正确的指令是()。
A.DIV 2;
B.DIV DX,2;
C.SAR DX,1;
D.SHL DX,1。
8.用户为了解决自己的问题,用汇编语言所编写的程序,称为()。
A.目标程序;B.汇编语言源程序;
C.可执行程序;D.汇编程序。
9.用一条指令仅实现将AX←BX+SI的方法是()。
A.XCHGAX,[BX][SI];
B.MOVAX,[BX+SI];
C.LEAAX,BX[SI];
D.LEAAX,[BX][SI]。
10.设SP初值为2000H,执行指令“PUSHAX”后,SP的值是()。
A.1FFFH;B.1998H;
C.1FFEH;D.2002H。
1.A2.C3.A4.D5.B6.A7.C8.B9.D10.C
二、指出下列指令的出错原因,并改正。
(每小题2分,共12分)
1.MOVBX,DL;操作数类型不匹配,改正为:
MOVBL,DL或MOVBX,DX
2.MOVCS,AX;代码段寄存器CS不能作目的操作数,改正为MOVDS,AX
3.ADDAX,DS;段寄存器DS的内容不能作为加法指令的操作数,改正为
MOVBX,DS
ADDAX,BX
4.TESTBX,[CX];不能使用CX实现寄存器间接寻址,改正为
MOVSI,CX
TESTBX,[SI]
5.SUB[BX],[BP+SI];两个操作数不能同为存储器操作数,且两个操作数的数据类型不确定,改正为:
MOVAX,[BX]
SUBAX,[BP+SI]
或:
MOVAL,[BX]
SUBAL,[BP+SI]
6.SHLDX;没有给出移位次数,改正为SHLDX,1或SHLDX,CL
三、程序填空题(注意:
每空只能填一条指令,并注释说明所填指令的作用!
每空3分,共18分)
1.在表TABLE处存放着N个无符号字节数,求表中前10个字节数的总和并保存在AX寄存器中。
如果总和值超过AX寄存器的容量,则置AX寄存器内容不变。
请在程序中的空格处填入适当指令使其完整。
LEA BX,TABLE
MOV CX,10
MOV SUM,AX;将AX的原值保存在SUM单元中
MOVAL,00H
MEXT:
(1)ADDAL,[BX];实现将表TABLE中的数据按字节累加到AL中
ADC AH,0
JNC DONE
(2)MOV AX,SUM;总和值超过AX寄存器的容量,恢复AX的原值
JC EXIT
DONE:
INC BX
(3)LOOPNEXT;将计数器CX减1,并判断是否继续下一次循环
EXIT:
HLT
2.BUFFER为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。
请在程序中的空格处填入适当的指令使其完整。
MOV CX,32H;循环50次
LEA SI,BUFFER
MOV DI,SI
(1)ADDDI,99;DI指向最后一个字节数据的存储单元的偏移地址
NEXT:
MOV AL,[SI]
(2)XCHGAL,[DI];交换SI和DI所指向单元的内容
MOV [SI],AL
(3)INCSI;使指针SI加1,指向下一个字节的数据
DEC DI
LOOP NEXT
HLT
四、程序分析题(每小题4分,共20分)
1.设(AX)=X,X是无符号数且0≤X<6000,分析下面程序段,回答问题;
SHLAX,1;实现X乘2
MOVBX,AX
SHLAX,1
SHLAX,1
ADDAX,BX
(1)该程序段的功能是什么?
实现无符号数X乘10,结果存放在AX寄存器中。
——2分
(2)该程序段执行完后,(AX)=10X,(BX)=2X。
——2分
2.现有一子程序段:
SUB1 PROC
TEST AL,80H
JE PLUS
TEST BL,80H
JNE EXITO
JMP XCHANGE
PLUS:
TEST BL,80H
JE EXITO
XCHANGE:
XCHG AL,BL
EXITO:
RET
SUB1 ENDP
试回答:
(1)子程序的功能是什么?
答:
子程序的功能是判别AL和BL中的数是否为异号数,当为异号时交换,否则不变。
(2)若调用子程序前(AL)=9AH,(BL)=77H,则返回主程序时,(AL)=__77H____,(BL)=_9AH__。
请回答:
(1)该程序段占有的存储单元字节数是多少?
画出所分配的存储区的示意图.
答:
8个字节,
0020H12HDA1
00H
23H
00
0024H11HDA2
21H
0025H31HDA3
32H
(2)符号名DA4的值是多少?
符号名DA5的值是多少?
答:
DA4=2,DA5=1234H
3.现有如下程序段:
DATA SEGMENT
ORG 0020H
DA1 DW 12H,23H
DA2 DB 11H,21H
DA3 DB 31H,32H
DA4 EQU $-DA3
DA5 EQU 1234H
DATA ENDS
4.阅读如下程序:
ADRR DB XXH,XXH,……,XXH;定义的字节数组元素
NUM EQU $-ADRR
RET_VLAUE DW?
…
MOV CX,NUM
MOV BX,-1
NEXT:
INC BX
CMP ADRR[BX],0
LOOPNZ NEXT
JZ DONE
MOV BX,OFFH
DONE:
MOV RET_VLAUE,BX
HLT
请问:
(1)该程序完成的功能是什么?
功能:
在以ADRR为起始地址的数组中,查找第一个是0的数据。
(2)程序执行后指出RET_VLAUE单元中的内容是什么?
若找到,则将第一个是0的数据在数组中的偏移量送入RET_VLAUE单元中;若无0数据,则将0FFH送入RET_VLAUE单元中。
5.阅读如下程序段,回答所提出的问题,假定X1,X2,…,XN为无符号数。
ORG 100H
BLOCK DW X1,X2,…,XN
COUNT EQU($-BLOCK)/2
RESULT DW COUNT,?
LEA BX,BLOCK-2
MOV CX,RESULT
XOR AX,AX
GO_ON:
ADD BX,2
CMP AX,[BX]
JAE NEXT
MOV AX,[BX]
NEXT:
LOOP GO_ON
MOV RESULT+2,AX
程序段执行完,回答下述问题:
RESULT+2字存储单元的内容=MAX(X1,X2,…,XN);
BX=100H + 2×(COUNT-1);
程序循环次数=COUNT。
五、编写程序(30分)
得分
评阅人
1.编写一程序,在letter为首地址的26个单元中依此存放字母‘A’、‘B’、……‘Z’。
(本小题8分)
dataSEGMENT
letterDB26DUP(?
)
countEQU$-letter
dataENDS
codeSEGMENT
ASSUMEcs:
code,da:
data
start:
movax,data
movds,ax
movcx,count
leasi,letter
moval,‘A’
next:
mov[si],al
incal
incsi
loopnext
movah,4ch
int21h
dataends
endstart
2.以Buffer为首地址的存储区,存放有长度为N有符号字数组,编写一程序求出其中负数的平均值(所有负数的和>-32768),并存放在M_average单元中。
(本小题10分)
dataSEGMENT
BufferDWXXXX,XXXX,……,XXXX;N个字
countEQU($-Buffer)/2
M_averagedw?
dataENDS
codeSEGMENT
ASSUMEcs:
code,da:
data
cwd
idivbx
movM_average,ax
;存负数的平均值
movah,4ch
int21h
dataends
endstart
start:
movax,data
movds,ax
movcx,count
leasi,Buffer
xorax,ax;存负数的和
movbx,ax;存负数的个数
next:
testwordptr[si],8000H
jego_on
addax,[si]
incbx
go_on:
addsi,2
loopnext
3.从键盘接收一串不多于99个字符的字符串,对其进行分类统计,显示其中数字字符个数、大写英文字母个数、小写英文字母个数、以及其他字符的个数。
要求使用子程序结构;数字字符的ASCII码为30H……39H、大写英文字母的ASCII码为41H……5AH、小写英文字母的ASCII码为61H……7AH。
(本小题12分)
dataSEGMENT
MSGDB0DH,0AH,‘输入一串字符:
$’
MSG1DB0DH,0AH,‘大写字母个数:
$’
MSG2DB0DH,0AH,‘小写字母个数:
$’
MSG3DB0DH,0AH,‘数字符号个数:
$’
MSG4DB0DH,0AH,‘其它符号个数:
$’
BUFFERDB99
DB0
DB99DUP(?
)
BIGDB0;大写字母个数
LITTLEDB0;小写字母个数
DIGDB0;数字符号个数
OTHERDB0;其它符号个数
dataENDS
codeSEGMENT
ASSUMEcs:
code,da:
data
start:
movax,data
movds,ax
leadx,MSG
movah,9;9号功能调用显示提示信息
int21h
leadx,BUFFER
movah,10;10号功能调用从键盘接收一串字符
int21h
movcl,BUFFER+1;实际从键盘接收字符个数
movch,0
leasi,BUFFER+2
again:
cmpbyteptr[si],30H
jbothers
cmpbyteptr[si],39H
jbedigitals
cmpbyteptr[si],41H
jbothers
cmpbyteptr[si],5AH
jbebigs
cmpbyteptr[si],61H
jbothers
cmpbyteptr[si],7AH
jbelittles
others:
incOTHER
jmpok
digitals:
incDIG
jmpok
littles:
incLITTLE
jmpok
bigs:
incBIG
ok:
incsi
loopagain
leadx,MSG1
movbh,BIG
calldispdec
leadx,MSG2
movbh,LITTLE
calldispdec
leadx,MSG3
movbh,DIG
calldispdec
leadx,MSG4
movbh,OTHER
calldispdec
movah,4ch
int21h
;DX待显示数据说明,BH待显示数据<100
dispdecPROC
movah,9
int21h
moval,bh
xorah,ah
aam
movdl,ah
movdh,al
adddl,30H
movah,2
int21H
movdl,dh
adddl,30H
movah,2
int21H
ret
dispdecENDP
codeENDS
endstart
试卷编号:
(B)卷
课程编号:
H61030005课程名称:
汇编语言程序设计考试形式:
闭卷
适用班级:
计算机级姓名:
学号:
班级:
学院:
信息工程专业:
考试日期:
题号
一
二
三
四
五
六
七
八
九
十
总分
累分人签名
题分
20
12
18
20
30
100
得分
一、单项选择题(每题2分,共20分)
1、执行下列指令后,正确的结果是()。
MOVAL,100
MOVBL,-2
[A]AL=100H;BL=02H[B]AL=64H;BL=0FEH
[C]AL=64H;BL=82H[D]AL=100H;BL=0FEH
2、下列对指令JMPBX说法正确的是()。
[A]不合法[B]合法,BX中应为目的转移地址的段地址
[C]合法,BX中应为目的转移地址的偏移地址
[D]合法,BX中应为子程序入口地址
3、条件转移指令JB的测试条件为()
[A]ZF=0[B]CF=0[C]ZF=1[D]CF=1
4、设SP的初值为3000H,AX=2000H,BX=4400H,执行PUSHAX,PUSHBX,POPAX指令后,SP,AX,BX分别等于()。
[A]3002H,4400H,2000H[B]2FFEH,4400H,4400H
[C]2FFCH,2000H,4400H[D]2FFEH,4400H,2000H
5、如果有如下数据定义:
A1DB20H
A2DW4756H
则执行指令:
MOVAX,WORDPTRA1后,(AX)=()。
[A]4720H[B]2047H[C]2056H[D]5620H
6、执行下面指令序列后,结果是()。
MOVAL,82H
CBW
[A]AX=0FF82H[B]AX=8082H[C]AX=0082H[D]AX=0F82H
南昌大学2006~2007学年第一学期期末试卷及答案
7、中断向量是()。
[A]CPU响应中断时IP和CS内容[B]中断断点的地址
[C]中断服务程序的入口地址[D]中断服务程序的返回地址
8、根据下面定义的数据段:
DESGSEGMENT
DAT1DB‘1234H’
DAT2DW5678H
ADDREQUDAT2-DAT1
DESGENDS
执行指令MOVAX,ADDR后,AX寄存器中的内容是()。
[A]5678H[B]7856H[C]1234H[D]0005H
9、若有BUFDW1234,则可将数据02H取到AL寄存器中的指令是()。
[A]MOVALBYTEPTRBUF+1[B]MOVALBYTEPTRBUF+2
[C]MOVALBYTEPTRBUF+3[D]MOVALBYTEBUF2
10、定义变量ARRAYDW5,6,$+3,3,4,$+3假如汇编时ARRAY分配的偏移地址为0074H则汇编后最后一个字单元的内容是()。
[A]0081H[B]008BH[C]007EH[D]007DH
1、B2、C3、D4、B5、D6、A7、C8、D9、C10、A
二、指出下列指令的出错原因,并改正。
(每小题2分,共12分)
6.SARAX,BL
移位次数若大于1,应该使用CL寄存器,改正:
SARAX,1或SARAX,CL
7.INCBX,1
该指令为单操作数指令,改正为:
INCBX
8.ADD[BX],[SI]
两个操作数不能同为存储器操作数,且两个操作数的数据类型不确定,
改正为:
MOVAX,[BX]
ADDAX,[SI]
或:
MOVAL,[BX]
ADDAL,[BP+SI];
9.MOVCS,DX
代码段寄存器CS不能作目的操作数,改正为MOVDS,AX
10.IMUL4
乘法指令源操作数不能是立即数,
改正为MOVCL,4
MULCL;
11.MOV[BX],8000H
答:
目的操作数的类型不确定,改正为:
MOVWORDPTR[BX],8000H
三、程序填空题(注意:
每空只能填一条指令,并注释说明所填指令的作用,每空3分,共18分)
1、下面程序查找字符串string中是否有字母“A”,有则AL=0,否则AL=-1,请将程序填写完整。
MOVCX,20
MOVSI,0
(1)__MOVAL,’A’_; 将’A’字符事先存入寄存器中,便于比较
NEXT:
CMPAL,STRING[SI]
(2)_JEYESA_; 逐个比较字符串中的字母是否为’A’,是则跳到YESA去执行
INCSI
LOOPNEXT
NOA:
MOVAL,-1
(3)_JMPDONE_;_使程序不再执行YESA分支
YESA:
MOVAL,0
DONE:
………
;
2、以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中,请将程序填写完整。
BUF DB5,6,7,58H,62,45H,127,……
COUNT EQU$-BUF
MAX DB?
┇
MOVBX,OFFSETBUF
(1)_MOVCX,COUNT-1;设置数据两两比较的次数
MOVAL,[BX]
LOP1:
INCBX
(2)_CMPAL,[BX]; AL与其它数据比较,看它是否仍然是最大数
JAENEXT
MOVAL,[BX]
NEXT:
DECCX
(3)__JNZLOP1;_判断是否已经到了循环次数,到了则AL即为最大数,否则继续循环
MOVMAX,AL
四、程序分析题(每题4分,共20分)
1、已知DX:
AX中存放32位数89ABCDEFH,试分析下面的程序段,回答问题:
MOVCL,04
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
(1)该程序段的功能是什么?
答:
将DX:
AX逻辑左移4个二进制位(乘以16)
(2)该程序段执行完后,(AX)=__0DEF0H_
(DX)=__9ABCH___。
2、下述程序段
ORG3040H
YY1DB30H,40H
YY2DW3040H
.....
MOVBX,OFFSETYY1
MOVAX,[BX]
MOVCL,BYTEPTRYY2+1
SUBCH,CH
ADDCX,TYPEYY2
运行后,AX=__4030H__;
CX=__0032H__;
3、下面程序段的功能是什么?
从键盘输入字符“4”,执行程序段之后有什么结果?
STRINGDB‘ABCDEFGHIJ’
……
MOVAH,01H;从键盘输入字符1~9
INT21H
ANDAL,0FH
DECAL
XORAH,AH
MOVBX,OFFSETSTRING
ADDBX,AX
MOVDL,[BX];显示输出
MOVAH,02H
INT21H
功能是:
从键盘读入1~9之间的一个数字,然后显示对应A~J中的一个字符。
例如:
从键盘输入字符“4”,程序段将显示字符“D”。
4、程序段如下:
BLKDB46,84,34,-5,20,122,73
.....
MOVCX,7
LEASI,BLK
NEXT:
MOVAL,[SI]
INCSI
TESTAL,81H
LOOPZNEXT
MOVBL,[SI]
该程序段运行后,AL=__46___;
BL=___84__;
5、设X、Y、Z、W均为16位带符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南昌大学 第一 学期 汇编 ABC 答案