一、 填空 1. 数字5、大写英文字符A、小写英文字符b的ASCII码的十六进制表示分别是(35H)、( 41H )、( 62H ); 2.130=(1000 0010)B =(82)H =BCD码的十六进制表示(130H)= BCD码的二进制表示(0001 0011 0000B); 3. 1111 1100B=(252)D =(0FC)H
4. +124的补码(8位二进制数)是(0111 1100);-124的补码(8位二进制数)是(1000 0100)。
二、 单片机第三章作业讲评
14.已知:A=7AH,R0=30H,(30H)=0A5H,PSW=80H. 试问下列程序执行后的结果是什么?注意:给什么寄存器和内存单元,就求什么的结果。 (1)ADDC A,30H 0111 1010 INC 30H 1010 0101 , CY AC F0 RS1 RS0 OV - P 1 1 1 0 0 0 0 0 1 1 0010 0000 A=20H;R0不变;(30H)=0A6H;PSW=0C1H
………………….
(2)SUBB A,30H 0111 1010 INC A 1010 0101
,CY AC F0 RS1 RS0 OV - P 1
1 0 0 0 0 1 0 1 1 1101 0100
1 1101 0101 A=0D5H; R0不变;(30H)不变;PSW=85H
(3)SUBB A,#30H 0111 1010 DEC R0 0011 0000 , CY AC F0 RS1 RS0 OV - P 1 0 0 0 0 0 0 0 1 0100 1001 A=49H;R0=2FH;(30H)=不变;PSW=01H (4)SUBB A,R0 0111 1010 DEC 30H 0011 0000
,CY AC F0 RS1 RS0 OV - P 1 0 0 0 0 0 0 0 1 ;; 0100 1001 A=49H;R0不变;(30H)=0A4H;PSW=01H D1H? 理解好给的条件,也要弄懂题目要的结果;(最低应该写出累加器和PSW的结果数值)
19.已知:A=7AH,CY=1(PSW=80H). 试问执行下列程序后的结果。 (1)MOV A,#0FH A= 0000 1111B CPL A A=1111 0000B
MOV 30H,#00H (30H)=0000 0000B ORL 30H,#0ABH (30H)=1010 1011B RL A A=11100001B A=0E1H;(30H)=0ABH
(2)MOV A,#0BBH A= 1011 1011B CPL A A=0100 0100B
RR A A=0010 0010B
MOV 40H,#0A AH (40H)=1010 1010B
A ORL A,40H A=1010 1010B A=0AAH;(40H)=0AAH
(3)ANL A,#0FFH A= 0111 1010B MOV 30H,A (30H)=0111 1010B
XRL A,30H A=0000 0000B
RLC A A=00000001B SWAP A A=0001 0000B A=10H;(30H)=7AH 000000
(4)ORL A,#0FH A= 0111 1111B
SWAP A A=1111 0111B
RRC A A=1111 1011B
XRL A,#0FH 0000 1111B ANL A,#0F0H A=1111 0100B 1111 0000B A=1111 0000B A=0F0H
理解好给的条件,也要弄懂题目要的结果;(最低应该写出累加器A的结果数值)
20.试编写出完成如下操作的程序
(1)使20H单元的高两位变0,其余位不变。
ANL 20H,#3FH ANL 20H,#0011 1111B (2)使20H单元的高两位变1,其余位不变。 ORL 20H,#0C0H
(3)使20H单元的高两位变反,其余位不变。 XRL 20H,#0C0H
(4)使20H单元的所有位变反。
XRL 20H,#0FFH CPL A
23.利用减1条件转移指令将外部始地址为DATA1的数
据块(数据块为20)传送到片内RAM 开始地址为30H的数据区。(书中答案有错误) MOV DPTR,#DATA1 MOV R0,#30H MOV R7,#20
LOOP:MOVX A,@DPTR MOV @R0,A INC DPTR INC R0
DJNZ R7,LOOP SJMP $ END
MOV R0,#DATA1 MOV R1,#30H MOV R2,#14H LOOP:MOVX A,@R0 MOV @R1,A INC R0 INC R1
DJNZ R2,LOOP SJMP $ END
三、 单片机第四章作业讲评
补充题1: 将外部RAM2000H~2030H单元有一个数据块,请编程把它们传送到片外4000H~4030H单元的RAM数据区。
MOV DPL,# 00H
MOV R5,#31H LOOP: MOV DPH,#20H
MOVX A,@DPTR MOV DPH,#40H MOVX @DPTR,A INC DPL
DJNZ R5,LOOP JSMP $ END
补充题2: 将外部ROM2000H~204FH单元有一个数据块,请编程把它们传送到片外2000H单元开始的RAM数据区。
MOV DPTR,#2000H MOV R5,#50H LOOP: MOV A,#00H
MOVC A, @A+DPTR MOVX @DPTR,A INC DPTR
DJNZ R5,LOOP JSMP $ END
25晶振频率为6MHz,编写延时20ms(毫秒)的子程序。 第一种方法——精确计算
(1+1+2+(1+2+1)*49+100*49)*2μs =10000μs =20ms
DELAY20ms:MOV R7,#49 ;1——没分号;? DELAY1:MOV R6,#100 ;1——没有;的注释 DELAY2:DJNZ R6,DELAY2 ;2——不如没有 NOP ;1
DJNZ R7,DELAY1 ;2