微机原理作业及答案全解.doc
文本预览下载声明
微机原理作业
汇编语言程序设计 题3.1A
在下列程序运行后,给相应的寄存器及存储单元填入运行的结果:
MOV AL,10H M
MOV CX,1000H BL
MOV BX,2000H 1000H
MOV [CX],AL BH
XCHG CX,BX
MOV DH,[BX] CL
MOV DL,01H
XCHG CX,BX CL
MOV [BX],DL 2000H
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单元中(和用两个字节表示),且高位在
显示全部