好文档 - 专业文书写作范文服务资料分享网站

单片机部分答案第四版北航马忠梅

天下 分享 时间: 加入收藏 我要投稿 点赞

精品文档

? 1.22 已知(A)=7AH,(R0)=30H,(30H)=A5H,PSW=80H。问执行(单独执行)

以下各指令的结果

XCH A,R0; A=30H, R0=7AH XCH A,30H; A=A5H XCH A,@R0; A=A5H

XCHD A,@R0; A=75H ;二者低4位互换

SWAP A; A =A7H; A高低4位互换

ADD A, R0; A = AAH, Cy=0, OV=1(a6 a7 =1) ADD A,30H; A= 1FH, Cy=1, OV=0 ADD A, A,#30H; A= AAH, Cy=0, OV=1;

ADDC A,30H; A= 20H, Cy=1, OV=0; 因为PSW的Cy=1 SUBB A,30H; A= D4H, Cy=1, OV=1; 因为PSW的Cy=1 SUBB A,#30H; A= 49H, Cy=0, OV=0; 因为PSW的Cy=1

? 1.24 已知(A)=83H,(R0)=17H,(17H)=34H。执行以下指令后A=? ANL A,#17H ; 逻辑与 (A)=03H ORL 17H,A ;逻辑或 (17H)=37H XRL A,@R0 ; 异或(A)=34H

CPL A ; 取反 (A)= CBH

? 1.25 将内部RAM20H、21H、22H,连续三个单元的内容以此放入 2FH、2DH、2EH单元

MOV R0, #20H MOV R1, #2FH LOOP : MOV A, @R0

MOV @R1, A INC R0 DEC R1

CJNE R0, #23H, LOOP SJMP $

? 1.34 外部数据RAM在2000H~2100H区域有一个数据块,将他们移动到3000H~3100H

区域

解一:

MOV DPTR, #2000H MOV P2, #30H MOV R1, #00H LOOP : MOVX A, @DPTR MOV X @R1, A INC DPTR INC R1

CJNE R1, #00H, LOOP INC P2

MOV X A, @DPTR MOVX @R1, A 解二:

MOV DPTR, #2000H

----------------------------------------------------

精品文档

MOV P2, #30H MOV R1, #00H LOOP : MOV X A, @DPTR MOV X @R1, A INC DPTR INC R1

CJNE R1, #00H, LOOP INC P2 MOV A, DPH

CJNE A,#21H,NEXT NEXT1: MOVX A, @DPTR

MOVX @R1, A SJMP $ NEXT: INC DPTR

SJMP NEXT1 解三:

MOV DPTR, #2000H MOV R5, #00H MOV A, #00H MOV R1,A LOOP : MOV A,R1

MOV X A, @A+DPTR MOV X @R0, A

MOV DPTR, #3000H MOV A, @R0 MOVX @A+DPTR, A INC R1 DJNZ R5, LOOP MOV DPTR, #2100H MOVX A, @DPTR MOV DPTR, #3100H MOVX @DPTR,A

? 1.35 外部数据RAM从2000H开始有100个数据块,将他们移动到2030开始的单元 解一:

MOV DPTR, #2000H MOV R4,#64H MOV P2, #10H LOOP1: MOVX A, @R1

MOV R1, #00H MOVX @DPTR, A MOV R4,#64H INC R1 LOOP : MOVX A, @DPTR INC DPTR

MOV X @R1, A DJNZ R4, 64H, LOOP1 INC DPTR INC R1

DJNZ R4, 64H, LOOP MOV DPTR, #2030H

----------------------------------------------------

精品文档

MOV P2, #10H MOV R1, #00H 解二:

MOV DPTR, #2000H MOV R3,#64H MOV P2, #10H DJNZ R3, LOOP NEXT: MOV R1, #00H SJMP $ MOV R4,#64H LOOP : MOVX A, @DPTR

MOVX @R1, A INC DPTR INC R1 NEXT1: DJNZ R4, LOOP

LOOP1: MOV DPTR, #1000H

MOV P2, #20H MOV R1, #30H

习题参考答案(P.79)

习题3. 8051主要的存储空间是什么?为什么两个RAM的空间不同?

答:8051单片机的存储空间分为数据RAM和代码ROM,其中数据RAM又分为片内RAM和片外RAM。

片内RAM的地址为8位,由单片机指令直接在单片机内部寻址访问,而片外RAM的地址为16位,只能由单片机的MOVX指令通过外部总线访问。

习题4. 编一段程序,把8位口新的输入值和前一次的输入值进行比较,然后产生一个8位数。这个数中的位为“1”的条件是:仅当新输入的位为“0”,而前一次输入的位为“1”。 答:设该8位口为P1,新产生的8位数为x: unsigned char x; x=P1; x&=~P1;

习题6. 按给定的存储类型和数据类型,写出下列变量的说明形式: up,down 整数,使用堆栈存储;

first,last 浮点数,使用外部数据存储器存储; cc,ch 字符,使用内部数据存储器存储。

答:堆栈只能存储内部RAM字节内容,必须在idata区:(复位后SP=07H,但是07H中存放堆栈地址,上电复位后典型寄存器的值?) int idata up,down;

float xdata first,last;

char idata cc,ch; 或char data cc,ch; 习题7.

判断下列关系表达式或逻辑表达式的运算结果(1或0) 1、10==9+1; è1 2、0&&0; è0 3、10&&8; è1

4、8||0; è1

----------------------------------------------------

精品文档

5、!(3+2); è0

6、设x=10,y=9;x>=8&&y<=x; è1 习题8.

设x=4,y=8,说明下列各题运算后,x,y和z的值分别是多少? 1、z=(x++)*(--y); è x=5,y=7,z=28 2、z=(++x)-(y--); è x=5,y=7,z=-3 3、z=(++x)*(--y); è x=5,y=7,z=35 4、z=(x++)+(y--); è x=5,y=7,z=12 习题9. 分析下列运算表达运算顺序。

1、c=a|| (b); è( b)是为0或1(逻辑值),若a=0则a|| (b), 结果赋给c

2、x+=y-z; è y-z,x+(y-z),结果赋给x

3、-b>>2; è -b,结果右移2位。注: -b不是取反也不能确定为负数;取反一般是变成2进制然后按位取反。如b=-3,即0FDH,则-b=3,而不是0FD按位取反 4、c=++a%b--;è a=a+1,a%b,b=b-1,%结果赋给c

5、!m&n; è !m,若结果为1再和n相与。X(不是&&) !m,再和n相与 6、a

习题6. 用选择分支编写程序,把输入的一个数字按下列对应关系显示。当输入Z时,程序结束。

#include #include main( ) {

unsigned char k;

----------------------------------------------------

精品文档

do {

scanf(“%c”,&k); switch(k) {

case ‘1’: printf(“A”); break; case ‘2’: printf(“B”); break; case ‘3’: printf(“C”); break; case ‘4’: printf(“D”); break; default: printf(“?”); break; }

}while( k ! = ‘Z’ ); while( 1 ); }

习题7. 若在C中的switch操作漏掉break,会发生什么? 答:若在case语句中漏掉break,则程序执行case选择部分程序后不会按照要求退出switch语句,而是继续执行下一个case语句选择的内容。

3

习题8. 编写程序,输出x数值表,x为0—10。

main() {

unsigned char x; unsigned int y; for(x=0;x<11; x++) {

----------------------------------------------------

单片机部分答案第四版北航马忠梅

精品文档?1.22已知(A)=7AH,(R0)=30H,(30H)=A5H,PSW=80H。问执行(单独执行)以下各指令的结果XCHA,R0;A=30H,R0=7AHXCHA,30H;A=A5HXCHA,@R0;A=A5HXCHDA,@R0
推荐度:
点击下载文档文档为doc格式
7xlof5n6y157eja0pqkz5136q5t3m0006t0
领取福利

微信扫码领取福利

微信扫码分享