微机原理复习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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,地址指针指向