当前位置:文档之家› 微机原理复习资料

微机原理复习资料

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

①MOV AX, TABLE

LEA AX, TABLE

②AND BL, OFH

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位物理地址的计算公式为:

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

首字单元的物理地址=70A0HX 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 X 2]寄存器基址加比例间址

12 MOV EAX, [ESI X 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 SECON—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)

MOVCX 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: MOVAL ,

[BX];将数组ARRAY的第一个数存入寄存器AL

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

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

NEGAL ; 若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

MOV AL, A1[SI];将数据缓冲区A1中的数存入寄存

器AL

ADD AL, A2[SI];将数据缓冲区A2中的相应数与

AL相加

MOV SUM [SI] , AL ;将结果存入数据缓冲区SUM

LOOPNZ LOP; 若CX- 1 主 0 且ZF= 0 ,转向

LOP继续执行

JZ NEXT ;若ZF= 1,转向NEXT继续执行ZERO

RET ;子程序返回

NEXT INC CX ;寄存器CX值加1

JMP ZERO ;无条件转向ZERO继续执行程序段功

能:将长度均为100的数据缓冲

区A1和A2中的相应数相加,结果存入数据

缓冲区SUM的相应位置,若相加结果为0

则退出循环。

精品资料

相关主题
文本预览
相关文档 最新文档