单片机原理作业(CXH)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MCS-51单片机作业
第一部分基础
练习一
1.1234?X2=2512?问这是几进制的运算?
在9进制系统中,469+??=1009
2.将下列二进制数转换为十进制数和十六进制数:
10111101B 110111101B
111011010.101B 11110111101110.111011111B
3.将下列十进制数转换为二进制数,对于小数,可以仅取4位
130 123.47 99
0.6 256 11.11
4.计算下列二进制算式:
10100110B-101B 11011110B+1101B
1110B×1011B 10111010B÷110B
5.将下列算式转换成十六进制和二进制数,对于小数,可以仅取二位十六进制数12767 60000 123.143
65535 32767 4096.3
6.计算下列算式,结果仍用十六进制数表示,仅取二位小数
123H+0EFDH 1010011011B-0FDH
0EAH×0CDH 666÷66H
练习二
1、计算题1:
0DCH O R 65H 0E9H AND 7CH 0BAH EOR 5DH
6DH AND 7EH OR 0ABH EOR 0D6H
6DH AND (7EH OR (0ABH EOR 0D6H))
2、计算题2:
123 AND 10100101B 222 EOR 200
11010110B OR 97 1DH EOR 11111111B
3、应用题1:
某计算机有一个8位并口,读入的数据存在A寄存器中,问:
(1)判断0、2、6、7位是否全为0,A才变为全0,用什么运算?
(2)判断1、3、4、5位中是否有任何一位为1,就使得A非0,用什么运算?
4、应用题2:
在Apple计算机中,磁盘存储信息中采用了“4-4编码”,即把一个字节的8 位D7 D6 D5 D4 D3 D2 D1 D0变成二个编码字节:1 D7 1 D5 1 D3 1 D1和1 D6 1 D4 1 D2 1 D0 请给出一种简便方法,将编码的两两字节还原成原来的一字节(解码)。

(用语言叙述即可)
5、应用题3:
为了破解一个用异或串连运算加密的加密程序,让一段全为00H字节的程序让其加密,结果形成以8字节为周期的被加密文:3DH 0E6H 7CH 0ABH 0FH 27H 0EDH 41H 。

请利用密文破解以下一段被加密的密文:0FFH 37H 0C2H 66H 00H 0FAH 27H 68H 。

练习三
1、请在一字节补码表示的带符号数范围中写出以下数值代码:
-96 37 -150 -100
2、请写出以下补码表示的带符号数表示的数值:
0FDH 0CDH 0FF00H 1234H
3、在二字节补码表示的带符号范围内计算以下各式结果,并判断结果的正确性
006CH+00FAH 006CH-00FAH
2E04H-7EDCH 67DCH+1E74H
3C06H-6D9EH 9005H+0EF5EH
4、应用题:
已知某大学有男、女大学生名额共2000人,如果要在计算机人事档案管理系统中给每一个大学生一个唯一的代码,并用该代码包含性别信息,请问最少要多少二进制位才能构成该代码?
第二部分硬件基础
一、问答题(回答问题时,要求简捷):
1、8051单片机芯片包含哪些主要逻辑功能部件?各有什么主要功能?
2、MCS-51单片机的EA(-)信号有何功能?在使用8031时EA(-)信号引
脚应如何处理?
3、MCS-51单片机有哪些信号需要芯片引脚以第二功能的方式提供?
4、程序计数器(PC)作为不可寻址寄存器,它有哪些特点?
5、堆栈有哪些功能?堆栈指示针(SP)的作用是什么?在程序设计时,为什么还
要对SP重新赋值?
6、MCS-51的4个I∕O口在使用上有哪些分工和特点?试比较各口的特点?
7、MCS-51单片机运行出错或程序进入死循环,如何摆脱困境?
8、什么是指令周期、机器周期和时钟周期?如何计算机器周期的确切时间?
9、使单片机复位有几种方法?复位后是机器的初始状态如何?
第三部分存储器
1、内部RAM低128单元划分为哪3个主要部分?说明各部分的使用特点。

2、对MCS-51家族器件,0E0H,0FFH,0F00H和2000H作为地址分别可以对应
那些存储空间?
3、8051单片机又外接了一片2764 EPROM芯片。

问:EA脚接高电平与低电平时,2764的首存储单元地址各为多少?
4、在什么条件下,改变R3等效于改变1BH内部RAM单元?
第四部分寻址
1、写出以下指令中“源”与“的”的寻址方式:
MOV A,#00H MOV 0,A
MOV 30H,ACC ADD A,30H
SUBB A,B MOV A,R0
MOV @R0,A MOV DPTR,#1234H
MOVC A,@A+PC MOVX @DPTR,A
JNZ LOOP SJMP stsrt
AJMP start LJMP start
CLR A SETB C
INC DPTR PUSH ACC
JMP @A+DPTR CLR 30H
二、在以下程序中,数3FH最终传到了什么单元中?
Mov A,#3FH
Mov R0,A
Mov @R0,A
三、解释“指令地址”与“指令当前PC值”的区别?二者间的联系?
第五部分指令
练习一
一、按要求写出指令:
1、将数7FH传给由R1寻址的内部RAM单元中。

MOV @R1,#7FH
2、交换A和B内容。

XCH A,B
3、将R2内容传给B。

MOV B,R2
4、将4CH单元的内容与5CH单元的内容交换。

MOV A,4CH
XCH A,5CH
XCH A,4CH
5、将数6CH传给外部RAM的2C63H单元。

MOV A,#6CH
MOV DPTR,#2C63H
MOVX @DPTR,A
6、将外部RAM的2000H单元内容传给R0所指的内部RAM单元中。

MOV DPTR,#2000H
MOVX A,@DPTR
MOV R0,A
7、将SP所指的内部RAM内容送到P2和R0所指的外部RAM单元中。

POP ACC
MOVX @R0,A
8、交换2000H和2010H外部RAM单元内容。

MOV DPTR,#2000H
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#2010H
MOVX A,@DPTR
XCH A,R7
MOVX @DPTR,A
MOV DPTR,#2000H
MOV A,R7
MOVX @DPTR,A
MOV DPTR,#2010H
9、将位单元30H与42H对换。

MOV C,30H
MOV 31H,C
MOV C,42H
MOV 30H,C
MOV C,31H
MOV 42H,C
二、写出执行以下程序后A,B的值,并汇编该程序:
1、Mov A,#3CH
Mov B,#4CH
Mov R0,B
XCH A,@R0
XCH A,B
Mov A,@R0
2、MOV DPTR,#2000H
MOV 20H,#3CH
MOV R1,#20H
MOV A,20H
MOVX @DPTR,A
XCH A,R1
MOVX A,@DPTR
XCH A,B
练习二
一、按要求写出指令:
1、将A中的数减去B中的数,结果存入A中。

CLR C
SUBB A,B
2、将B中的数减去A中的数,结果存入A中。

CLR C
XCH A,B
SUBB A,B
3、用加法指令完成将R0所指单元中的数乘2。

MOV A,@R0
ADD A,@R0
MOV @R0,A
4、将B中的数乘以A中的数。

MUL AB
5、将B中的数除以A中的数。

XCH A,B
DIV AB
6、将R1所指单元内容增1。

INC @R1
7、将R0所指的二字节单元(R0指在低字节上)内容增1。

MOV A,@R0
ADD A,#01H
MOV @R0,A
INC R0
8、R2R3:=R4R5-R6R7
CLR C
MOV A,R5
SUBB A,R7
MOV R3,A
MOV A,R4
SUBB A,R6
MOV R2,A
二、写出以下程序执行后A、C、OV、的值:
1、MOV A,#7FH
ADD A,#9CH
2、SETB C
MOV A,#80H
SUBB A,#80H、、、
3、MOV A,#40H
MOV B,#10H
DIV AB
4、MOV A,#0C0H
MOV B,A
MUL AB
5、MOV A,#0FFH
MOV B,A
INC A
DEC B
ADD A,B
练习三
一、按要求写出指令:
1、R1或上R2。

MOV A,R1
ORL A,R2
MOV R1,A
2、R1与上R0所指单元。

MOV A,R1
ANL A,@R0
MOV R1,A
3、用移位指令实现将R0所指单元乘2。

MOV A,@R0
RLC A
MOV @R0,A
4、用移位指令实现将R2R3除以2。

MOV A,R2
MOV C,ACC.7
RRC A
MOV 31H,A
MOV A,R3
RRC A
MOV 30H,A
5、取R5的补数,仍存于R5中。

MOV A,R5
CPL A
INC A
MOV R5,A
6、取反由A所指的内部RAM单元。

MOV R0,A
MOV A,@R0
CPL A
MOV @R0,A
7、A异或上R1R0所指的外部RAM单元。

MOV R3,A
MOV DPH,R1
MOV DPL,R0
MOVX A,@DPTR
XRL A,R3
二、写出以下程序执行后A中的值:
1、MOV B,#3EH
MOV A,#0A5H
CPL A
XRL A,B
2、CLR C
MOV A,#75H
RRC A
RR A
3、ORL A,#5AH
RL A
ANL A,#94H
练习四
一、手工汇编以下程序,并分析程序执行后A中的值:
1、SETB C
CLR A
L:CPL A
SUBB A,#0FFH
JNC L
2、MOV A,#3CH
MOV R3,#2CH
L:DEC A
DJNZ R3,L
3、7FE0H:MOV A,#3FH
AJMP L1
L0:CPL A
L1:MOV B,#02H
MUL AB
JC L0
二、按要求写出小程序:
1、比较B与数7FH,不相等时转到LNT。

MOV R0,B
CJNE R0,#7FH,LNT
LNT:
SJMP $
END
2、将R0所指的20个单元清0,R0指在最低地址单元上。

MOV R7,#20
LOOP:MOV A,@R0
CLR A
MOV @R0,A
INC R0
DJNE R7;LOOP
3、将A异或上B,并且如果A低半字节为0,则转移到L0,否则转到L1。

XRL A,B
ANL A,#0FH
CJNE A,#00H,L1
4、按R0所指的单元中的第6位(从0算起)如果为1,则转到LK。

MOV A,@R0
ANL A,#0100 0000B
JNZ LK/(CJNE A,#00H,LK)
LK:SJMP $
END
5、利用RET指令跳转到1234H。

MOV A,#12H
MOV B,#34H
PUSH A
PUSH B
RET
三、错误判断:
1、逐句判断:
LL:MOV R2,#20H ;子程序入口为LL
MOV DPTR,5C00H
L0:MOV R1,F0H
MOV A,@DPTR
XCH B,A
MOV A,@R2
CJNE B,#70H,L1
L1:JC C,L2
MOV @R1,B
MOV @DPTR,A
L2:INC R2
PUSH R2
DEC DPTR
POP F0H
MOV R1,R2
POP ACC
RET
2、有人编了一个子程序,想完成:“将30H开始的16个数中大于等于80H的单元
内容放入50H以后的相应单元中”。

程序有错,请逐行改正。

(10个地方有错)有错程序修改程序
MOV R0,#30H
MOV R7,#50H
LOOP:MOV R6,16H
MOV A,R0
JNB ACC.8,NPUT
MOV @R7,A
INC R0
NPUT:INC R7
DJNZ R6,LOOP
第六部分小程序编制
一、简单小程序编制:
注:所有多字节数的低字节都在低地址;R0或R1均指向内部RAM的最低字节。

1、将30H、31H单元内容与T0计数器的TL0、TH0交换。

保持其它R(R是指
寄存器)和M(M是指存储器)不变。

MOV A,TL0
XCH A,30H
MOV TL0,A
INC T0
MOV A,TH0
XCH A,31H
MOV TH0,A
2、将30H、31H单元的内容分别与5C30H、5C31H单元的内容交换。

MOV DPTR,#5C30H
MOVX A,@DPTR
XCH A,30H
MOVX @DPTR,A/(MOV 30H,A)
MOV DPTR,#5C31H
MOVX A,@DPTR
XCH A,31H
MOVX @DPTR,A
3、将30H、31H单元的内容分别与R0指向的两字节单元的内容交换,保持R和M不变
MOV A,@R0
XCH A,30H
MOV @R0,A
INC R0
MOV A,@R0
XCH A,31H
MOV @R0,A
4、将30H、31H单元的内容分别与DPTR指向的两字节单元的内容交换。

5、将30H、31H单元的内容分别存入5C30H、5C31H单元中。

MOV A,30H
MOV DPTR,#5C30H
MOVX @DPTR,A
MOV A,31H
MOV DPTR,#5C31H
MOVX @DPTR,A
6、将30H、31H单元内容(内容为一个两字节的数,高字节存31H单元,
低字节存30H单元)加上数03C4H后存入5C30H、5C31H单元。

MOV A,30H
ADD A,#0C4H
MOV DPTR,#5C30H
MOVX @DPTR,A
MOV A,31H
ADD A,#03H
MOV DPTR,#5C31H
MOVX @DPTR,A
7、将30H、31H单元的内容(内容为一个两字节的数,高字节存31H单元,
低字节存30H单元)减去数03C4H后存入5C30H、5C31H单元。

8、将30H、31H单元内容(内容为一个两字节的数,高字节存31H单元,
低字节存30H单元)除以2后存入5C30H、5C31H单元。

9、将30H、31H单元内容(内容为一个两字节的数,高字节存31H单元,
低字节存30H单元)乘以2后存入5C30H、5C31H单元。

10、将30H、31H单元内容(内容为一个两字节的数,高字节存31H单元,
低字节存30H单元)减1。

保持其它R和M不变。

11、将30H、31H单元内容(内容为一个两字节的数,高字节存31H单元,
低字节存30H单元)加1。

保持其它R和M不变。

12、将外部RAM中的5C30H、5C31H单元内容(内容为一个两字节的数,
高字节存5C31H单元,低字节存5C30H单元)乘以2。

13、将外部RAM中的5C30H、5C31H单元内容(内容为一个两字节的数,
高字节存5C31H单元,低字节存5C30H单元)除以2。

14、将30H的低半字节和31H单元的高半字节交换。

15、将30H的高半字节和31H单元的高半字节交换。

16、将30H、31H单元的4位16进制数的中间两位数交换。

17、如果引脚INT0为低,则,位30H改为它的值与P0口最低位的“反”相
“与”后的值;否则,清30H位。

18、如果引脚INT0为低,则,位30H改为它的值与P0口最高位的“反”相
“或”后的值;否则,清30H位。

19、如果引脚INT0为高,则,位30H改为它的值与P0口最低位相“或”后
的值;否则,取反30H位。

20、如果引脚INT0为低,则,A的最低位与A的最高位对调;否则,清除A。

21、如果引脚INT1为高,则,A的最低位改为它的值与A的最高位的“反”
相“与”后的值;否则,取反A。

22、改变30H单元为加上数0F7H后的值,如果产生进位,则,设置F0标志;
否则,清除F0标志。

23、改变30H单元为减去数0F7H后的值,如果产生进位,则,设置F0标志;
否则,清除F0标志。

24、如果30H内容等于数80H,则,P1.0置位;否则,P1.0清零。

保持其它
R和M不变。

25、改变30H、31H单元内容为乘以2后的值,如果产生进位,则,工作寄存
器换用寄存器组1。

26、改变30H、31H单元内容为除以2后的值,如果余数为1,则,工作寄存
器换用寄存器组3。

27、已知晶振频率为8MHZ,编一个子程序,延时150微秒。

保持其它R和
M不变。

28、已知晶振频率为6MHZ,编一个子程序,延时30微秒。

保持其它R和
M不变。

29、将从10H开始的64单元内容异或数5AH。

保持其它R和M不变。

30、将由R0寻址的32个单元内容清为零。

保持其它R和M不变。

31、将由R0寻址的32个单元内容移到R1寻址的单元中。

保持其它R和M
不变。

32、将由R0寻址的16个单元内容改为与R1寻址的单元相“异或”后的值。

保持其它R和M不变。

33、将由R0寻址的32个单元内容改为与R1寻址的单元相“或”后的值。

保持其它R和M不变。

34、将由DPTR寻址的100个单元中找出第一个内容为00H的单元,其地址
存入30H、31H。

35、将从5C00H开始的100个单元内容移到5E00H开始的单元中。

36、将从5C00H开始的100个单元内容改为与5E00H开始的单元相“或”后
的值。

37、将从5C00H开始的100个单元内容改为与5E00H开始的单元相“异或”
后的值。

38、将从5C00H开始的100个单元中找出第一个内容为00H的单元,其地址
存入30H、31H。

39、将从5C00H开始的100个单元中找出第一个内容不为00H的单元,其地址
存入30H、31H。

40、将从5C00H开始的100个单元中找出最大的数和存该数的单元,数存入
40H,地址存入30H,31H。

41、将从5C00H开始的100个单元中找出最小的数和存该数的单元,数存入
40H,地址存入30H,31H。

42、将从5C00H开始的100个单元中找出第一个偶数和存该数的单元,数存入
40H,地址存入30H,31H。

43、将从5C00H开始的100个单元中找出第一个奇数和存该数的单元,数存
入40H,地址存入30H,31H。

44、编查表子程序,按40H中的索引数查出存在5C00H中的100个三字节数,
存入30H,31H,32H。

45、编多分支转移程序段,按40H中的索引数,取转移地址表中的两字节地址,
进行跳转。

46、将R0指向的三字节带符号数取负后存回。

47、将R0指向的三字节数取R2R3乘以R4的积。

48、将R0指向的二字节带符号数乘以2,校验是否溢出。

49、将R0指向的二字节带符号数除以2。

50、一字节带符号数R2R3=R4乘以R5。

51、将R0指向的二字节数乘以10。

52、将R0指向的2n字节的单字节BCD码转换成压缩BCD码,放于(R1)指向的
n字节中。

53、将R0指向的n字节的压缩BCD码转换成单字节BCD码,放于(R1)指向的
2n字节中。

相关文档
最新文档