《单片机作业答案2.doc》由会员分享,可在线阅读,更多相关《单片机作业答案2.doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流单片机作业答案2.精品文档.作业答案2第2章 MCS-51单片机指令系统与汇编语言程序设计4. 假定累加器A中的内容为30H,执行指令1000H:MOVC A,A+PC后,把程序存储器( 1031H )单元的内容送入累加器A中。6. 指出下列指令中的源操作数的寻址方式(1)MOV R0,#30H 立即寻址(2)MOV A,30H 直接寻址(3)MOV A,R0 寄存器间接寻址(4)MOVX A,DPTR 寄存器间接寻址(5)MOVC A,A+DPTR 变址寻址(6)MOV P1,P2 直接寻址(7)MOV C,30H 位寻址(8)MUL AB
2、 寄存器寻址(9)MOV DPTR,#1234H 立即寻址(10)POP ACC 直接寻址(11)SJMP $ 相对寻址7. 指出下列各指令在程序存储器中所占的字节数(1)MOV DPTR,#1234H 3字节(2)MOVX A, DPTR 1字节(3)SJMP LOOP 2字节(4)MOV R0,A 1字节(5)AJMP LOOP 2字节(6)MOV A,30H 2字节(7)LJMP LOOP 3字节(8)MOV B,#30H 2字节15设堆栈指针(SP)=60H,片内RAM中的(30H)=24H,(31H)=10H。执行下列程序段后,61H, 62H, 30H, 31H, DPTR及SP中
3、的内容将有何变化?PUSH 30H PUSH 31H POP DPLPOP DPHMOV 30H, #00H MOV 31H, #0FFH解:结果为: 61H、62H单元为堆栈单元,其内容已被弹出栈。 (30H)=00H (31H)=0FFH (DPTR)=2410H(SP)=60H17完成以下的数据传送过程(1)R1的内容传送到R0。(2)片外RAM 20H单元的内容送R0。(3)片外 RAM 20H单元的内容送片内RAM 20H单元。(4)片外RAM 1000H单元的内容送片内 RAM 20H单元。(5)ROM 2000H单元的内容送R0。(6)ROM 2000H单元的内容送片内RAM 2
4、0H单元。(7)ROM 2000H单元的内容送片外RAM 20H单元。解:CPU内部RAM用MOV指令,不能在两个Rn/Ri之间直接传送。片外 RAM用MOVX指令:低256B,可在A与Ri之间传送;64KB范围内,可在A与DPTR之间传送。 ROM用MOVC指令,只能用MOVC A,A+DPTR/MOVC A,A+PC。(1)R1的内容传送到R0 ; MOV A, R1 MOV R0, A(2)片外RAM 20H单元内容送R0 ; MOV R1, #20H MOVX A, R1 MOV R0, A(3)片外 RAM 20H单元的内容送片内RAM 20H单元; MOV R0, #20H MOV
5、X A, R0 MOV 20H, A(4)片外RAM 1000H单元的内容送片内 RAM 20H 单元; MOV DPTR, #1000H MOVX A, DPTR MOV 20H, A(5)ROM 2000H单元的内容送R0单元; CLR A MOV DPTR, #2000H MOVC A,A+DPTR MOV R0, A(6)ROM 2000H 单元的内容送片内RAM 20H单元; CLR A MOV DPTR, #2000H MOVC A,A+DPTRMOV 20H, A(7)ROM 2000H单元的内容送片外RAM 20H单元。 CLR A MOV DPTR, #2000H MOVC
6、A,A+DPTR MOV R0, #20H MOVX R0, A19编程将片内RAM的40H60H单元中内容送到片外RAM以3000H开始的单元中。并将原片内RAM数据块区域全部清0。解: ORG 0000HLJMP MAINORG 0030HMAIN:MOV SP, #60HMOV R7,#21HMOV R1,#40HMOV DPTR,#3000HLOOP: MOV A,R1MOVX DPTR,A MOV R1, #00HINC R1INC DPTRDJNZ R7,LOOPSJMP $END23设有100个有符号数,连续存放在片外RAM以2000H为首地址的存储区中,试编程统计其中正数、负数
7、、零的个数。解: ORG 0000HLJMP MAINORG 0030HMAIN:MOV SP, #60HMOV R2,#100CLR AMOV R3,AMOV R4,AMOV R5,AMOV DPTR,#2000HLOOP:MOVX A,DPTRCJNE A,#00H,NET1INC R3SJMP NET3NET1:JB ACC.7,NET2INC R4SJMP NET3NET2:INC R5NET3:INC DPTRDJNZ R2,LOOP SJMP $END24试编一查找程序,从外部RAM首地址为2000H、长度为9FH的数据块中找出第一个ASCII码A,将其地址送到20A0H和20A1
8、H单元中。解: ORG0000HLJMPMAINORG0030HMAIN: MOV SP, #60HMOVDPTR,#2000H MOVR7,#9FHLP0: MOVX A,DPTR CJNE A, #41H, LP1 MOVR2,DPL MOVR3,DPH MOVDPTR,#20A0H MOV A, R2 MOVXDPTR,AINC DPTR MOV A, R3 MOVXDPTR,A SJMP LP2LP1: INC DPTRDJNZR7, LP0LP2: RETEND另一种方法:ORG 0000H LJMP START ORG 0030HSTART: MOV R7,#9FH MOV DPT
9、R,#2000H MOV R6,#00H ;R6为DPTR地址的低八位LOOP: MOVX A,DPTR CJNZ A,#65,LOOP1 MOV DPTR,#20A0H MOV A,R6 MOVX,DPTR,A ;把字符A的低八位地址放到20A0H地址中 INC DPTR MOV A,#20H MOVX DPTR,A ;把字符A的高八位地址放到20A1H地址中 SJMP $LOOP1: INC R6 INC DPTR DJNZ R7,LOOP SJMP $ END27编程实现将片外RAM中2400H2450H单元中的数传送到2500H2550H单元中。 解: ORG0000HLJMPMAIN
10、ORG0030HMAIN: MOV SP, #60HMOVR7,#51HMOVDPTR, #2400HLOOP: MOVXA,DPTRINCDPHMOVXDPTR,A MOVDPH, #24HINCDPTRDJNZR7 ,LOOPSJMP$END另一种方法:ORG0000HLJMPMAINORG0030HMAIN: MOV SP, #60HMOVR7,#51HMOVDPTR, #2400HLOOP: MOVXA,DPTRPUSHDPH INCDPHMOVXDPTR,A POP DPHINCDPTRDJNZR7 ,LOOPSJMP$END另一种方法:ORG0000HLJMPMAINORG0030HMAIN: MOV SP, #60HMOV30H,#24HMOV31H,#00HMOV32H,#25HMOV33H,#00HMOVR2,#51HLOOP: MOVDPH,30HMOVDPL,31HMOVXA,DPTRMOVDPH,32HMOVDPL,33HMOVXDPTR,AINC31HINC33HDJNZR2,LOOPSJMP$END