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