汇编语言自测练习题.docx
- 文档编号:9941758
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:13
- 大小:20.98KB
汇编语言自测练习题.docx
《汇编语言自测练习题.docx》由会员分享,可在线阅读,更多相关《汇编语言自测练习题.docx(13页珍藏版)》请在冰豆网上搜索。
汇编语言自测练习题
8086CPU的内部结构分为哪几部分?
他们各有什么功能?
答:
8086CPU的内部结构分为总线接口(BIU)和执行单元(EU)两大部分。
BIU负责CPU对存储器和外设的访问;EU负责指令的译码、执行和数据的运算。
指令执行过程
题目:
1.8086CPU如何完成一条指令的功能?
2.8088中,取指令和执行指令可以重叠操作吗?
答:
1.完成一条指令的功能可以分为两个主要阶段:
取指令和执行指令。
2.答案:
对。
8086内部结构分为总线接口单元BIU执行单元EU总线接口单元。
BIU负责从存储器取出这个指令代码,送入指令队列;执行单元EU从指令队列中获得预先取出的指令代码,在EU控制电路中进行译码,然后发出控制信号由算术逻辑单元进行数据运算、数据传送等操作。
通用寄存器
题目:
1.8086CPU有几个16位通用寄存器?
有几个8位通用寄存器?
2.下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是( )
A、AX,BX,CX,DX
B、BX,BP,SI,DI
C、SP,IP,BP,DX
D、CS,DS,ES,SS
3.可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是( )。
A.AX,BX,CX,DX
B.DS,ES,CS,SS
C.SP,BP,IP,BX
D.SI,DI,BP,BX
1.
(1)8086CPU有8个16位通用寄存器AX、BX、CX、DX,SI、DI、BP 、SP,
(2)8个8位通用寄存器AH / AL、BH / BL、CH / CL、DH / DL
2.B
3.D
状态标志
题目:
1.当运行结果为0时,ZF=__________。
A 0 B 1 C 任意 D 不影响
2.某次求和结果最高位为1,则SF=__________。
A 0 B 1 C 任意 D 不影响
3.减法指令产生差值为38H则标志正确的是__________。
A ZF=1 B SF=1 C PF=1 D PF=0
4.请问两个8位数据8FH与36H相加后,状态标志ZF、SF、PF的状态是什么?
1.B
2.B
3.D
4.直接对这两个数据进行(无符号数据)加法:
8FH+36H=C5H
结果C5H不是零,所以:
ZF=0;
最高位D7=1,所以:
SF=1;
结果C5H中“1”的个数是4,为偶数,所以:
PF=1;
溢出标志
题目:
请问两个8位数据8FH与36H相加后,状态标志溢出标志位CF和OF的状态是什么?
进位标志针对无符号数据加减运算。
最高位没有进位,所以:
CF=0;
溢出标志针对有符号数据加减运算。
它的判断可以采用一个简单的规则:
当两个相同符号的数据相加(含不同符号的数据相减),如果运算结果的符号与原数据符号不同,就产生溢出;其他情况,不会产生溢出。
对于8FH(负数)与36H(正数)两个不同符号数据相加,根本不会产生溢出,所以:
OF=0。
如果8FH减去36H,则结果是:
8FH-36H=59H。
没有借位,所以CF=0;“负数减正数”可以认为是“负数加负数”,结果不应是正数(59H),所以有溢出OF=1。
控制标志
题目:
简述3个控制标志的含义。
DF——方向标志(Direction Flag)。
该标志用于串操作指令中,控制地址的变化方向。
如果设置DF = 0,每次串操作后的存储器地址就自动增加;设置DF = 1,每次串操作后的存储器地址就自动减少。
方向标志可以用CLD指令复位,STD指令置位。
IF——中断允许标志(Interrupt-enable Flag)。
该标志用于控制外部可屏蔽中断是否可以被处理器响应。
若设置IF = 1,则允许中断;设置IF = 0,则禁止中断。
TF——陷井标志(Trap Flag),也常称为单步标志。
该标志用于控制处理器是否进入单步操作方式。
若设置TF = 1,处理器单步执行指令:
即处理器在每条指令执行结束时,便产生一个编号为1的内部中断。
这样可以方便地对程序进行逐条指令的调试。
这种内部中断称为单步中断;这种逐条指令调试程序的方法就是单步调试。
设置TF = 0,处理器正常工作。
位、字节、字和双字
题目:
每个存储单元存放一个_________,双字需要用____个存储单元存放,一个字需_____个存储单元存放。
每个存储单元存放一个 字节 ,双字需要用 4 个存储单元存放,一个字需要 2 个存储单元存放。
多字节数据的存放
题目:
1.偏移地址2000H~2003H的4个字节单元依次存放如下数据(16进制):
10 20 30 40。
请问偏移地址2000H处的字节、字和双字单元内容分别是什么?
2.设物理地址(10FF0H)=10H,(10FF1H)=20H,(10FF2H)=30H,如从地址10FF1H中取出一个字的内容是_____________。
A 1020H B 3020H
C 2030H D 2010H
1.Intel 80x86系列微处理器采用“小端方式”存放多字节数据,即在内存中低地址存放低字节、高地址存放高字节,就是所谓“低对低、高对高”原则。
因此,结论是:
[2000H]字节单元=10H
[2000H]字单元=2010H
[2000H]双字单元=40302010H
2. 答案:
B。
10FF1H开始的一个字空间由两个内存单元组成,其地址分别为10FF1H和10FF2H,8086的数据在内存中是以小端方式存放的,因而10FF2H中存放的是高字节,10FF1H中存放的是低字节。
所以从地址10FF1H中取出一个字的内容是3020H。
8086存储器的逻辑段
题目:
1.8086/8088的1MB主存空间最多能分成多少个逻辑段,最少分成多少个逻辑段?
2.关于8088CPU的逻辑段论述正确的有______。
A 每个逻辑段不超过64KB
B 每个逻辑段的起始物理地址的低4位全为0
C 一个程序中,代码段只能有一个
D 数据段和堆栈段的段地址不能相同
E 指令指针寄存器IP指示当前代码段中下一条指令的偏移地址
F 一个存储单元的物理地址不是唯一的(逻辑地址不唯一)。
1.逻辑段有两个限制:
容量小于等于64KB,段开始于模16地址。
如果从最低地址00000H开始,每隔16个字节就分一个段(最小的逻辑段容量),这样1MB主存空间最多就分成1MB÷16=220÷24=216个逻辑段。
如果从最低地址00000H开始,每隔64KB分一个段(最大的逻辑段容量),这样1MB主存空间最少就分成1MB÷64KB=220÷216=24个逻辑段。
2.答案:
ABE
逻辑地址
题目:
1.已知一个16字节的数组始于逻辑地址F000 :
1070,请问最后一个字节所在的物理地址?
2.设DS=5788H,偏移地址为94H,该字节的物理地址_____________。
A 57974H B 5883H
C 57914H D 58ECH
1.这是一个常见的逻辑地址转换为物理地址的例子:
物理地址=段地址左移4位(对16进制数来说就是一位)+偏移地址
第一个字节单元的物理地址是:
F0000H+1070H=F1070H
最后一个字节单元的物理地址是:
F1070H+(16-1)=F107FH
2.答案:
C
根据公式:
物理地址=段地址左移4位(对16进制数来说就是一位)+偏移地址计算得到(物理地址不可能为16位)
段寄存器
题目:
简述4个段寄存器的作用。
CS存放代码段的段地址
SS存放堆栈段的段地址
DS存放数据段的段地址
ES存放附加段的段地址
段超越
题目:
1.8088按逻辑段组织程序,数据变量应该且必须在数据段中。
2.数据访问时默认使用的段一定是数据段DS.
3.数据可以存放在任何段中。
4.当数据存放在附加段时使用的段超越是ES:
5.mov ax,es:
[di+100h]”指令从__________段取出数据送AX。
A CS B SS C DS D ES
6.“mov ax,[bp+di]”指令从__________段取出数据送AX。
A CS B SS C DS D ES
1.答案:
错。
数据变量可以位于任何一个段中。
2.答案:
错。
使用BP基址指针寄存器访问主存,则默认是SS段
3.答案:
对。
只要明确指明是哪个逻辑段就可以
4.答案:
对。
5.答案:
D。
ES是附加段时使用的段超越。
6.答案:
B。
使用BP基址指针寄存器访问主存,则默认是SS段
段寄存器的使用规定
题目:
1.CPU取指令时是取CS*16+SP的内存单元中的内容。
2.堆栈段的偏移地址是通过SP寄存器给出的。
3.使用BP基址指针寄存器访问主存,只能是SS段。
1.答案:
错。
取指令时是取CS*16+IP的内存单元中的内容。
2. 答案:
正确。
堆栈段的偏移地址是通过SP寄存器给出的。
SP指示堆栈的栈顶指针。
3. 答案:
错。
使用BP基址指针寄存器访问主存,默认是SS段。
也可以使用段超越访问其他段。
分段示例
题目:
1.若用户堆栈位于存储区10000H~1FFFFH,则该堆栈的段地址是______
A 10000H B 1FFFFH C 01000H D 00FFFH
2.某系列微机对存储器的分段,如果每个段最多的字存储单元(16位二进制)是32K,那么表示段内字节单元偏移地址的二进制位数应是______位
A 14 B 15 C 16 D 20
答案:
A。
每个段的起始地址必须是一个小节的地址,即低4位二进制数为0。
这里的段地址是指段开始的物理地址。
段寄存器只保存段起始物理地址的高16位,所以有时也将段地址理解为高16位部分。
如果是后者的理解,则答案应该是C。
2. 答案:
D。
每个段最多的字存储单元(16位二进制)是32K,那么每个段内字节单元最多是64K,寻址64K的存储空间需要16条地址线。
1.
指令组成
指令格式为
操作码 操作数1, 操作数2 ;注释
寻址方式
题目:
什么是寻址方式?
分为哪些类?
指令中用于说明操作数位置的方法就是操作数的寻址方式。
分为:
立即(数)寻址方式
寄存器寻址方式
存储器寻址方式
立即数寻址方式
题目:
指令 mov ax,1020h中源操作数是( ),它的寻址方式是( )寻址方式,操作数存放在( )段中,汇编后的机器码为三个字节,从低地址到高地址分别为 B8、( )、( )。
指令 mov ax,1020h中操作数是( 1020h ),它的寻址方式是(立即数)寻址方式,操作数存放在(代码)段中,汇编后的机器码为三个字节,从低地址到高地址分别为 B8H(20H10H)。
注意数据在内存中是小端方式存放。
寄存器寻址方式
题目:
下面不能用于寄存器寻址的寄存器有( )
A. CS B. AX C. IP D. SI E. CL F. SP
解答:
C。
寄存器寻址方式的操作数存放在CPU的内部寄存器reg中,它可以是8位寄存器r8:
AH / AL / BH / BL / CH / CL / DH / DL;
也可以是16位寄存器r16:
AX / BX / CX / DX / SI / DI / BP / SP。
另外,操作数还可以存放在4个段寄存器中seg:
CS / DS / SS / ES。
IP是指令指针寄存器,不能存放操作数。
存储器寻址方式
题目:
1.比较存储器寻址方式与寄存器寻址方式的特点
2.存储器寻址方式在指令中给出操作数在内存中的地址,该地址是()
A. 逻辑地址 B. 有效地址 C. 偏移地址 D.物理地址 E.段地址
1.解答:
存储器寻址方式 寄存器寻址方式
操作数存放的位置:
内存 寄存器
寻址速度 慢 快
存放数量 多 有限
2.解答:
C 。
主存寻址方式。
在这种寻址方式下,指令中给出的是有关操作数的主存地址信息。
8086的存储器是分段管理的,所以这里给出的地址只是偏移地址(称有效地址EA),而段地址在默认的或用段超越前缀指定的段寄存器中
直接寻址方式
题目:
指出下面指令中源操作数的寻址方式。
mov bx, 2002h
mov bx, [2002h]
mov bx, 2002h ;立即寻址方式,2002h是16位立即数
mov bx, [2002h] ;直接寻址方式,有效地址为2002h
寄存器间接寻址方式
指出源操作数的寻址方式,并判断对错,并说明原因:
mov ax,[sp]
mov ax,sp
mov ax,[si]
mov ax,si
mov ax,[bp]
mov ax,bp
mov ax,[ds]
mov ax,ds
mov ax,[bx]
mov ax,bx
mov ax,[sp] ;错。
寄存器间接寻址只能用bp,bx,si,di,sp不能用于寄存器间接寻址。
mov ax,sp ; 对。
寄存器寻址
mov ax,[si] ;对。
寄存器间接寻址
mov ax,si ; 对。
寄存器寻址
mov ax,[bp] ;对。
寄存器间接寻址
mov ax,bp ; 对。
寄存器寻址
mov ax,[ds] ;错。
ds不能用于寄存器间接寻址
mov ax,ds ;对。
寄存器寻址
mov ax,[bx] ;对。
寄存器间接寻址
mov ax,bx ;对。
寄存器寻址
寄存器相对寻址方式
题目:
假设有关寄存器及存储单元内容如下:
DS=1000h,BX=0100h,SI=0002
[10100H]=12h,[10101H]=34h,[10102H]=56h,[10103H]=78h
[11200H]=A1h,[11201H]=B2h,[11202H]=C3h,[11203H]=D4h
说明如下各条指令执行完后,CX=?
① mov cx, 1200
② mov cx, bx
③ mov cx, [1200h]
④ mov cx, [bx]
⑤ mov cx, 1100h[bx]
对后3种存储器寻址方式,需要首先计算它的有效地址,然后与段地址组合成物理地址,进而从存储单元取出内容(注意这是16位数据)。
① CX=1200
② CX=BX=0100h
③ CX=B2A1h,因为物理地址是10000H+1200H=11200H
④ CX=3412h,因为物理地址是10000H+0100H=10100H
⑤ CX=B2A1h,因为物理地址是10000H+1100H+0100H=11200H
基址变址寻址方式
题目:
判断对错,并说明原因:
mov bx, [ax+1000h];
mov bx, [bp+ax];
mov bx ,[sp+di];
mov bx, [bx+di];
mov bx,[bp+si];
mov bx,[cs+si];
mov bx,[bx+ax];
mov bx, [ax+1000h] ; 错。
ax不是基址寄存器
mov bx, [bp+ax] ; 错。
Ax不是变址寄存器
mov bx ,[sp+di] ; 错。
Sp不是基址寄存器
mov bx, [bx+di] ;对
mov bx,[bp+si] ;对
mov bx,[cs+si] ;错。
cs不是基址寄存器
mov bx,[bx+ax] ; 错。
Ax不是变址寄存器
相对基址变址寻址方式
题目:
指令“mov ax,es:
wnum[bx][si]”源操作数的物理地址的是______
A 16×CS+BX+SI+wnum B 16×SS+BX+SI+wnum
C 16×DS+BX+SI+wnum D 16×ES+BX+SI+wnum
答案:
D
寻址方式wnum[bx][si]表示的偏移地址是BX+SI+wnum,段超越前缀es:
说明数据存放在附加段中,所以物理地址是:
16×ES+BX+SI+wnum。
操作数寻址方式小结
题目:
写出下列指令的源操作数采用的寻址方式?
如果可以计算,其物理地址是多少?
假设DS=3000H、ES=3100H、SS=2000H、SI=00ABH、BX=0200H、BP=0020H,变量var的偏移地址为0080H。
① mov ax,var
② mov ax,[bx]
③ mov ax,var[bx]
④ mov ax,[200h]
⑤ mov ax,0
⑥ mov ax,si
⑦ mov ax,[bp]
⑧ mov ax,es:
[bx]
⑨ mov ax,ds:
[bp+2]
⑩ mov ax,var[bx][si]
① mov ax,var
直接寻址,物理地址=3000H×16+0080H=30080H
② mov ax,[bx]
寄存器间接寻址,物理地址=3000H×16+0200H=30200H
③ mov ax,var[bx]
寄存器相对寻址,物理地址=3000H×16+0280H+0080H=30280H
④ mov ax,[200h]
直接寻址,物理地址=3000H×16+0200H=30200H
⑤ mov ax,0
立即数寻址,操作数在代码段
⑥ mov ax,si
寄存器寻址,操作数在寄存器SI中为00ABH
⑦ mov ax,[bp]
寄存器相对寻址(答间接寻址也可以),物理地址=2000H×16+0020H=20020H
⑧ mov ax,es:
[bx]
寄存器间接寻址,物理地址=3100H×16+0200H=31200H
⑨ mov ax,ds:
[bp+si]
基址变址寻址,物理地址=3000H×16+0020H+00ABH=300CBH
⑩ mov ax,var[bx][si]
相对基址变址寻址,物理地址=3000H×16+0200H+00ABH+0080H=3032BH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 自测 练习题