最新(何小海版)微机原理与接口技术部分课后习题

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

串操作指令特点:

1.可用前缀使其重复操作;

2.每操作一次自动修改SI和DI内容,当DF=0时为增量,DF=1为

减量;

3.所有源操作数地址放在SI中,在DS段,串长≤64K;

所有目标操作数地址放在DI中,在ES段,串长≤64K;

4.用重复前缀时,如果条件满足且CX ≠0 时重复,每重复一次

CX ← CX–1,否则结束重复;

5.重复操作时IP不变,中断返回后继续操作。

使用串操作指令时注意:

1.SI ←源串首(末)址

DI ←目标串首(末)址;

2.CX ←串长度;

3.设DF 值;

4.选重复前缀;

5.使用条件重复前缀时,判断结束条件(即是CX=0 还是ZF=0/1结束)

指令执行时间:

计算机中的计时单位:

(1). 指令周期:执行一条指令所花的时间;

(2). 总线周期:CPU 每访问一次内存或I/O端口所花的时间;

(3). 时钟周期(T周期):计算机主频的倒数,用T表示,即T=1 / F

1、试分别说明下列指令中源操作数和目的操作数采用的寻址方式:

答案:

目的操作数源操作数(1)MOV AX,0FFFFH 寄存器立即

(2)MOV ES,AX 寄存器寄存器

(3)XOR CL,[100H] 寄存器直接

(4)ADD [SI],DX 寄存器间寄存器

(5)MOV ES:[2000H],CL 直接寄存器

(6)SUB [BX+SI],1 基+变立即

(7)ADC AX,[BX+SI+10H] 寄存器相对基+变(8)PUSH DS 隐含寄存器(9)CLD 隐含

(10)CMP [BP+DI],CL 基+变寄存器

2、若(BX)=1123H,(SI)=1968H,位移量=0313H,(DS)=1971H,试确

定由这些寄存器和下列寻址方式产生的有效地址和物理地址:

答案:

EA 物址

(1)直接寻址;0313H 19A23H (2)用BX的寄存器间接寻址;1123H 1A833H

(3) 用BX 的寄存器相对寻址; 1436H 1AB46H (4) 用BX 和SI 的基址变址寻址; 2A8BH 1C19BH (5) 用BX 和SI 的相对基址加变址寻址。 2D9EH 1C4AEH 3、 连续执行以下指令,并在空格中填写执行指令的结果。 答案: MOV AX ,2060H AL=60H AH=20H CF= MOV DS ,AX DS=2060H AH=20H CF= ADD AL ,AH AL=80H AH=20H CF=0 INC AX AL=81H AH=20H CF=0 MOV DX ,512 DL=00H DH=02H CF=0 SUB AX ,DX AL=81H AH=1EH CF=0

第3章:汇编语言程序设计

1. 本章学习要求

(1). 应熟悉的内容:汇编语言的格式、语句行的构成。

(2). 应掌握的内容: 指示性语句、指令性语句及相互区别、作用。

(3). 应熟悉掌握的内容:各种结构的汇编语言程序设计的方法,特别是分支结构和循

环结构程序的特点和设计。

2. 本章重点难点分析:伪指令、程序设计、子程序中参数通过堆栈传递较难。通过看

例题、做作业和上机实习解决。

如:汇编程序是将由助记符号所编写的汇编语言源程序转换为计算机能直接执行的目标程序的软件,即: .ASM

MASM .OBJ LINK .EXE

上图可看出汇编语言源程序(扩展名为 .ASM)经过“汇编程序”汇编后生成二进制编码的目标程序(.OBJ),再经过“连接程序”生成可执行文件(.EXE)便可以上机执行或使用DEBUG 程序进行调试。

而指示性语句(伪指令)是告诉汇编程序如何将汇编语言源程序转换为目标程序的语句,在可执行的目标程序生成后的软件中,伪指令是看不见的。如:SEGMENT 是表示一个段的开始,ENDS 表示段结束;

而ASSUME 告诉汇编程序,将某一个段寄存器设置为存放某一个逻辑段的段址,即明确指出源程序中的逻辑段与物理段之间的关系。当汇编程序汇编一个逻辑段时,即可利用相应的段寄存器寻址该逻辑段中的指令或数据。也就是说ASSUME 是建立一个段寄存器与段名的对照表,汇编时使汇编程序能找到本段属于哪个段寄存器,在此对照表中所出现的存储器操作数,寻址时只需给出偏移地址,否则还应给出段地址。 关键字NOTHING 表示取消前面用ASSUME 伪操作对这个段寄存器的设置。

使用ASSUME 语句,仅仅告诉汇编程序关于段寄存器与定义段之间的对应关系。但它

并不意味着汇编后这些段地址已装入了相应的段寄存器中,这些段地址的真正装入,仍需要用程序来完成,且这4个段寄存器的装入略有不同。

3.本章典型例题分析:

【例1】若从0200H单元开始有100个数,编一个程序检查这些数,正数保持不变,负数都取补后送回。

DA TA SEGMENT

ORG 0200H

STRING DB 4 DUP (-55,5 DUP(6,-10,-8,9),2 DUP(-4,0))

DA TA ENDS

STACK SEGMENT PARA STACK 'STACK'

DB 100 DUP (?)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA,ES:DATA,SS:STACK

START PROC FAR

BEGIN: PUSH DS

MOV AX, 0

PUSH AX

MOV AX, DATA

MOV DS, AX

MOV ES, AX

MOV CX, 100

LEA SI, STRING

AGAIN: MOV AL, [SI]

AND AL, AL

JNS OVER ;AL>0,跳至OVER

NEG AL ;AL<0,对AL求补

OVER: MOV [SI], AL

INC SI

LOOP AGAIN

INT 3

RET

START ENDP

CODE ENDS

END BEG

【例2】数据块间的搬移程序。

程序要求把内存中一数据块(称为源数据块)传送到另一存储区(称为目的数据块)。图4-11给出源数据块和目的数据块在存储器中可能的3种情况:两块分离和有部分重叠。对于两个数据块分离的情况,如图4-11(a),数据的传送从数据块的首址开始,或者从数据块的末址开始均可。但对于有部分重叠的情况,则要加以分析,否则重叠部分部分会因“搬移”而遭破坏,从图4-11(b)和(c)可以得出以下结论:

当源数据块首址<目的块首址时,从数据块末地址开始传送数据。

当源数据块首址>目的块首址时,从数据块首地址开始传送数据。

相关文档
最新文档