资源描述:
《单片机部分答案第四版北航马忠梅.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ß1.22已知(A)=7AH,(R0)=30H,(30H)=A5H,PSW=80H。问执行(单独执行)以下各指令的结果XCHA,R0;A=30H,R0=7AHXCHA,30H;A=A5HXCHA,@R0;A=A5HXCHDA,@R0;A=75H;二者低4位互换SWAPA;A=A7H;A高低4位互换ADDA,R0;A=AAH,Cy=0,OV=1(a6a7=1)ADDA,30H;A=1FH,Cy=1,OV=0ADDA,A,#30H;A=AAH,Cy=0,OV=1;ADDCA,30H;A=20H,Cy=1,OV=0;因为PS
2、W的Cy=1SUBBA,30H;A=D4H,Cy=1,OV=1;因为PSW的Cy=1SUBBA,#30H;A=49H,Cy=0,OV=0;因为PSW的Cy=1ß1.24已知(A)=83H,(R0)=17H,(17H)=34H。执行以下指令后A=?ANLA,#17H;逻辑与(A)=03HORL17H,A;逻辑或(17H)=37HXRLA,@R0;异或(A)=34HCPLA;取反(A)=CBHß1.25将内部RAM20H、21H、22H,连续三个单元的内容以此放入2FH、2DH、2EH单元MOVR0,#20HMOVR1,#
3、2FHLOOP:MOVA,@R0MOV@R1,AINCR0DECR1CJNER0,#23H,LOOPSJMP$ß1.34外部数据RAM在2000H~2100H区域有一个数据块,将他们移动到3000H~3100H区域解一:MOVDPTR,#2000HMOVP2,#30HMOVR1,#00HLOOP:MOVXA,@DPTRMOVX@R1,AINCDPTRINCR1CJNER1,#00H,LOOPINCP2MOVXA,@DPTRMOVX@R1,A解二:MOVDPTR,#2000HMOVP2,#30HMOVR1,#00HLOO
4、P:MOVXA,@DPTRMOVX@R1,AINCDPTRINCR1CJNER1,#00H,LOOPINCP2MOVA,DPHCJNEA,#21H,NEXTNEXT1:MOVXA,@DPTRMOVX@R1,ASJMP$NEXT:INCDPTRSJMPNEXT1解三:MOVDPTR,#2000HMOVR5,#00HMOVA,#00HMOVR1,ALOOP:MOVA,R1MOVXA,@A+DPTRMOVX@R0,AMOVDPTR,#3000HMOVA,@R0MOVX@A+DPTR,AINCR1DJNZR5,LOOPMOVD
5、PTR,#2100HMOVXA,@DPTRMOVDPTR,#3100HMOVX@DPTR,Aß1.35外部数据RAM从2000H开始有100个数据块,将他们移动到2030开始的单元解一:MOVDPTR,#2000HMOVR4,#64HMOVP2,#10HLOOP1:MOVXA,@R1MOVR1,#00HMOVX@DPTR,AMOVR4,#64HINCR1LOOP:MOVXA,@DPTRINCDPTRMOVX@R1,ADJNZR4,64H,LOOP1INCDPTRINCR1DJNZR4,64H,LOOPMOVDPTR,#
6、2030HMOVP2,#10HMOVR1,#00H解二:MOVDPTR,#2000HMOVR3,#64HMOVP2,#10HDJNZR3,LOOPNEXT:MOVR1,#00HSJMP$MOVR4,#64HLOOP:MOVXA,@DPTRMOVX@R1,AINCDPTRINCR1NEXT1:DJNZR4,LOOPLOOP1:MOVDPTR,#1000HMOVP2,#20HMOVR1,#30H习题参考答案(P.79)习题3.8051主要的存储空间是什么?为什么两个RAM的空间不同?答:8051单片机的存储空间分为数据RA
7、M和代码ROM,其中数据RAM又分为片内RAM和片外RAM。片内RAM的地址为8位,由单片机指令直接在单片机内部寻址访问,而片外RAM的地址为16位,只能由单片机的MOVX指令通过外部总线访问。习题4.编一段程序,把8位口新的输入值和前一次的输入值进行比较,然后产生一个8位数。这个数中的位为“1”的条件是:仅当新输入的位为“0”,而前一次输入的位为“1”。答:设该8位口为P1,新产生的8位数为x:unsignedcharx;x=P1;x&=~P1;习题6.按给定的存储类型和数据类型,写出下列变量的说明形式:up,dow
8、n整数,使用堆栈存储;first,last浮点数,使用外部数据存储器存储;cc,ch字符,使用内部数据存储器存储。答:堆栈只能存储内部RAM字节内容,必须在idata区:(复位后SP=07H,但是07H中存放堆栈地址,上电复位后典型寄存器的值?)intidataup,down;floatxdatafirst,last;charid