微机原理习题解答第四章

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

第四章

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

MOV CX,1000H

MOV BX,2000H

MOV [CX],AL

XCHG CX,BX

MOV DH,[BX]

MOV DL,01H

XCHG CX,BX

MOV [BX],DL

HLT

解:寄存器及存储单元的内容如下:

AL=10H

BL=00H

BH=20H

CL=00H

CH=10H

DL=01H

DH=10H

(1000H)=10H

(2000H)=01H

2.要求同题4.1,程序如下:

MOV AL,50H

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

解:寄存器及存储单元的内容如下:

BL=00H

BH=20H

CL=00H

CH=30H

DL=20H

DH=20H

BP=1000H

(1000H)=50H

(2000H)=20H

3.自1000H单元开始有一个100个数的数据块,若要把它传送到自2000H开始的存储区中去,可以采用以下三种方法实现,试分别编写程序以实现数据块的传送。

(1)不用数据块传送指令。

(2)用单个传送的数据块传送指令。

(3)用数据块成组传送指令。

解:(1)LEA SI,1000H

LEA DI,2000H

MOV CX,100

L1: MOV AX,[SI]

MOV [DI],AX

LOOP L1

HLT

(2)LEA SI,1000H

LEA DI,2000H

MOV CX,100

CLD

L1:MOVSB

LOOP L1

HLT

(3)LEA SI,1000H

LEA DI,2000H

MOV CX,100

CLD

REP MOVSB

HLT

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

解:LEA SI,1000H

LEA DI,1050H

ADD SI,63H

ADD DI,63H

MOV CX,100

STD

REP MOVSB

HLT

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

解:LEA SI,0500H

LEA DI,1000H

MOV CX,100

N1:MOV AL,[SI]

TEST AL,0

JZ,N2

MOV [DI],AL

INC SI

INC DI

LOOP N1

N2:HLT

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

MOV AX,0

MOV CL,100

N1:MOV DL,[BX]

ADD AL,DL

ADC AH,0

INC BX

DEC CL

JNZ N1

MOV 0264H,AL

14.若在0500H单元中有一个数X:

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

(2)X×4。

(3)X×10(假定X×10≤255)。

解:(1)LEA BX,0500H

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)LEA BX,0500H

MOV AL,[BX]

ADD AL,AL

MOV DL,AL

ADD AL,AL

ADD AL,AL

ADD AL,DL

MOV [BX],AL

33.若在0200H和0201H单元中有两个正数,编写一个程序比较它们的大小,并且把大的数放在0201H单元中。

解:MOV AL,[0200H]

CMP AL,[0201H]

JNS LAG

JMP NEXT

LAG:XCHG AL,[0201H]

NEXT:

38.若自1000H单元开始有1000个无符号数,把它们的最大值找出来,并且放在2000H单元中。

解:LEA BX,[1000H]

MOV AX,[BX]

INC BX

INC BX

MOV CX,999

AGAIN:CMP AX,[BX]

JNC NEXT

MOV AX,[BX]

NEXT: INC BX

INC BX

LOOP AGAIN

MOV [2000H],AX

HLT

相关文档
最新文档