《单片机基础第三版》复习材料,含重点总结,考试利器(2)

2019-08-03 12:23

(C)调用指令的下一条指令的首地址 (D)返回指令的末地址

6. 以下各项中不能用来对内部数据存储器进行访问的是(A)

(A)数据指针DPTR (B)按存储单元地址或名称 (C)堆栈指针SP

(D)由R0或R1作间址寄存器

(三)其他类型题

1. 判断下列指令的合法性(合法打“√”,非法打“×”)

MOV A, @R2 (×) MOV R0, R1 (×) INC DPTR MOV PC, #2222H (×) DEC DPTR (×) RLC R0 MOV 0E0H, @R0 (√) CPL R5 (×) CLR R0 CPL F0H (×) PUSH DPTR (×) POP 30H MOVX A, @R1 (√) MOV A, 1FH (√) MOV C, 1FH MOV F0, ACC.3 (×) MOV F0, C (√) MOV P1, R3 MOV DPTR, #0FCH(×) CPL 30H (√) PUSH R0 MOV C, #0FFH (×) MOV A, #0D0H(√) 2. 利用位操作指令序列实现下列逻辑运算。 (1)D=(10H?P1.0)?(11H?CY)

MOV C, P1.0 ORL

C, /10H

MOV F0, C ORL C, 11H ANL

C, F0

MOV D, C

(2)E=ACC.2?P2.7?ACC.1?P2.0

MOV C, ACC.2 ANL C, P2.7 ORL C, ACC.1 ANL

C, P2.0

MOV E, C

3. 编写程序将内部RAM 20H ~ 23H单元的高4位写1,低4位写0。

6

√)√)×) (√) (×) (×) ( ( (√) ( 分析:就是把内部RAM 20H ~ 23H这4个单元写入0F0H。用一个DJNZ的循环。

ORG

0000H

; R0指向20H单元 ; 4个单元 ; 写入

MOV R0, #20H

MOV R1, #04H

LOOP: MOV @R0, #0F0H

INC

R0

DJNZ R1, LOOP END

; 循环4次

4. 在m和m+1单元中存有两个BCD数,将他们合并到m单元中,编写程序

完成。

ORG

0030H

; 将m单元中的BCD数送入累加器A ; 把m单元的高4位清0

; 将m单元中的BCD数移入高4位 ; m单元高4位为BCD数,低4位为0 ; 指向m+1单元

; 将m+1单元中的BCD数送入累加器A ; 把m+1单元的高4位清0 ; 指向m单元

; 将和m+1单元和m单元内容合并 ; 合并后结果送m单元

MOV R0, #m MOV A, @R0 ANL

A, #0FH

SWAP A

MOV @R0, A INC

R0

MOV A, @R0 ANL

A, #0FH

DEC R0 ORL

A, @R0

MOV @R0, A END

5. 将内部RAM中从data单元开始的10个无符号数相加,其和送sum单元。

假定相加结果小于255。编写程序完成。

ORG

0030H

MOV R0, #10 ; 给 R0 置计数器初值 MOV R1, # data CLR

; 数据块首址送R1

A ; A清零

7

LOOP: ADD

INC

A, @R1 ; 加一个数

R1 ; 修改地址,指向下一个数

; R0 减 1,不为零循环

DJNZ R0, LOOP

MOV sum, A ; 存 10 个数相加和 END

6. 假定8位二进制带符号数存于R0中,要求编写一个求补(取反)程序,所

得补码放入R1中。

分析:对存于R0中的二进制带符号数,如果是正数,则将其变成绝对值相等的负数(用补码表示);如果是负数(用补码表示),则将其变成绝对值相等的正数。

ORG

0030H

; 将带符号数送入A

MOV A, R0 CPL ADD

A A, #01H

; 末位加 1 ; 补码存入R1

MOV R1, A END

第4章 单片机汇编语言程序设计

(一)填空题

1. 假定A=40H,R1=23H,(40H)= 05H。执行以下两条指令后,A=(25H),

R1=(40H),(40H)=(03H)。

XCH

A, R1

; A=23H,R1=40H ; A=20H,(40H)=03H

XCHD A, @R1

2. 假定80C51的晶振频率为6 MHz,执行下列程序后,在P1.1引脚产生的方

波宽度为(5.804ms) START: SETB P1.1 DL: DL0: DL1:

; P1.1置1(1周期) ; 30H置初值(1周期) ; 31H置初值(1周期)

; 31H减1,不为0重复执行(2周期) ; 30H减1,不为0转DL0(2周期)

8

MOV 30H, #03H MOV 31H, #0F0H DJNZ 31H, DL1 DJNZ 30H, DL0

CPL P1.1

; P1.1取反(1周期) ; 转DL(2周期)

SJMP DL

方波宽度={[(2*15*16+2+1)*3]+[(2*15*16+2+1)*3+1+2+1]}*2=5804?s

3. 下列程序中,X、Y和Z为输入的8位无符号二进制数,F为输出的逻辑运

算结果。试画出该程序所模拟的组合逻辑电路。

MOV A, X ANL

A, Y

MOV R1, A MOV A, Y XRL CPL ORL

A, Z A A, R1

MOV F, A

F=?X?Y???Y?Z? X&?1Y&F?1&Z

4. 分析下列跳转程序,程序中A与30H单元中的数都是符号数,说明当(A=

(30H))时转向LOOP1,当(A>(30H))时转向LOOP2,当(A<(30H))时转向LOOP3。

MOV R0, A ANL

A, #80H

; R0←A

9

JNZ NEG ; A<0,转NEG

MOV A, 30H ANL JNZ

A, #80H LOOP2

; A≥0,(30H) <0,转LOOP2 ; A≥0,(30H)≥0,转COMP

SJMP COMP

NEG: MOV A, 30H

ANL JZ

A, #80H LOOP3

; A<0,(30H) ≥0,转LOOP3

COMP: MOV A, R0

CJNE A, 30H, NEXT SJMP LOOP1

NEXT: JNC

JC

LOOP2 LOOP3

; A≠(30H),转NEXT ; A=(30H),转LOOP1 ; A>(30H),转LOOP2 ; A<(30H),转LOOP3

综上分析可知,当A=(30H)时转向LOOP1,A>(30H)时转向LOOP2,A<(30H)时转向LOOP3。

5. 假定80C51的晶振频率为6 MHz,下列程序的执行时间为(30.696ms)。已

知程序中前2条指令机器周期数为1,后4条指令机器周期数为2。

MOV R3, #15

DL1: DL2:

MOV R4, #255 MOV P1, R3 DJNZ R4, DL2 DJNZ R3, DL1

RET

1周期 1周期 2周期 2周期 2周期 2周期

执行时间:T={[(2+2)*255+2+1]*15+2+1}*2=30696?s

(二)编程题

1. 把长度为10H的字符串从内部RAM的输入缓冲区inbuf向位于外部RAM的

输出缓冲区outbuf传送,一直进行到遇见回车或整个字符串传送完毕,试编程实现。

10


《单片机基础第三版》复习材料,含重点总结,考试利器(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:六国论练习题(二)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: