资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,1,、见书,P20-,表,2.2, P21 P22,表,2.2,3,、,8031,片内,RAM,地址空间低,128,字节(,00H-,7FH,)为真正的,RAM,区,为连续空间,其中,(,00H-1FH,)共,32,单元是,4,个通用工作寄存,器区,每个区有,8,个通用寄存器,R0-R7,片内,RAM,的,20H-2FH,为位寻址区域,位地址范,围为,00H-7FH,片内,RAM,的,30H-7FH,为数,据缓冲区,一般可用来开辟堆栈区。高,128,字,节(,80H-FFH,)为特殊功能寄存器区,SFR,,,SFR,为不连续区,,8031,有,18,个,SFR,占,21,个字节。,5,、见书,P32,第三章,解:,MCS-51,指令系统按功能可分为类:,(,1,)数据传送,(,2,)算术运算,(,3,)逻辑运,(,4,)位操作,(,5,)控制转移,具有种寻址方式;其对应的寻址范围如下表:,1,、,MCS-51,指令系统按功能可分为几类?具有几种寻址方式?,它们的寻址范围如何?,寻址方式,寻址范围,立即寻址,程序存储器(指令的常数部分),直接寻址,内部,RAM,低,128,个字节;,特殊功能寄存器,SFR,寄存器寻址,R0R7,;,A,、,B,、,DPTR,、,C,寄存器间接寻址,内部,RAM,;,外部数据存储器及扩展,I/O,变址寻址,程序存储器,相对寻址,程序存储器,位寻址,内部,RAM,中的,20H2FH,的,128,个位;,SFR,可位寻址(字节地址能被整除的,SFR,)的位,寻址方式及相应的寻址空间,2,、设内部,RAM,中(,59H,),=50H,,写出当执行下列程序段后寄,存器,A,,,R0,和内部,RAM,中,50H,,,51H,单元的内容为何值?,MOV A,,,59H,;,(,A,),50H,MOV R0,,,A,;,(,R0,),=50H,MOV A,,,#00,;,(,A,),00H,MOV R0 , A,; 50H=00H,MOV A, #25H,;,(,A,),25H,MOV 51H , A,;,(,51H,),25H,MOV 52H , #70H,;,(,52H,),70H,结果为:(,A,),25H,(,R0,),=50H,(,50H,),00H,(,51H,),25H,3,、,PSW,中,Cy,与,OV,有何不同?下列程序段执行后,Cy=? OV=?,MOV A , #56H,ADD A ,#74H,Cy:,进位标志。如果操作结果在最高位有进位输出(加法),,或借位输入(减法)时,,Cy,置位,否则清“”该位又,是布尔处理器的累加器,C.,OV:,溢出标志。用于表示有符号数算术运算的溢出。当次高位,发生向最高位进位而最高位不发生进位或反之时,发生,溢出,,OV,置位,否则清“”,0101,0110,+,0111,0100,1100,1010,结果,:,Cy,,,OV,4,、,MOVC A , A+DPTR,与,MOVX A , DPTR,指 令有何不同?,答,: MOVC A , A+DPTR,:,为,程序存储器,内容送累加器指令,MOVX A , DPTR,:为,外部数据存储器,内容送累加器指令,、,AJMP , LJMP, SJMP,指令功能上有何不同?,答:,AJMP,是,2KB,范围内的无条件,短跳转,指令,LJMP,是,64KB,范围内的无条件,长跳转,指令,SJMP,是,256B,范围内的,相对转移,指令,6,设堆栈指针,(SP)=60H ,内部,RAM,中(,30H,),=24H, (31H)=10H,执行下列程序后,,61H,,,62H,,,30H,,,31H ,DPTR,及,SP,中,的内容将有何变化?,PUSH 30H,; (61H)=24H,PUSH 31H,; (62H)=10H,POP DPL,; (DPL )=10H,POP DPH,; (DPH )=24H,MOV 30H , #00H,; (30H)=00H,MOV 31H , #0FFH,; (31H)=0FFH,结果为:,(61H)=24H (62H)=10H (30H)=00H,(31H)=0FFH (DPTR)=2410H,(SP)=60H,60H,61H,62H,24H,10H,SP,7,、试分析以下程序段,当执行程序后,位地址,00H,和,01H,中的,内容将为何值?,P1,口的,8,条,I/O,线为何状态?,ORG 0000H,CLR C,MOV A, #66H,JC LOOP1,CPL C,SETB 01H,LOOP1: ORL C, ACC.0,JB ACC.2, LOOP2,LOOP2: MOV P1, A,SJMP $,END,结果如下:,(,00H,),= 0 ( bit ),(,01H,),= 1 ( bit ),(P1)=66H,8.,要完成以下的数据传送,应如何用,MCS-51,指令实现?,(,1,),R1,的内容传送到,R0,;,解:,MOV A, R1,MOV R0, A,(,2,)片外,RAM 20H,单元内容送,R0,;,MOV DPTR, #0020H,MOVX A, DPTR,MOV R0, A,(,3,)片外,RAM 20H,单元的内容送片内,RAM 20H,单元;,MOV DPTR, #0020H,MOVX A, DPTR,MOV 20H, A,(,4,)片外,RAM 1000H,单元的内容送片内,RAM 20H,单元;,MOV DPTR, #1000H,MOVX A, DPTR,MOV 20H, A,(,5,),ROM 2000H,单元的内容送,R0,单元;,MOV A, #00H,MOV DPTR, #2000H,MOVC A, A+DPTR,MOV R0, A,(,6,),ROM 2000H,单元的内容送片内,RAM 20H,单元;,MOV 20H, A,(,7,),ROM 2000H,单元的内容送片外,RAM 20H,单元。,MOV A, #00H,MOV DPTR, #2000H,MOVC A, A+DPTR,MOV DPTR, #0020H,MOVX DPTR,A,9.,分析以下程序每一条指令执行结果:,MOV A , #25H,;(A)=25H,MOV R1 , #33H,;(R1)=33H,MOV 40H , #1AH,;(40H)=1AH,MOV R3 ,#,40H,;(R3)=40H,ADD A , R1,;(A)=58H,ADDC A , R3,;(A)=72H,ADDC A , 40H,;(A)=8CH,10,、设,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,结果:,( A ) = 0CBH,11,、两个,4,位,BCD,码数相加,被加数和加数分别存于(次序为,千 位,百位在低地址中,十位,个位在高地址中),和数,放在,50H, 51H ,52H,中(,52H,用于存放最高位的进位),,试 编写加法程序。,解:,(30H)(31H)+(40H)(41H)=(52H)( 51H)(50H),MOVA, 31H,CLR,A,;,不影响,Cy AC OV,ADDA, 41H,ADDC A,#00H,DAA,MOV 52H, A,;,存最高位的进位,MOV50H, A,;,存低位和,MOVA, 30H,ADDC A,40H,DAA,MOV 51H,A,;,存高位和,ORG 0000H,MOV R0,,,#1FH,MOV R2,,,#49(31H),;单元长度,LOOP: INCR0,;起始单元,MOV A,R0,CJNE A,#0AA, NEXT0,MOV 51H,#01H,SJMP ENDD,NEXT0: DJNZ R2, LOOP,MOV 51H, #00H,ENDD: SJMP $,END,12,、试编写一程序,查找内部,RAM,单元的,20H50H,中是否有,0AAH,这一数据,若,有,则将,51H,单,元置为,01H,,若,没有, 则使,51H,单元置,0,13,、,用布尔指令,求解逻方程,:,PSW.5=P1.3*ACC.2+B.5*P1.1,PSW.5=P1.5*B.4+ACC.7*P1.0,ORG 0000H,MOVC, ACC.2,ANLC, P1.3,MOV00H,C,;,( 00H ) =,P1.3*ACC.2,MOVC,B.5,ANLC,P1.1,;C=,B.5*P1.1,ORL C,00H,MOV PSW.5, C,END,第四章,4.1,伪指令,(,1,、 汇编起始指令,ORG,2,、等值指令,EQU 3,、 定义字节指令,DB,4,、 定义字指令,DW 5,、 汇编结束指令,END,),4.2,汇编语言程序设计,4.2.1,简单程序设计,4.2.2,分支程序设计,4.2.3,循环程序设计,(概念;单、多重循环 ),4.2.4,散转程序设计,(属分支程序的一种),4.2.5,子程序和参数传递,( 子程序的概念、调用),4.2.6,查表程序设计,4.2.7,数制转换,4.2.8,运算程序,(加、 减、乘、 除),小结,Ch4,作业:,5,、,7,、,9,P73,5,试编写程序,将内部,RAM,中,DATA1,单元,开始的,20,个单字节数,据依次与,DATA2,单元,为起始地址的,20,个单,字节数据进行交换,换。,ORG 0000H,DATA1 EQU 20H,DATA2 EQU 40H,MOV R0, #DATA1,MOV R1, #DATA2,MOV R2, #20,LP:,MOV A, R0,XCH A, R1,MOV R0, A,INC R0,INC R1,DJNZ R2, LP,SJMP $,END,5,7,编写将一个单字,节十六进制数转换,为十进制数的子程序。,解法,ORG 0000H,; HEX1 EQU 30H,; DD1 EQU 40H,; DD2 EQU 41H,MOV A, 30H,MOV B, #100,DIV AB,MOV 40H, A,MOV A, #10,XCH A, B,DIV AB,SWAP A,ORL A, B,MOV 41H, A,SJMP $,END,ORG0000H,MOVA, 30H,ADDA, #00H,DAA,MOV40H, A,CLR A,ADDC A, #00H,MOV41H, A,SJMP $,END,解法,是错的,DA A,指令是针对两个十进制数相加的调整指令,7,ORG0000H,BLOCK EQU 20H,LEN EQU 10H,MAX EQU 60H,MOV R0, #BLOCK,MOV R1, #MAX,MOV R2, #LEN,DEC R2,MOV A, R0,MOV 40H, A,8,在内部,RAM,的,BLOCK,开始的单元中有一无符号数据块,,数据块长度存入,LEN,单元。试编程求其中最大数并存入,MAX,单元中。,L1: INCR0,MOVA, R0,CJNE A, 40H, L2,SJMP NEX,L2: JC NEX,MOV 40H, A,NEX: DJNZ R2, L1,MOV R1, 40H,SJMP $,END,9,试编程将内部,RAM,中,1H43H,单元中的数左移,4,位,移出部分送,40H,单元。,(2):,ORG 0000H,MOV 40H, #00H,MOV R0, #4,LP1:,MOV R1, #43H,MOV R2, #03H,CLR C,LP2:,MOV A, R1,RLC A,MOV R1, A,DEC R1,DJNZ R2, LP2,MOV A, 40H,RLC A,MOV 40H, A,DJNZ R0, LP1,SJMP $,END,解法一:用移位循环,(1):,ORG 0000H,MOV 40H, #00H,MOV R0, #4,LP1:,MOV R1, #43H,MOV R2, #04H,CLR C,LP2:,MOV A, R1,RLC A,MOV R1, A,DEC R1,DJNZ R2, LP2,DJNZ R0, LP1,SJMP $,END,9,地址,40H,41H,42H,43H,转化前,数据,XXH,56H,78H,9AH,转化后,ORG 0000H,MOV R0, #40H,MOV R1, #41H,MOV R3, #3,MOV 40H, #00H,LP: MOV A, R1,SWAP A,ANL A, #0FH,ADD A, R0,MOV R0, A,MOV A, R1,ANL A, #0FH,SWAP A,MOV R1, A,INC R0,INC R1,DJNZ R3, LP,SJMP $,END,解法,解法用交换指令,ORG 0000H,MOV 40H, #00H,MOV R0, #40H,MOV R1, #41H,MOV R2, #3,LP: MOV A, R1,SWAP A,41L 40L,41L 41H,41H,40H 41H,40H,INC R0,INC R1,DJNZ R2, LP,SJMP $,END,MOV R0, A,MOV A, R0,XCHD A, R1,MOV R1, A,41H,41L 40L,解法:,ORG 0000H,MOV 40H,#00H,MOV R0,#41H,MOV R2,#3,LP1:,MOV A, R0,SWAP A,MOV R0, A,INC R0,DJNZ R2, LP1,MOV,R1,#42H,MOV,R2,#3,LP2:,XCHD A,R1,DEC,R1,DJNZ,R2,LP2,MOV,43H,A,SJMP $,END,第五章,4,、简述,MCS-51,单片机的中断响应过程。,答:,单片机一旦响应中断请求,就由硬件完成以下功能,:,(,1,) 根据响应的中断源的中断优先级,使相应的优先级状,态触发器置,1;,(,2,) 执行硬件中断服务子程序调用,并把当前程序计数器,PC,的内容压入堆栈,;,(,3,) 清除相应的中断请求标志位(串行口中断请求标志,RI,和,TI,除外),;,(,4,) 把被响应的中断源所对应的中断服务程序的入口地,址(中断矢量)送入,PC,从而转入相应的中断服务,程序。,4,5,、说明,MCS-51,单片机响应中断后,中断服务的入口地址?,答:,中断服务的入口地址如下表:,5,中断系统功能是可以通过上述特殊功能寄存器进行统一管理的,中断系统初始化是指用户对这些特殊功能寄存器中的各控制位进行赋值。初始化步骤如下:,1,、开相应中断源的中断;,2,、设定所用中断源的中断优先级;,3,、若为外部中断,则应规定低电平还是负边沿的中断触发方式。,请写出,INT1,为低电平触发的中断系统初始化程序,解,()采用位操作指令,SETB EA,SETB EX1,;,开,INT1,中断,SETB PX1,;,令,INT1,为高优先级,CLR IT1,;,令,INT1,为电平触发,(,2,)采用字节型指令,MOVIE, #84H,;,开,INT1,中断,ORL IP, #04H,;,令,INT1,为高优先级,ANL TCON,#0FBH,;,令,INT1,为,电平触发,8,、,补例,:中断系统的初始化,TCON,T,F1 TR1 TF0 TR0 IE1 IT1,IE0 IT0,IE,EA,X,ET2 ES ET1 EX1 ET0 EX0,IP,X X PT2 PS PT1 PX1 PT0 PX0,10,、,MCS-51,的中断服务程序能否存放在,64KB,程序,存储器的任意区域?如何实现?,答:可以。,在相应的中断源的中断程序入口,地址处,用一条长跳转指令,(,LJMP,Add16,),转到相应,64K,程序存储器的任意地址(,Add16,),处,执行相应的中断程序,10,第六章,1,、,8051,单片机内设有几个可编程的定时器,/,计数器?它们有几种工作方式,如何选择和设定?作为定时器或计数器应用时, 它们的波特率各是多少?,2,、(,1,)定时器,/,计数器做定时器用时,其定时间与哪些因素有,关?作计数器用时,对外界计数频率有何限制?,答:(,1,)与,f,osc,、机器周期、计数器的长度、定时,/,计数器初值,.,(,2,),1,到,0,跳变计数、在,S5P2,采样、下个周期,S3P1,出现在,计数器中。(至少需要个机器周期),4,、某一,8051,单片机系统,晶振频率为,6MHz,,现要从单片,机,P1.7,的引脚输出一个连续的,5Hz,方波信号,请编写程,序。,3,、单片机的晶振频率为,6MHz,,若只使用,T0,产生,500us,定,时,可以选择哪几种定时方式?分别写出定时器的方式,控制字和计数初值。,5,、某单片机系统,时钟频率为,12MHz,,定时器,/,计数器,T0,用于,20ms,定时,,T1,用于,100,次计数,两者均要求重复工,作,问:,(,1,)外部计数脉冲应从何引脚输出?,(,2,)试编写达到上述要求的程序。,(,3,)利用定时器,/,计数器,T0,T1,编写延时,2s,的程序。,7,、怎样选择串行口的工作模式?,REN,位的作用是什么?,T1,和,RI,位何时置,1,,何时清,0,?,6,、为什么,T1,用作串行波特率发生器时常用工作方式,2,?,若,T1,设置为方式,2,,用作波特率发生器,晶振频率,为,6MHz,,求可能产生的波特率的变化范围。,第七章,3.,访问外部,ROM,和,RAM,的时序,图 2.8 读外部程序ROM时序,8,图,2 - 9,读外部数据,RAM,时序,图 2.10 写外部数据RAM的时序,
展开阅读全文