上学期汇编语言程序设计复习题Word文档下载推荐.docx
《上学期汇编语言程序设计复习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《上学期汇编语言程序设计复习题Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
C.2,END和END程序的启动地址标号D.以上都不正确
13、指令“CALLFARPTRSUM”执行时将会向堆栈中顺次压入()。
A.IP、CSB.CS、IP
C.标志寄存器值、IPD.标志寄存器值,CS、IP
15、在汇编语言程序的开发过程中使用宏功能的顺序是()。
A、宏定义,宏调用B、宏定义,宏展开
C、宏定义,宏调用,宏展开D、宏定义,宏展开,宏调开
16、要在程序中定义缓冲区BUF,保留10个字节存储空间的语句是()
A.BUFDW10B.BUFDB10
C.BUFDB10DUP(?
)D.BUFDW10DUP(?
)
17、IBMPC微机中,有符号数是用()表示的
A、原码 B、补码 C、反码 D、BCD码
18、设SP初值为3050H,执行指令PUSHBX后,SP的值是( )
A.304FHB.304EH
C.3048HD.3049H
19、JMPBX指令的寻址方式是( )
A.寄存器寻址B.寄存器间接寻址
C.段内直接转移寻址D.段内间接转移寻址
20、DF=1,执行MOVSB指令后( )
A.SI减1,DI减1B.SI加1,DI加1,CX减1
C.SI减1,DI减1,CX减1D.SI加1,DI加1,CX加1
21.指令MOVBX,MASK[BP],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,那么源操作数的物理地址为:
A.17500H B.16500H C.14500H
D.13500H
22.十六进制数88H,可表示下面几种形式,请找出错误的表示()。
A.无符号十进制数136
B.带符号十进制数-120
C.压缩型BCD码十进制数88
D.8位二进制数-8的补码表示
23.指令指针寄存器是()。
A.IPB.SPC.BPD.PSW
24.设数据段中已有:
DA1DB12H,34H
DA2DW56H,78H
下面有语法错误的语句是()。
A.ADR1DWDA1B.MOVDA1+1,AX
C.MOVBYTEPTRDA2+1,ALD.MOVWORDPTRDA1+1,AL
25.堆栈的工作方式是()
A.先进先出B.随机读写 C.只能读出,不能写入D.后进先出
26.指令MOVAX,[3070H]中源操作数的寻址方式为()
A.寄存器寻址B.直接寻址 C.立即寻址D.间接寻址
27.要求CX=-1时转至MINUS处,下面的指令序列不能实现这一功能的是()。
A、INCCX
JZMINUS
B、SUBCX,OFFFFH
C、ANDCX,OFFFFH
D、XORCX,OFFFFH
JZMINUS
28.以下跳转指令中不属于段内跳转的是():
A.JMPNEARPTRL1B.JMPSHORTL2
C.JMPDWORDPTR[BX]D.JNZL3
30.对寄存器AX的内容乘以4的正确指令是()。
(CL=2)
A.SHRAX,CLB.SHLAX,CL
C.ROLAX,CLD.RCRAX,CL
二、填空
1.8086/8088CPU可访问2个独立的地址空间,一个为存贮器地址空间,其大小为____个字节;
另一个为______,其大小为_______字节。
2.计算机中的指令由______字段和______字段两部分组成。
3.n位补码的表数范围为:
_________
4.在8086段的最大长度是_________。
5.代表无符号数运算溢出的标志位是_______。
6.LOOP指令的结束条件是_________。
7.在实模式下80x86CPU能够访问的存储器空间为()byte,指令中访问的操作数的逻辑地址由偏移地址和()地址来表示。
8.指令MOVDX,[BX+SI+100H]的源操作数为()寻址方式。
9.假设(DS)=2000H,(ES)=3000H,(SS)=4000H,(BX)=1000H,(BP)=1000H,(DI)=0002H,(21000H)=1234H,(21002H)=5678H,(31000H)=9ABCH,(31002H)=0DEF0H,(41000H)=3456H,(41002H)=789AH。
则MOVAX,ES:
[1000H]执行时操作数的物理地址为;
MOVAX,[BX]执行后(AX)=;
MOVAX,[BP+DI]执行时操作数的物理地址为,执行后(AX)=。
30h
30020h
30021h
11h
30022h
32h
30023h
89h
40h
10.
8086存储器中存放信息如图所示,则30022H单元的字节内容为,30020H单元的字内容为。
11.已知(CS)=1500H,(IP)=0110H,则8086执行指令的物理地址为,如果该指令是长度为2字节的加法指令,则在无中断产生的情况下,执行完该指令后IP=。
12.现有(DS)=3000H,(BX)=0100H,(SI)=0002H,(30100H)=12H,(30101H)=a7H,(30102H)=35H,30103H=98H,填写每条指令执行后AX的值
(1)MOVAX,1200HAX=
(2)MOVAX,[BX]AX=
(3)MOVAX,[BX+SI]AX=
(4)MOVAX,[SI+100H]AX=
13.已知数据段有如下定义:
ORG0200H(设置$=0200H)
TABLEDW0314H
填写指令执行后AX的值。
MOVAX,OFFSETTABLEAX=
MOVAX,TABLEAX=
14.设(CS)=1000H,BX=1100H,则执行指令JMPBX后,IP=,指令的物理地址为
15、调用程序、子程序传送参数的方法通常有_______、_______和_______三种方法。
四、简答
1、简述指令与伪指令的区别。
2、宏指令和子程序的区别。
3、简述指令INTN的执行过程。
4、在80x86实模式下,在一个程序开始运行的时候(CS)=0BA3H,(IP)=0978H,请问该程序第一个字的物理地址是多少?
5、以下指令中哪些属于段间转移指令?
(1)JNCNEXT
(2)JMPBX
(3)JMPFARPTRLOP1(4)JMPWORDPTRES:
[2000H]
(5)JMPDWORDPTR[BX+10H](6)JMPNEARPTRTOWHERE
6、子程序声明中主要有哪些属性可以指定?
7、在80x86实模式下,哪些寄存器可以用来指示存储器地址?
8、如果一个文件ex1.asm中定义了一个字节变量BYTE1,而文件file2.asm中将使用该变量,请问如何实现?
9.8086中基本结构寄存器的通用寄存器有哪些,段寄存器又有哪些?
10.子程序中通常要保护现场和恢复现场,如在子程序中用如下指令序列保护现场:
PUSHAX
PUSHSI
PUSHBP
请写出对应的恢复现场的指令序列。
五、按要求回答问题。
1.以下的程序实现将内存单元20000H开始的100个字节初始化为‘a’,请将程序补充完整。
MOVDS,2000H
MOVSI,_____
MOV_____,100
MOV_____,’a’
________________
2.设num1,num2都为字变量,请指出下面语句序列的功能
MOVAX,num1
XORDX,DX
ORAX,AX
JNSSKIP
MOVDX,OFFFFH
SKIP:
IDIVnum2
3.下面的程序通过子程序调用,将数组ARRAY的COUNT个元素求和,并将结果送SUM单元,分析这段程序后,补充完整程序中的空格部分,并请画出用堆栈传送参数地址时,堆栈最满时的状态:
SUMDW?
ARRAYDW200DUP(?
)
COUNTDW200
………
MOVDX,OFFSETSUM
PUSHBX
MOVBX,OFFSETARRAY
MOVBX,OFFSETCOUNT
CALLSUMPRO
………
SUMPROPROCNEAR
PUSHAX
PUSHSI
PUSHDI
PUSHBP
MOVBP,SP
MOVSI,[BP+___];
得到ARRAY的地址
MOVDI,[BP+___];
得到COUNT的地址
MOVCX,[DI]
得到SUM的地址
XORAX,AX
NEXT:
ADDAX,[SI]
INCSI
INCSI
LOOPNEXT
MOV[____],AX;
送求和结果
POP_____
POPDI
POPSI
POPAX
RET
SUMPROENDP
4.MOVCX,NUM
XORAL,AL
L1:
JCXZL2
SHLCX,1
JNCL1
INCAL
JMPL1
L2:
MOVRESULT,AL
问题:
(1)该程序段的功能是。
(2)若NUM中数据是0E5A6H,则运行后RESULT中数据为______。
5.STRINGDB‘ABCDEFGHIJ’
:
MOVAH,01;
从键盘输入字符1~9
INT21H
SUBAL,30H
DECAL
XORAH,AH
MOVBX,OFFSETSTRING
ADDBX,AX
MOVBL,[BX]
MOVAH,02H;
显示输出
试回答:
(1)上述程序段的功能是什么?
(2)如从键盘输入字符’6’,屏幕有什么结果?
6.阅读下列程序回答问题:
DATASEGMENT
BUFDB32H,75H,0C9H,85H;
共4个数据
RESULTDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,BUF
MOVCX,4
MOVBX,0
LP1:
MOVDH,8
MOVAL,[SI]
LP2:
RORAL,1
JCNEXT
INCBX
NEXT:
DECDH
JNELP2
INCSI
LOOPLP1
MOVRESULT,BX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
问该程序主要完成什么功能?
程序执行完变量RESULT的值为多少?
答:
7.阅读下列程序回答问题:
;
FILENAME:
P101.Asm
.486
DATASEGMENTUSE16
BUFDB‘QWERTYUIOP123’
COUNTEQU$-BUF
RESDB‘RESULT=’,20H,0DH,0AH,‘$’;
20H表示空格
DATAENDS
CODE1SEGMENTUSE16
ASSUME:
CS:
CODE1,DS:
BEG:
MOVAX,DATA
MOVDS,AX
LEABX,BUF
MOVAL,[BX]
MOVCX,COUNT
DECCX
LAST:
CMP[BX],AL
JBNEXT
LOOPLAST
MOVSI,OFFSETRES+7
MOV[SI],AL
MOVAH,9
MOVDX,OFFESTRES
MOVAH,4CH
CODE1ENDS
问以上程序完成什么功能?
执行完该程序,屏幕上将会有什么输出结果?
8.、设(SS)=4000H,(SP)=1200H,执行下列指令序列,画图说明SP和堆栈内容变化过程的示意图,并在有分号的地方分别标出(AX),(SP),((SP))的内容。
MOVAX,23AAH
PUSHAX ;
(SP)=;
((SP))=
MOVAX,6735H
PUSHAX
MOVBP,SP
ADDWORDPTR[BP],3000H
POPAX;
AX=
画堆栈变化示意图:
9、阅读下列程序段回答问题:
BEGIN:
INAL,5FH
TESTAL,80H
JZBRCH1
XORAX,AX
JMPSTOP
BACH1:
MOVAL,0FFH
STOP:
MOVAH,4CH
INT21H
问在什么情况下程序执行的结果是AL=0?
六、综合题。
1.试编一程序,比较两个字符串STRING1和STRING2所含字符是否完全相同。
若相同,则显示“MATCH”,若不相同则显示“NOMATCH”
2.编程实现:
将从键盘上接收到的一串字符(字符个数≤60)以其相反的次序显示在屏幕上。
3.将从键盘上输入的两位十进制数转换为十六进制并送CRT显示。
。