微机原理作业及答案讲解

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

微机原理作业

第三章汇编语言程序设计

题3.1A

在下列程序运行后,给相应的寄存器及存储单元填入运行的结果:

MOV AL,10H

MOV CX,1000H

MOV BX,2000H

MOV [CX],AL BH XCHG CX,BX

MOV DH,[BX] CL

MOV DL,01H

XCHG CX,BX CL

MOV [BX],DL

HLT DL AL=1OH

BL=OOH

BH=2OH

CL=OOH

CH=1OH

DH=1OH

(10O0H)=lOH

(200OH)=0lH

题 3.1B DL

要求同题3.1A程序如下;

MOV AL,50H AL

MOV BP,1000H

MOV BX,2000H

MOV [BP],AL

MOV DH,20H

MOV [BX],DH

MOV DL,01H

MOV DL,[BX]

MOV CX,3000H

HLT

AL=5OH

BL=OOH

BH=20H

CL=OOH

CH=30H

DL=20H

DH=2OH

BP=100OH

(10OOH)=5OH

(20OOH)=20H

题3.2,如在自1000H单元开始有一个100个数的数椐块。要把它传送到自2000H开始的存储区中去,用以下三种方法,分别编制程序;

1;不用数据块转送指令;

2;用单个转送的数据块转送指令;

3;用数据块成组转送指令;

(1) LEA SI, 1OOOH

LEA DI, 200OH

MOV CX, 100

L1: MOV AX, [SI]

MOV[DI],AX

LOOPLl

HLT

(2) LEASI,100OH

LEADI,2000H

MOVCX,100

CLD

L1: MOVSB

LOOP L1

HLT

(3) LEASI, 100OH

LEADI, 200OH

MOVCX, 100

CLD

REP MOVSB

HLT

题3.3A 利用变址寄存器遍一个程序,把自1000H单元内开始的100个数转送到自1070H开始的存储区中去,

LEASI,100OH

LEADI,1070H

MOVCX,100

CLD

REP MOVSB

HLT

题3.3B 要求用3.3A,源地址为2050H,目的地址为2000H,数据块长度为50,

LEASI,205OH

LEADI,200OH

MOVCX,50

CLD

REPMOVSB

HLT

题3.4 编一个程序,把自1000H单元开始的100个数转送至1050H开始的存储区中(注意数据区有重叠)。

LEASI, 100OH

LEADI,1050H

ADDSI, 63H

ADDDI, 63H

MOVCX, 100

STD

REPMOVSB

HLT

题3.5A 在自0500H单元开始,存有100个数。要求把它传送到1000H开始的存储区中,但在传送过程中要检查数的值,遇到第一个零就停止传送。

LEA SI, 050OH

LEA DI, 10OOH

MOV CX, 100

N1: MOV AL, [SI]

CMP AL, 0

JZ N2

MOV[DI],AL

INC SI

INC DI

LOOPN1

N2: HLT

题3.5B 条件同题3.5A,但在传送过程中检查数的值,零不传送,不是零则传送至目的区。

题3.6 把在题3.5A中指定的数据块中的正数,传送到自1000H开始的存储区。

题3.7 把在题3.5A中指定的数据块中的正数,传送到自1000H开始的存储区;而把其中的负数,传送到自1100H开始的存储区。且分别统计正数和负数的个数,分别存入1200H和1201H 单元中。

HLT

题3.8A 自0500H单元开始,有10个无符号数,编一个程序求10个数的和(用8个位数运算指令),把和放到050A及050B单元中(和用两个字节表示),且高位在050B单元。

题3.8B 自0200H单元开始,有100个无符号数,编一个程序求这100个数的和(用8位数运算指令),把和放在0264H 和0265H单元(和用两字节表示),且高位在0265H单元。

题3.9 题同3.8,只是在累加时用16位运算指令编程序。

题3.10A 若在0500H单元中有一个数x:

1.利用加法指令把它乘2,且送回原存储单元(假定x*2后仍为一个字节);

2.x*4;

3.x*10 (假定x*10 ≤255)。

(1) LEA BX, 050OH

MOV AL, [BX]

ADD AL, AL

MOV[BX],AL

(2) LEA BX, 0500H

MOV AL, [BX]

ADD AL, AL

ADD AL, AL

MOV[BX],AL

(3)LEABX, 050OH

MOV AL, [BX]

ADDAL, AL

MOVDL, AL

ADDAL, AL

ADD AL,AL

ADDAL, DL

MOV[BX],AL

题3.10B

题意与要求同题3.10A,只是x*2后可能为两个字节。

题3.11

若在存储器中有两个数a和b(它们所在地址用符号表示,下同),编一个程序实现a*10+b (a*10以及“和”用两字节表示)。

题3.12

若在存储中有数a,b,c,d(它们连续存放),编一个程序实现

((a*10+b)*10+c)*10+d (和≤65535)

相关文档
最新文档