文档详情

微机原理作业及答案全解.doc

发布:2017-01-05约3.5千字共11页下载文档
文本预览下载声明
微机原理作业 汇编语言程序设计 题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单元中(和用两个字节表示),且高位在
显示全部
相似文档