作业答案分析和总结.docx
第5章作业答案5-1编写程序把外部ROM从1000H开始的20个单元的内容读出,并存放在外部RAM从30H 开始的地方。解1:(法1)ORG 0000HMOV DPTR, #100011MOV RO, #20 ;循环次数MOV RI,#30H ;外部 RAMLOOP:MOVC A, ©A+DPTRMOVX R1,AINC DPTRINC RIDJNZ R0, LOOP ;循环控制END5-2如果将习题5-1读出的ROM中的内容存放到外部RAM从2000H开始的地方,乂该如何编 程?解1:ORG 0000HMOV R0, #20 ;循环次数MOV DPI,. #00HLOOP:MOV DPH,#10HMOVC A,A+DPTR ;取数到 aR中MOV DPH, #20HMOVX DPTR, A ;A中的数放到外部RAMINC DPTRDJNZ R0, LOOP ;循环控制条件END解2::分2次送数完成ORG 0000HMOV R0,#20MOV Rl.ttOOHMOV R2,#00llMOV DPTR, ti 1000HL00P1: MOV A, RIMOVC A, ©A+DPTRMOV R2,AINC RIINC R2DJNZ R0,L00P1MOV DPTR, #2000HMOV RO,#20MOV R2,#00HL00P2 : MOV A, R2MOVX DPTR, AINC R2INC DPTRDJNZ RO, L00P2END5-4两个字符串分别存放在首地址为42H和52H的内部RAM中,字符串长度存放在41H单元, 请编程比较两个字符串。若相等,则把数字0送40H单元,否则吧送40H单元。解:有一个字节不等,整个字符串不相等,所有字节相等,两字串才相等。(在计算机中,0的补码是00H, -1的补码是FFH)ORG 0000HMOV RO,#42HMOVRI,#52HMOV R2,41H ;取字符串长度LOOP:MOVA, R0CLRCSIBBA,R1JNZL00P1;相等时,比较下一字节INCROINCRIDJNZR2, LOOPMOV40H, #0;所有字符均相等,则两字串相等SJMPFINISHL00P1.MOV40H,#-l;不等,送TFINISH: END5-5若内部RAM 40H存放着数据X,并根据下式给Y赋值,设函数值丫保存于内部RAM 50H单元,编程实现此功能。1 X>0Y= 0 X=0-1 X<0解1:ORG 0000HMOV A, 40HJNZ LOOPMOV 50H, #0 ;函数值0送入50H单元SJMP FINISH LOOP:ANL A,#80H JZPOSIMOV 50H, #-lSJMP FINISH POSI:MOV 50H,#lFINISH: SJMP $ ;停机END解2:ORG 0000HVAR EQU 40HFUNC EQU 50HSTART: MOV A, VAR ;取 XJZ COMP ;为零转 COMPJNB ACC.7, POSI; X>0,转 POSIMOV A,# -1; X<0, (A)=-lSJMP COMPPOSI: MOV A, #01HCOMP: MOV FUNC, A;保存结果END