汇编语言自测练习题文档格式.docx

上传人:b****1 文档编号:5679739 上传时间:2023-05-05 格式:DOCX 页数:13 大小:20.98KB
下载 相关 举报
汇编语言自测练习题文档格式.docx_第1页
第1页 / 共13页
汇编语言自测练习题文档格式.docx_第2页
第2页 / 共13页
汇编语言自测练习题文档格式.docx_第3页
第3页 / 共13页
汇编语言自测练习题文档格式.docx_第4页
第4页 / 共13页
汇编语言自测练习题文档格式.docx_第5页
第5页 / 共13页
汇编语言自测练习题文档格式.docx_第6页
第6页 / 共13页
汇编语言自测练习题文档格式.docx_第7页
第7页 / 共13页
汇编语言自测练习题文档格式.docx_第8页
第8页 / 共13页
汇编语言自测练习题文档格式.docx_第9页
第9页 / 共13页
汇编语言自测练习题文档格式.docx_第10页
第10页 / 共13页
汇编语言自测练习题文档格式.docx_第11页
第11页 / 共13页
汇编语言自测练习题文档格式.docx_第12页
第12页 / 共13页
汇编语言自测练习题文档格式.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

汇编语言自测练习题文档格式.docx

《汇编语言自测练习题文档格式.docx》由会员分享,可在线阅读,更多相关《汇编语言自测练习题文档格式.docx(13页珍藏版)》请在冰点文库上搜索。

汇编语言自测练习题文档格式.docx

任意 

不影响

2.某次求和结果最高位为1,则SF=__________。

不影响

3.减法指令产生差值为38H则标志正确的是__________。

ZF=1 

SF=1 

PF=1 

PF=0

4.请问两个8位数据8FH与36H相加后,状态标志ZF、SF、PF的状态是什么?

1.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 

该标志用于控制外部可屏蔽中断是否可以被处理器响应。

若设置IF 

1,则允许中断;

设置IF 

0,则禁止中断。

TF——陷井标志(Trap 

Flag),也常称为单步标志。

该标志用于控制处理器是否进入单步操作方式。

若设置TF 

1,处理器单步执行指令:

即处理器在每条指令执行结束时,便产生一个编号为1的内部中断。

这样可以方便地对程序进行逐条指令的调试。

这种内部中断称为单步中断;

这种逐条指令调试程序的方法就是单步调试。

设置TF 

0,处理器正常工作。

位、字节、字和双字

每个存储单元存放一个_________,双字需要用____个存储单元存放,一个字需_____个存储单元存放。

每个存储单元存放一个 

 

字节 

,双字需要用 

个存储单元存放,一个字需要 

个存储单元存放。

多字节数据的存放

1.偏移地址2000H~2003H的4个字节单元依次存放如下数据(16进制):

10 

20 

30 

40。

请问偏移地址2000H处的字节、字和双字单元内容分别是什么?

2.设物理地址(10FF0H)=10H,(10FF1H)=20H,(10FF2H)=30H,如从地址10FF1H中取出一个字的内容是_____________。

1020H 

3020H

2030H 

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的逻辑段论述正确的有______。

每个逻辑段不超过64KB

每个逻辑段的起始物理地址的低4位全为0

一个程序中,代码段只能有一个

数据段和堆栈段的段地址不能相同

指令指针寄存器IP指示当前代码段中下一条指令的偏移地址

一个存储单元的物理地址不是唯一的(逻辑地址不唯一)。

1.逻辑段有两个限制:

容量小于等于64KB,段开始于模16地址。

如果从最低地址00000H开始,每隔16个字节就分一个段(最小的逻辑段容量),这样1MB主存空间最多就分成1MB÷

16=220÷

24=216个逻辑段。

如果从最低地址00000H开始,每隔64KB分一个段(最大的逻辑段容量),这样1MB主存空间最少就分成1MB÷

64KB=220÷

216=24个逻辑段。

ABE

逻辑地址

1.已知一个16字节的数组始于逻辑地址F000 

:

1070,请问最后一个字节所在的物理地址?

2.设DS=5788H,偏移地址为94H,该字节的物理地址_____________。

57974H 

5883H

57914H 

58ECH

1.这是一个常见的逻辑地址转换为物理地址的例子:

物理地址=段地址左移4位(对16进制数来说就是一位)+偏移地址

第一个字节单元的物理地址是:

F0000H+1070H=F1070H

最后一个字节单元的物理地址是:

F1070H+(16-1)=F107FH

C

根据公式:

物理地址=段地址左移4位(对16进制数来说就是一位)+偏移地址计算得到(物理地址不可能为16位)

段寄存器

简述4个段寄存器的作用。

CS存放代码段的段地址

SS存放堆栈段的段地址

DS存放数据段的段地址

ES存放附加段的段地址

段超越

1.8088按逻辑段组织程序,数据变量应该且必须在数据段中。

2.数据访问时默认使用的段一定是数据段DS.

3.数据可以存放在任何段中。

4.当数据存放在附加段时使用的段超越是ES:

5.mov 

ax,es:

[di+100h]”指令从__________段取出数据送AX。

CS 

SS 

DS 

ES

6.“mov 

ax,[bp+di]”指令从__________段取出数据送AX。

ES

1.答案:

错。

数据变量可以位于任何一个段中。

使用BP基址指针寄存器访问主存,则默认是SS段

3.答案:

只要明确指明是哪个逻辑段就可以

4.答案:

5.答案:

D。

ES是附加段时使用的段超越。

6.答案:

使用BP基址指针寄存器访问主存,则默认是SS段

段寄存器的使用规定

1.CPU取指令时是取CS*16+SP的内存单元中的内容。

2.堆栈段的偏移地址是通过SP寄存器给出的。

3.使用BP基址指针寄存器访问主存,只能是SS段。

取指令时是取CS*16+IP的内存单元中的内容。

正确。

堆栈段的偏移地址是通过SP寄存器给出的。

SP指示堆栈的栈顶指针。

3. 

使用BP基址指针寄存器访问主存,默认是SS段。

也可以使用段超越访问其他段。

分段示例

1.若用户堆栈位于存储区10000H~1FFFFH,则该堆栈的段地址是______

10000H 

1FFFFH 

01000H 

00FFFH 

2.某系列微机对存储器的分段,如果每个段最多的字存储单元(16位二进制)是32K,那么表示段内字节单元偏移地址的二进制位数应是______位

14 

15 

16 

20

A。

每个段的起始地址必须是一个小节的地址,即低4位二进制数为0。

这里的段地址是指段开始的物理地址。

段寄存器只保存段起始物理地址的高16位,所以有时也将段地址理解为高16位部分。

如果是后者的理解,则答案应该是C。

每个段最多的字存储单元(16位二进制)是32K,那么每个段内字节单元最多是64K,寻址64K的存储空间需要16条地址线。

1.

指令组成

指令格式为

操作码 

操作数1, 

操作数2 

;

注释

寻址方式

什么是寻址方式?

分为哪些类?

指令中用于说明操作数位置的方法就是操作数的寻址方式。

分为:

立即(数)寻址方式

寄存器寻址方式

存储器寻址方式

立即数寻址方式

指令 

mov 

ax,1020h中源操作数是( 

),它的寻址方式是( 

)寻址方式,操作数存放在( 

)段中,汇编后的机器码为三个字节,从低地址到高地址分别为 

B8、( 

)、( 

)。

ax,1020h中操作数是( 

1020h 

),它的寻址方式是(立即数)寻址方式,操作数存放在(代码)段中,汇编后的机器码为三个字节,从低地址到高地址分别为 

B8H(20H10H)。

注意数据在内存中是小端方式存放。

下面不能用于寄存器寻址的寄存器有( 

A. 

B. 

AX 

C. 

IP 

D. 

SI 

E. 

CL 

F. 

SP

解答:

C。

寄存器寻址方式的操作数存放在CPU的内部寄存器reg中,它可以是8位寄存器r8:

AH 

AL 

BH 

BL 

CH 

DH 

DL;

也可以是16位寄存器r16:

BX 

CX 

DX 

DI 

BP 

SP。

另外,操作数还可以存放在4个段寄存器中seg:

ES。

IP是指令指针寄存器,不能存放操作数。

1.比较存储器寻址方式与寄存器寻址方式的特点

2.存储器寻址方式在指令中给出操作数在内存中的地址,该地址是()

逻辑地址 

有效地址 

偏移地址 

D.物理地址 

E.段地址

1.解答:

存储器寻址方式 

寄存器寻址方式

操作数存放的位置:

内存 

寄存器

寻址速度 

慢 

存放数量 

多 

有限

2.解答:

主存寻址方式。

在这种寻址方式下,指令中给出的是有关操作数的主存地址信息。

8086的存储器是分段管理的,所以这里给出的地址只是偏移地址(称有效地址EA),而段地址在默认的或用段超越前缀指定的段寄存器中

直接寻址方式

指出下面指令中源操作数的寻址方式。

bx, 

2002h

[2002h]

2002h 

立即寻址方式,2002h是16位立即数

[2002h] 

直接寻址方式,有效地址为2002h

寄存器间接寻址方式

指出源操作数的寻址方式,并判断对错,并说明原因:

ax,[sp]

ax,sp

ax,[si]

ax,si

ax,[bp]

ax,bp

ax,[ds]

ax,ds

ax,[bx]

ax,bx

ax,[sp] 

;

错。

寄存器间接寻址只能用bp,bx,si,di,sp不能用于寄存器间接寻址。

ax,sp 

寄存器寻址

ax,[si] 

寄存器间接寻址

ax,si 

ax,[bp] 

ax,bp 

ax,[ds] 

ds不能用于寄存器间接寻址

ax,ds 

ax,[bx] 

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=?

① 

cx, 

1200

② 

bx

③ 

[1200h]

④ 

[bx]

⑤ 

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

基址变址寻址方式

判断对错,并说明原因:

[ax+1000h];

[bp+ax];

bx 

[sp+di];

[bx+di];

bx,[bp+si];

bx,[cs+si];

bx,[bx+ax];

[ax+1000h] 

ax不是基址寄存器

[bp+ax] 

Ax不是变址寄存器

[sp+di] 

Sp不是基址寄存器

[bx+di] 

bx,[bp+si] 

bx,[cs+si] 

cs不是基址寄存器

bx,[bx+ax] 

Ax不是变址寄存器

相对基址变址寻址方式

指令“mov 

wnum[bx][si]”源操作数的物理地址的是______

16×

CS+BX+SI+wnum 

SS+BX+SI+wnum

DS+BX+SI+wnum 

ES+BX+SI+wnum

D

寻址方式wnum[bx][si]表示的偏移地址是BX+SI+wnum,段超越前缀es:

说明数据存放在附加段中,所以物理地址是:

ES+BX+SI+wnum。

操作数寻址方式小结

写出下列指令的源操作数采用的寻址方式?

如果可以计算,其物理地址是多少?

假设DS=3000H、ES=3100H、SS=2000H、SI=00ABH、BX=0200H、BP=0020H,变量var的偏移地址为0080H。

ax,var

ax,var[bx]

ax,[200h]

ax,0

⑥ 

ax,si

⑦ 

ax,[bp]

⑧ 

⑨ 

ax,ds:

[bp+2]

⑩ 

ax,var[bx][si]

直接寻址,物理地址=3000H×

16+0080H=30080H

寄存器间接寻址,物理地址=3000H×

16+0200H=30200H

寄存器相对寻址,物理地址=3000H×

16+0280H+0080H=30280H

立即数寻址,操作数在代码段

寄存器寻址,操作数在寄存器SI中为00ABH

寄存器相对寻址(答间接寻址也可以),物理地址=2000H×

16+0020H=20020H

寄存器间接寻址,物理地址=3100H×

16+0200H=31200H

[bp+si]

基址变址寻址,物理地址=3000H×

16+0020H+00ABH=300CBH

ax,var[bx][si]

相对基址变址寻址,物理地址=3000H×

16+0200H+00ABH+0080H=3032BH

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2