汇编语言课后习题及答案 按章节 超全面Word文档下载推荐.docx
《汇编语言课后习题及答案 按章节 超全面Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《汇编语言课后习题及答案 按章节 超全面Word文档下载推荐.docx(64页珍藏版)》请在冰豆网上搜索。
7.十进制数的(731)=(0)BCD。
8.(0)BCD=(731)十进制数。
9.将一个0~9之间的数据转换为ASCII需加(30H)。
10.大写英文字母转换为小写英文字母需加(20H)。
11.英文字母“A”~“F”转换为十六进制数值A~F需要减(37H)。
四、简答题
1.什么是汇编语言?
为什么要学习汇编语言?
答:
汇编语言是机器语言的符号表示形式。
它不仅是计算机原理、操作系统等课程的必要先修课,而且对于训练学生掌握计算机工作原理、程序设计技术、熟练上机操作和程序调试技术都有重要作用。
3.把下列二进制数转换成十进制数。
①=②=
③=④=
5.把下列十六进制数转换成十进制数。
①=166.②9AC.BD=2476.
③4A=2890.④1AC.0A=428.
6.把下列英文单词转换成ASCII编码的字符串。
①Water=72②Great=74
③Good=476F6F64④After=72
7.回车键、空格键的ASCII代码及其功能是什么?
0DH、20H。
字符从头开始、空一个字符的位置。
第二章课外练习题
1.下列四个寄存器中,哪个寄存器在程序设计中是不可省略的(A)。
(A)CS(B)DS(C)ES(D)SS
2.指令movax,10[si]的源操作数字段的寻址方式是(C)。
(A)寄存器寻址(B)寄存器间址(C)变址寻址(D)基址寻址
3.8086∕8088CPU中可用作寄存器间址的寄存器是(B)。
(A)BX、SI、DI(B)BX、BP、SI、DI
(C)BX、IP、SI、DI(D)BX,DX,SI,DI
4.指令mov100[si][bp],ax目标操作数的隐含段为(B)。
(A)数据段(B)堆栈段(C)代码段(D)附加段
1.当SP,BP,SI,DI用于指针和变址寄存器使用时;
①SP中所含的偏移地址是堆栈段中的偏移地址。
(√)
②BP、SI、DI所含的偏移地址是数据段中的偏移地址。
(×
)
2.奇偶标志位PF,当运算结果的低8位中有偶数个1时,被置为0。
(×
3.零标志位ZF,当运算结果为0时,被置为0。
(×
4.符号标志位SF,在运算结果为负时被置为1。
(√)
1.在8086/8088CPU中,有许多寄存器,他们是通用寄存器:
(AX)(BX)(CX)(DX);
指针和变址寄存器:
(SP)(BP)(SI)(DI);
段寄存器:
(CS)(DS)(SS)(ES);
指令指针:
(IP)还有一个标志寄存器:
(PSW),他们都是(16)位的。
2.IBMPC机内存容量最大为(1M)B,要寻找这样大的空间,需要(20)根地址线。
3.每个逻辑段的最大长度为(64KB)。
4.在IBMPC机中,有4个专门存放段地址的寄存器,称为段寄存器,请写出以下段寄存器的符号:
代码段寄存器:
(CS)数据段寄存器:
(DS)
堆栈段寄存器:
(SS)附加段寄存器:
(ES)
1.IBMPC的存储器为什么采用分段结构?
是因为要寻找20位存储器地址的需要。
使用两个十六进制的寄存器做一个寻找20位寄存器工作的一种方法。
2.什么是逻辑地址?
什么是物理地址?
如何由逻辑地址计算物理地址?
逻辑地址是由两部分组成的,即段的基地址和偏移地址。
程序员在编写程序时使用的都是逻辑地址。
物理地址就是内存单元中的一个惟一的20位二进制数表示的地址,物理地址的范围是从00000H到FFFFFH。
CPU与存储器进行数据交换时所使用的地址就是物理地址。
物理地址=段地址×
16D+偏移地址。
3.如果在一个程序段开始执行之前,CS=0A7F0H,IP=2B40H,试问该程序段的第一个字的物理地址是多少?
16D+偏移地址=0A7F0H×
16D+2B40H=0AAA00H
4.一个有16个字的数据区,它的起始地址为70A0:
DDF6,那么该数据区的最后一个字单元地址是多少?
=DDF6H+20H-2H(16个字=32个字节=20H个字节)=DE14即70A0:
:
DE14
5.哪些寄存器可以用来指示存储器地址?
BX、BP、SI和DI。
6.有一个由20个字组成的存储区,其起始处段地址为4701H,偏移地址为2012H。
试写出该存储区首单元和末单元的物理地址。
该存储区末单元的偏移地址=2012H+28H-2(20个字=40个字节=28H个字节)=2038H。
即首单元和末单元的物理地址为49022H和49048H。
7.8086微处理器由哪几部分组成?
各部分的功能是什么?
8086/8088微处理器由两大部分组成:
总线接口单元BIU和执行单元EU。
①BIU:
负责与存储器接口,即CPU与存储器之间的信息传送。
即:
BIU从内存的指定部分取出指令,送至指令队列排队。
从内存的指定部分取出执行指令时所需的操作数,送至EU部分。
②EU:
负责指令的执行。
8.简述8086CPU的寄存器组织。
8086/8088CPU的寄存器是由①通用寄存器②控制寄存器③段寄存器组成。
9.试述8086CPU标志寄存器各位的含义与作用。
它含有9个有用的标志位(其余7位不用),用于记录指令操作后的结果状态信息或控制处理器操作的标志。
其含义与作用如下:
进位标志C(CarryFlag)——当加减运算操作后,结果的最高位产生一个进位或借位,则C=1,否则C=0。
各种移位指令,逻辑操作指令等也可影响CF的状态。
CF位也可表示无符号数的溢出。
溢出标志O(OverflowFlag)——在算术运算中,带符号数的运算结果超出机器所能表示的数据范围称为溢出,当溢出发生时,则O=1,否则O=0。
带符号数的数据范围。
8位运算时为:
﹣128~+127;
16位:
﹣32768~+32767。
符号标志S(SignFlag)——若运算结果的最高位(D15或D7)为1,则S=1,否则S=0。
零标志Z(ZeroFlag)——若运算的结果为0,则Z=1,否则Z=0。
奇偶标志P(ParityFlag)——若运算结果中‘1’的个数为偶数,则P=1,否则P=0。
辅助进位标志A(AuxitiaryCarryFlag)——记录运算时第3位(半个字节)产生的进位值,若第3位产生进位,则A=1,否则A=0。
在执行BCD调整时使用此标志。
方向标志DF(DirectionFlag)——用于在串处理指令中控制处理信息的方向。
当DF=1时,每次操作后使变址寄存器SI和DI减小,这样就使得串处理操作从高地址向低地址方向处理。
当DF=0时,则使SI和DI增大,使得串处理从低地址向高地址方向处理。
中断标志IF(InterruptFlag)——当IF=1时,允许CPU响应可屏蔽中断请求,否则关闭中断。
陷阱标志TF(TrapFlag)——又称单步跟踪。
用于调试时的单步方式操作。
当TF=1时,每条指令执行完后产生陷阱,由系统控制计算机;
当TF=0时,CPU正常工作,不产生陷阱。
10.指出下列MOV指令的源操作数的寻址方式。
MOVAX,1234H=立即
MOVAX,BX=寄存器
MOVAX,[BX]=寄存器间接
MOVAX,TABLE;
TABLE是一个变量名=直接
MOVAX,[1234H]=直接
MOVAX,[BX+1234H]=基址
MOVAX,[BP][SI]=基址变址
MOVAX,[BX+SI-1234H]=基址变址
11.设(DS)=2000H,(BX)=0100H,(SS)=1000H,(BP)=0010H,TABLE的物理地址为2000AH,(SI)=0002H。
求下列每条指令源操作数的存储单元地址。
MOVAX,[1234H]
MOVAX,[BX]
MOVAX,TABLE[BX]
MOVAX,[BP]
MOVAX,[BP][SI]
12.已知:
BX=1234H,BP=5678H,SI=1357H,DS=0925H,SS=0468H,CS=4B10H,指出下述指令中存储器操作数的有效地址和实际地址。
有效地址
实际地址
①MOVAL,[BX]
1234H
0A484H
②MOVAH,[BP]
5678H
0ACF8H
③MOVBH,CS:
[SI]
1357H
4C457H
④MOVDL,[SI+10H]
1367H
0A5B7H
⑤MOVCH,[BP+20H]
5698H
09D18H
⑥MOVCL,SS:
[SI+50H]
13A7H
05A27H
⑦MOVBL,DS:
[BP+30H]
56A8H
0E8F8H
⑧MOV[BP+SI+30H],AH
68DCH
0B07FH
⑨MOV[BX+SI-40H],AH
254BH
0B79BH
⑩MOVCS:
[BX+SI],DH
258BH
4D68BH
13.有两个16位字1EE5H和2A3CH分别存放在80x86微机存储器的000B0H和000B3H单元中。
请用图表示出它们在存储器里的存放情况。
地址
内容
000B0H
E5H
000B1H
1EH
000B2H
000B3H
3CH
000B4H
2AH
20100
12H
20101
34H
20102
56H
20103
78H
┆
21200
21201
4CH
21202
0B7H
21203
65H
习题14示意图
14.有关寄存器及存储单元的内容如下:
DS=2000H,BX=0100H,SI=0002H,存储单元的内容见习题14示意图。
试说明下列各条指令执行后AX寄存器的内容。
①MOVAX,1200H
②MOVAX,BX
③MOVAX,[1200H]
④MOVAX,[BX]
⑤MOVAX,1100[BX]
⑥MOVAX,[BX][SI]
⑦MOVAX,1100[BX][SI]
第三章课外练习题
1.以下语句汇编后,CENTH的值是(A)。
buf1dw8,19
buf2db6,'
abc$'
,10dup('
5'
)
CENTHequbuf2—buf1
(A)4(B)8(C)14(D)17
2.在DEBUG环境下查看机器指令使用(B)命令;
显示内存数据使用(E)命令。
(A)G(B)U(C)T(D)A(E)D(F)E(G)R
二、填空题:
1.写出下列各语句在存储器中分别为变量分配多少字节,并填入括号内。
DATASEGMENT
NUM1DW20
(2)
NUM2DB‘31H,32H,33H’(11)
NUM3EQU10H(0)
NUM4DBNUM3DUP(0)(10H)
DATAENDS
2.某程序的数据段定义如下:
DATASGSEGMENT
PARTLISTDB‘PART#’
DB60
DB‘PRICE’
DB0125
DB‘DESCRIPTION’
DB‘RADIO’
LISTLENGEQU($-PARTLIST);
数组长度,用表达式表示
DATASGENDS
3.有符号定义语句如下:
BUFFDB1,2,3,‘123’
EBUFFDB0
LEQUEBUFF-BUFF
问L的值是(6)。
4.下边是汇编语言程序上机步骤,请填写出完成各步骤使用的系统程序的文件名字,并按照正确步骤给出操作顺序号。
操作名称文件名操作顺序
汇编(MASM)
(2)
编辑(EDIT)
(1)
连接(LINK)(3)
调试(DEBUG)(4)
5.自内存0F00:
0006开始的内存单元中存放着8032569876B5这六个十六进制数据,试分别写出0F00:
0008的字节型数据,字型数据、双字型数据的值。
字节型:
(56)
字型:
(9856)
双字型:
(B5769856)
6.对于如下所示的数据定义,各指令语句的执行结果是什么(以十六进制数表示)?
VR1DB-38,'
456'
,?
VR2DW6,5DUP
(2)
①MOVAL,VR1(-38)
②ADDVR2,59(65)
③MOVBL,VR1+2(53)
7.对于第6小题,为VR1变量分配了(5)个字节,为VR2变量分配了(12)个字节。
8.汇编源程序的文件扩展名是(.ASM)。
9.以下语句汇编后,count的值是(9)。
Buf1db3,5,'
abcd$'
Buf2dw0fabH
Countequ$-buf1
10.保存当前栈顶地址的寄存器是(SP)。
11.在程序运行时执行的语句是(指令)语句,它告诉CPU要执行的操作。
12.(伪指令)语句是由汇编程序在汇编过程中执行的语句。
三、判断题(判断每题正误,正确的在题后括号内划“√”,错误的划“×
1.汇编语言是用指令的助记符、符号地址、标号等符号书写程序的语言。
(√)
2.通过ASSUME伪指令给段寄存器赋初值。
(×
3.在汇编语言中当缺省为十进制数时,表示十六进制数要用H结尾。
(√)
4.在DEBUG中,缺省值为十进制数。
(×
5.在标志IF=0时,CPU忽略所有的中断请求。
(√)
四、简答
1.标号具有哪3种属性?
该3种属性的属性值分别表示什么?
标号具有三种属性:
段、偏移和类型属性。
①段属性:
定义标号的段起始地址,此值必须在一个段寄存器中,而标号的段则总是在CS寄存器中。
段属性值可以用SEG算符求得。
②偏移属性:
标号的偏移地址是从段起始地址到定义标号的位置之间的字节数。
标号偏移量属性值可由OFFSET算符求得。
③类型属性:
类型属性用来指出该标号是在本段内引用还是在其他段中引用的。
标号类型值可用TYPE算符求得。
第四章课外练习题
1.若栈顶的物理地址为20100H,当执行完指令PUSHAX后,栈顶的物理地址为(D)。
(A)20102H(B)20101H(C)200FFH(D)200FEH
2.下列指令执行后,DAB中第一个字的内容是(B)。
DABDB0FAH,0DAH,0F5H,0D0H,5H
DAB_lequ$-DAB
MOVAL,DAB_L
XCHGDAB,AL
(A)05DAH(B)0DA05H(C)0F5DAH(D)0DAF5H
3.执行下列指令后,正确的结果是(B)。
MOVAL,100
MOVBL,-2
(A)AL=100H,BL=02H(B)AL=64H,BL=0FEH
(C)AL=64H,BL=82H(D)AL=100H,BL=0FEH
4.完成同指令XCHGAX,BX相同功能的指令或指令序列是(D)。
(A)MOVAX,BX(B)MOVBX,AX
(C)PUSHAX(D)MOVCX,AX
POPBXMOVAX,BX
MOVBX,CX
5.为了使MOVAX,VAR指令执行后,AX寄存器中的内容为4142H,下面哪一条数据定义会产生不正确的结果?
(C)
(A)VARDW4142H(B)VARDW16706
(C)VARDB42H,41H(D)VARDW‘AB’
6.假定用伪指令DATADB12H,34H定义了两个字节数据,现需要将数据12H取入寄存器AL,将数据34H取入寄存器AH,能完成此功能的程序段是(D)。
(A)MOVAX,DATA(B)MOVSI,DATA
MOVAX,[SI]
(C)LEASI,DATA(D)MOVSI,OFFSETDATA
MOVAX,[SI]MOVAL,[SI]
MOVAH,[SI]MOVAH,[SI+1]
7.POP指令的操作数不能是(D)。
(A)BP(B)[BX](C)字变量的SUM(D)CS
二、简答题
1.设ARRAY是字数组的首地址,写出将第5个字元素取出送AX寄存器的指令序列,要求使用以下几种寻址方式:
①直接寻址;
(MOVAX,ARRAY+8)
②寄存器间接寻址;
(LEABX,ARRAY+8和MOVAX,[BX])
③变址寻址;
(MOVSI,8和MOVAX,ARRAY[SI])
④基址变址寻址。
(LEABX,ARRAY及MOVSI,8和MOVAX,[BX][SI])
2.设有以下程序段,求执行完此程序段后AL寄存器中的内容。
(12H)
ABCEQU2
DATA1DB20H
DATA2DW1234H
MOVAL,DATA1+ABC
3.下列每组指令有何区别?
①MOVAX,1234HAX←1234H
MOVAX,[1234H]AX←1234H的地址
②MOVAX,TABLEAX←TABLE的数据
MOVAX,[TABLE]AX←TABLE的数据
③MOVAX,TABLEAX←TABLE的数据
LEAAX,TALBEAX←TABLE的地址
④MOVAX,BXAX←BX的内容
MOVAX,[BX]AX←BX的地址里的内容
4.写一指令序列,将3456H装入DS寄存器。
MOVAX,3456H
MOVDS,AX
5.不可以从堆栈向哪个段寄存器弹出数据?
CS
6.若(SS)=2000H,(SP)=000AH,先执行将字数据1234H和5678H压入堆栈的操作,再执行弹出一个字数据的操作,试画出堆栈区及SP的内容变化过程示意图(标出存储单元的物理地址)。
堆栈地址
20006H
执行后SP
20007H
20008H
最后SP
20009H
执行前SP
2000AH
7.在8086∕8088微处理器中,PUSH和POP指令在堆栈与寄存器或存储单元之间传送数据时,一次总是传送多少字节?
2字节。
8.解释XLAT指令是怎样转换AL寄存器中的内容的。
并编写一段程序用XLAT指令将BCD码的0~9转换成对应的ASCII,并将ASCII存入数组ARRAY中。
XLAT指令是通过