微机原理复习资料

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.9 分别说明下列每组指令中的两条指令的区别。

①MOV AX, TABLE

LEA AX, TABLE

②AND BL, 0FH

OR BL, 0FH

③JMP SHORT L1

JMP NEAR PTR L1

④MOV AX, [BX]

MOV AX, BX

⑤SUB DX, CX

CMP DX, CX

⑥MOV [BP][SI] , CL

MOV DS: [BP][SI] , CL

答:①第一条指令将变量名TABLE 确定的一个字数据传送到AX 中;

第二条指令取变量名TABLE 的16 位有效地址值传送到AX 中。

②第一条指令将BL 中的内容和立即数0FH 相与,结果回送到BL 中;

第二条指令将BL 中的内容和立即数0FH 相或,结果回送到BL 中。

③第一条指令为段内无条件短程转移,跳转的范围不得超过带符号的8 位二进制数表示的字节范围;

第二条指令为段内无条件近程转移,跳转的范围不得超过带符号的16 位二进制

数表示的字节范围。

④第一条指令源操作数为存储器,将BX 的内容确定的相邻两个存储单元中的内容传送到AX 中;

第二条指令源操作数为寄存器,将BX 的内容传送到AX 中。

⑤第一条指令将DX 的内容减去CX 的内容,结果回送到DX 中;

第二条指令只是将DX 的内容和CX 的内容相减作大小比较,不回送结果。

⑥第一条指令将CL 的内容传送到堆栈段中由BP+SI 确定的单元中;

第二条指令将CL 的内容传送到数据段中由BP+SI 确定的单元中

2.6 什么是逻辑地址?什么是物理地址?在实模式下,如何求存储器的物理地址?设一

个16 字的数据存储区,它的起始地址为70A0H:DDF6H.。写出这个数据区的首字单元和

末字单元的物理地址。

答:(1)逻辑地址由段基址(存放在段寄存器中)和偏移地址(由寻址方式提供)两部分构成,它们都是无符号的16 位二进制数。逻辑地址是用户进行程序设计时采用的地址。

(2)物理地址是1M 内存空间中每个存储单元惟一的地址,由20 位二进制数构成。物理地址是CPU 访问内存时使用的地址。当用户通过编制程序将16 位逻辑地址送入CPU

的总线接口部件BIU 时,地址加法器通过地址运算变换为20 位的物理地址。

(3)20 位物理地址的计算公式为:

物理地址=段基址×16+偏移地址

首字单元的物理地址=70A0H×16+DDF6H

=7E7F6H

末字单元的物理地址=7E7F6H+20H-2 =7E816H-2

=7E814H

3.1 分别指出下列指令中源操作数和目标操作数的寻址方式。

①MOV SI, 100寄存器立即数

②MOV CX, DATA[SI] 寄存器寄存器间

③ADD AX, [BX][DI] 寄存器基址加间址

④SUB AH, DH寄存器寄存器

⑤AND DL, [BX+SI+20H] 寄存器基址

加间址

⑥MOV [BP+1054H], AX基址寄存器寄

存器

⑦OR [DI+3000H], BX寄存器间接寄存

⑧XOR [BP+SI], AL基址加间址寄存器

⑨MOV EAX, EBX寄存器寄存器

⑩MOV EAX, [ECX][EBX] 寄存器基址加

间址

11 MOV EAX, [ESI][EDX×2] 寄存器基

址加比例间址

12 MOV EAX, [ESI×8] 寄存器比例间址

3.2 设DS=1000H, BX=2865H, SI=

0120H,偏移量D=47A8H,试计算下列

各种寻址

方式下的有效地址,并在右边答案中找出

正确答案,将它的序号填入括号内:

①使用D 的直接寻址( ) A. 2865H

②使用BX 的寄存器间接寻址( ) B.

700DH

③使用BX 和D 的寄存器相对寻址( )

C. 47A8H

④使用BX、SI 和D 的相对基址变址寻

址( ) D. 2985H

⑤使用BX、SI 的基址变址寻址( ) E.

712DH

答:①(C)②(A)③(B)④(E)

⑤(D)

3.12 编写一程序段,实现下述要求。

①将存储器中1A00H 单元中的一个字节

数据传送到1B00H 单元中;

②使AX 寄存器的低四位清0,其余位不

变;

③使AL 寄存器的低四位保持不变,高四

位取反;

④使DH 寄存器的低四位为1,高四位不

变。

答:①MOV AL, [1A00H]

MOV [1B00H], AL

②AND AX, 0FFF0H

③XOR AL, 0F0H

④OR DH, 0FH

3.15 试编写出将内存2500H 开始的256

个字节单元清0 的程序。

答:MOV CX, 256

MOV AL, 0

MOV BX, 2500H

AA: MOV [BX], AL

INC BX

LOOP AA

HLT

4.1 将下列左边各项与右边的名词对应起

来,找出正确答案的序号填入括号中。

①使计算机执行某种操作的命令()A.

代码段

②表示计算机执行某种操作的符号()

B.源程序

③使汇编程序执行某种操作的命令()

C.汇编程序

④用汇编语言或高级语言编写的程序

()D.指令

⑤以机器码指令组成的程序()E.伪指

⑥指出指令在程序中位置的符号地址

()F.编译程序

⑦指出数据存储单元的符号地址()

G.目标程序

⑧将高级语言的程序翻译成机器码程序

的实用程序()H.助记符

⑨存放指令机器码的存储器区段()I.

标号

⑩将汇编语言程序翻译成机器码程序的

实用程序()J.变量

答:⑨④⑩①③⑧⑤②⑥⑦

4.10 已知:

ORG 0200H

ARY DW -1,2,-3,-4

CNT DW $-ARY

VAR DW ARY,$+4

MOV AX,ARY

MOV BX,OFFSET VAR

MOV CX,CNT

MOV DX,VAR+2

LEA SI,ARY

此段程序执行后,

AX=(-1 ),BX=(020AH),CX=(8 ),

DX=(020AH),SI=(0200H )。

4.11 给出符号定义语句如下:

FIRST DB ‘ABCD’,3,?,0FH

SECOND DB ?

Y EQU SECOND-FIRST

求Y 的值是多少?

答:Y 的值是7。

4.14 对于下面的数据定义,写出各条指令

执行后的结果。

AA DB ?

BB DW 10 DUP(1)

CC DB ‘1 2 3 4 5’

①MOV AX,TYPE AA AX=()

②MOV AX,TYPE BB AX=()

③MOV CX,LENTH BB CX=()

④MOV CX,LENGTH CC CX=()

⑤MOV BX,SIZE BB BX=()

答:答案如下:

①MOV AX,TYPE AA AX=(0001H )

②MOV AX,TYPE BB AX=(0002H )

③MOV CX,LENTH BB CX=(000AH )

④MOV CX,LENGTH CC CX=

(0001H )

⑤MOV BX,SIZE BB BX=(0014 H )

4.15 分析下列程序段,指出在什么情况下

该段程序的执行结果为AH=0?

BEGIN:IN AL,5FH

TEST AL,80H

JZ EXIT

MOV AH,0

JMP DONE

EXIT:MOV AH,0FFH

DONE:HLT

4.16 阅读程序并回答问题:

①在(a)(b)处填写与其左边指令等效

的指令或指令序列;

②程序的功能是(),

所依据的算式是()。

③程序执行后,DEDT 单元内容为()。

DATA SEGMENT

BITD DW 128H,64H,32H,16H,8H,

4H,2H,1H

SOCB DB 0D2H

DEDT DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV BL,SOCB

LEA SI,BITD (a)

MOV CX,8

MOV AX,0

L1:SHL BL,1

JNC L2

ADD AL,[SI]

DAA

MOV DL,AL

ADC AH,[SI+1]

MOV AL,AH

DAA

MOV AH,AL

MOV AL,DL

L2:ADD SI,2

LOOP L1 (b)

MOV DEDT,AX

MOV AH,4CH

INT 21H

CODE ENDS

END START

答:①(a)MOV SI, OFFSET BITD

(b)LOOPNZ L1 或LOOPNE L1

(执行ADD SI,2 指令,ZF 不可能为0,

因而可用此指令代替。)

②程序的功能是:根据给定的逻辑尺0D2H

对数据区BITD 中BCD 数进行BCD 加

法;

所依据的算式是(128H+64H+16H+

2H)。

③程序执行后,DEDT 单元内容为(210H)

4.20 逐条注释下列两个程序的每条指令,

并说明它们的功能:

①LEA BX,ARRAY ;取数组ARRAY 的

偏移地址并存入寄存器BX

LEA DI,RESULT ;取数组RESULT 的

偏移地址并存入寄存器DI

MOV CL,4 ;给寄存器CL 赋初值4

AGAIN:MOV AL,[BX] ;将数组ARRAY

的第一个数存入寄存器AL

TEST AL,80H ;测试AL 的最高位

JZ NEXT ;若AL 最高位为0(正数),

转到NEXT

NEG AL ;若AL 最高位为1(负数),对

寄存器AL 中的

;数求补

NEXT:MOV [DI],AL ;将结果存入

REAULT 数组

INC BX ;BX 值加1,地址指针指向

ARRAY 数组的下

;一个数

INC DI ;DI 值加1,地址指针指向

RESULT 数组的下

;一个数

DEC CL ;寄存器CL 值减1

JNZ AGAIN ;若CL 值不为0,转向

AGAIN 继续执行

程序段功能:将数组ARRAY 中的4 个字

节数求补,结果存入数组RESULT 中

②MOV AL,0 ;将寄存器AL 清0

MOV SI,﹣1 ;给寄存器SI 赋初值﹣1

MOV CX,100 ;给寄存器CX 赋初值100

LOP:INC SI ;SI 加1

相关文档
最新文档