
X, X>0
Y= 20H, X=0
X
编程根据x的值求y值并放回原单元。
答:START: MOV A,30H
JZ ED
MOV A,#05H
:
ED: SJMP $
2.MCS-51单片机有哪几种寻址方式?各寻址方式所对应的寄存器或存储器空间如何?
答:立即寻址 对应程序存储器
直接寻址 对应内部数据存储器和SFR
寄存器寻址 对应工作寄存器R0~R7,A,B,DPTR
寄存器间接寻址 对应片内RAM:@R0,@R1,SP,片外RAM:@R0,@R1,@DPTR
变址寻址 对应程序存储器:@A+PC,@A+DPTR
相对寻址 对应程序存储器256字节范围内:PC+偏移量
位寻址 对应片内RAM的位寻址区(20H~2FH字节地址),某些可位寻址的SFR
3.访问特殊功能寄存器SFR可以采用哪些寻址方式?
答:直接寻址方式和位寻址方式
4.访问片内RAM单元可以采用哪些寻址方式?
答:直接和间接寻址方式
5.访问外部RAM单元可以采用哪些寻址方式?
答:间接寻址方式
6.访问外部ROM可以采用哪些寻址方式?
答:立即、变址和相对寻址方式
7.为什么说布尔处理功能是8051单片机的重要特点?
答:因为8051具有位寻址功能
8.对于ATS52单片机内部RAM还存在高128字节,应采用何种方式访问?
答:采用间接寻址方式
9.完成某种操作可以采用几条指令构成的指令序列实现,试写出完成以下每种操作的指令。
(1)将R0的内容传送到R1;
(2)内部RAM单元50H的内容传送到寄存器R4;
(3)外部RAM单元2000H的内容传送到内部RAM单元70H;
(4)外部RAM单元0800H的内容传送到寄存器R5;
(5)外部RAM单元2000H的内容传送到外部RAM单元2100H。
答:(1)MOV A,R0
(2)MOV R4,50H
(3)
MOV 70H, A
(4)MOV DPTR,#0800H
MOVX A,@DPTR
MOV R5,A
(5)MOV DPTR,#2000H
MOVX A,@DPTR
MOV DPTR,#2100H
MOVX @DPTR,A
10.若(R0)=30H,(A)=40H,(30H)=60H,(40H)=08H。试分析执行下列程序段后上述各单元内容的变化。
答:MOV A,@R0 ;(A)=60H
MOV @R0,40H ;(30H)=08H
MOV 40H,A ;(40H)=60H
MOV R0,#7FH ;(R0)=7FH
11.若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM的40H,41H,42H单元中的内容各为多少?
答:MOV A,50H ;(A)=40H
MOV R0,A ;(R0)=40H
MOV A,#00H ;(A)=00H
MOV @R0,A ;(40H)=00H
MOV A,# 3BH ;(A)=3BH
MOV 41H,A ;(41H)=3BH
MOV 42H,41H ;(42H)=3BH
12.若(A)=E8H,(R0)=40H,(R1)=20H,(R4)=3AH,(40H)=2CH,(20)=0FH,试写出下列各指令执行后有关寄存器和存储单元的内容。若该指令影响标志位,试指出CY,AC和OV的值。
(1)MOV A,@R0 ;(A)=2CH
(2)ANL 40H,#0FH ;(40H)=0CH
(3)ADD A,R4 ;(A)=22H, C=1,AC=1 ,OV=0
(4)SWAP A ;(A)=8EH
(5)DEC @R1 ;(20H)=0EH
(6)XCHD A,@R1 ;(A)=EFH ,(20H)=08H
13.试用位操作指令实现下列逻辑操作。要求不得改变未涉及的位的内容。
(1)使ACC.2置位;
(2)清除累加器低4位;
(3)清除ACC.0,ACC.3,ACC.5,ACC.7。
答:(1) SETB ACC.2
(2) CLR ACC.3
CLR ACC.2
CLR ACC.1
CLR ACC.0
(3)CLR ACC.0
CLR ACC.3
CLR ACC.5
CLR ACC.7
14.试编写程序,将内部RAM的21H,22H,23H三个连续单元的内容依次存入30H,31H和32H单元。
答: MOV 30H,21H
MOV 31H,22H
MOV 32H,23H
15.试编写程序,完成两个16位数的减法:7E56H-2B4EH。其结果存入内部RAM的30H和31H单元,31H单元存差的高8位,30H单元存差的低8位。
答: CLR C
MOV A,#56H
SUBB A,#4EH
MOV 30H, A
MOV A, #7EH
SUBB A, #2BH
MOV 31H,A
16.试编写程序,将R0中的低4位数与R3中的高4位数合并成一个8位数,并将其存放在R0中。
答: MOV A, R0
ANL A, #0FH
MOV 30H, A
MOV A, R3
ANL A, #0F0H
ORL A, 30H
MOV R0, A
17.试编写程序,将内部RAM的20H,21H单元的两个无符号数相乘,结果存放在R2,R3中,R2中存放高8位,R3中存放低8位。
答:
MOV B, 21H
MUL AB
18.若单片机的主频为12MHz,试用循环转移指令编写延时20ms的延时子程序,并说明这种软件延时方式的优缺点。
答:因为主频是12MHZ,所以机器周期为1us。
DEL: MOV R7, #80 ;1T机
DEL1: MOV R6, #123 ;1 T机
NOP ;1 T机
DJNZ R6, $ ;2 T机
DJNZ R7,DEL1 ;2 T机
RET ;2 T机
延时时间: T =1+80[(1+1+2*123)+2]+2
≈20000us=50ms
优点:节省内部硬件资源。缺点:是执行程序要占用CPU的时间。
19.简述利用8051单片机汇编语言进行程序设计的步骤。
答:(1)任务分析(硬件、软件系统分析)。
(2)确定算法和工作步骤。
(3)程序总体设计和流程图绘制。
(4)分配内存,确定程序与数据区存放地址。
(5)编写源程序。
(6)调试、修改,最终确定程序。
20.常用的程序结构有哪几种?特点是什么?
答:顺序结构程序 特点是:(1)程序中无分支、循环和调用等指令;(2)程序执行时按编写顺序,程序流程不变。
分支结构程序 特点是:(1) 根据要求利用转移指令,改变程序流向;(2) 设计难点是如何正确使用供条件转移指令使用的条件。
循环结构程序 特点是: 大大缩短程序,减少占用程序空间; 程序结构优化,清晰易读;可以实现多重循环控制,但循环不能交叉,不能从外循环跳入内循环;循环程序主要由循环常数、循环体和循环控制三部分组成。
21.子程序调用时,参数的传递方法有哪几种?
答:(1)利用累加器或寄存器
(2)利用存储器
(3)利用堆栈
22.什么是伪指令?常用的伪指令功能是什么?
答:伪指令:控制汇编用的特殊指令,这些指令不属于指令系统,不产生机器代码。
(1)ORG:定位目的程序的起始地址。
(2)END:汇编语言程序结束伪指令。
(3)EQU:赋值伪指令。
(4)DB:从指定单元开始定义(存储)若干个字节的数据或ASCII字符,常用于定义数据常数表。
(5)DW:从指定单元开始定义(存储)若干个字的数据或ASCII字符。
23.设被加数存放在内部RAM的24H,25H单元,加数存放在22H,23H单元,若要求和存放在26H,27H中,试编写出16位数相加的程序。
答: MOV A, 24H
MOV 26H, A
MOV A, 25H
ADDC A, 23H
MOV 00H, C
24.编写一段程序,把外部RAM中1000H~1030H的内容传送到内部RAM的30H~60H中。
答: MOV DPTR,#1000H
MOV R0, #30H
L1: MOV A, @DPTR
MOV @R0, A
25.编写程序,实现双字节无符号数加法运算,要求(R1R0)+(R7R6)→(61H60H)。
答: MOV A,R0
ADD A, R6
MOV 60H, A
MOV A, R1
ADDC A, R7
MOV 61H, A
26.若8051的晶振频率为6MHz,试计算延时子程序的延时时间。
DELAY: MOV R7,#0F6H
LP: MOV R6,#0FAH
DJNZ R6,$
DJNZ R7,LP
RET
答:(150*2+1)*2*146*2+146*2+2
