1、1、本单元教学重点、难点及处理方法:80C51汇编语言语句结构的基本格式及伪指令的功能和应用。举例讲解。伪指令的功能和应用。2、本单元教学方式(手段)或教学内容要点与时间分配: 4.1 程序编制的方法和技巧 45分4.2 源程序的编制 45分3、本单元师生活动设计:二、授课内容:1、复习: 位操作类指令特点、格式及其用途。2、本单元教学内容(具体到知识点)1) 掌握80C51汇编语言语句结构的基本格式;2) 掌握程序设计的步骤和基本方法;3) 掌握伪指令的功能和应用。3、本单元的讲课提纲、板书设计(或多媒体教学)4.1 程序编制的方法与技巧一、程序编制的步骤: (一)预完成任务的分析:1.深入
2、分析明确任务、功能要求及技术指标2.分析硬件资源及工作环境 (二)进行算法的优化: 利用数学方法或数学模型将实际问题转化为由计算机进行处理的问题程序总体设计及流程图绘制: 1.程序总体构思 ; 2.确定程序结构、数据形式、资源分配及参数计算; 3.勾画流程图。二、编制程序的方法和技巧: (一)采用模块化程序设计:将某些具体功能程序进行独立的模块化设计(如:延时、打印或显示等)。 (二)采用循环结构和子程序:可减少程序容量,提高程序效率。三、汇编语言汇编格式:标号:操作码 目的操作数,源操作数;注释4.2 源程序的编制 一、源程序的编辑和汇编:(一)源程序的编辑:依据汇编语言基本规则进行,最后以
3、“.ASM”扩展名存盘。(二)汇编:将汇编语言源程序转换为计算机所能识别的机器语言代码程序的过程称为汇编。汇编可分为: 手工汇编; 计算机汇编 二、伪指令:在汇编时起控制作用,自身并不产生机器码,而仅是为汇编服务的一些指令,称为伪指令。伪指令不属于80C51指令系统。 常用的伪指令有以下几种: 起始伪指令 ORG(Origin)格式:ORG 16位地址功能:规定ORG下面目标程序的起始地址。 结束伪指令 ENDEND汇编语言源程序的结束标志。 在END后面的指令,汇编程序不再处理。 等值伪指令 EQU(Equate)字符名称 EQU 数据或汇编符号将一个数据或特定的汇编符号赋予规定的字符名称。
4、 数据地址赋值伪指令 DATA字符名称 DATA 表达式将数据地址或代码地址赋予规定的字符名称。 定义字节伪指令DB(Define Byte)DB 8位二进制数表从指定的地址单元开始,定义若干个8位内存单元的数据。数据与数据之间用“,”分割。 定义字伪指令DW(Define Word)DW 16位二进制数表从指定的地址单元开始,定义 若干个16位数据。 定义位地址伪指令BIT字符名称 BIT 位地址将位地址赋予所规定的字符名称。4、本单元的作业布置:5、小结:1)80C51汇编语言语句结构的基本格式;2)程序设计的步骤和基本方法;3)伪指令的功能、特点和应用。第 17 、18 次课顺序程序、分
5、支程序、循环程序设计和子程序及其调用。分支程序、循环程序设计。1)复习 20分 2)讲授 140分 3)小结 10分4)自行消化 10分提问。掌握顺序程序、分支程序、循环程序设计和子程序及其调用。4.3 基本程序结构一. 顺序程序顺序程序是指按顺序依次执行的程序,也称为简单程序或直线程序。顺序程序结构虽然比较简单,但也能完成一定的功能任务,是构成复杂程序的基础。【例】 已知16位二进制负数存放在R1R0中,试求其补码,并将结果存在R3R2中。解:二进制负数的求补方法可归结为“求反加1”,符号位不变。利用CPL指令实现求反;加1时,则应低8位先加1,高8位再加上低位的进位。注意这里不能用INC指
6、令,因为INC指令不影响标志位。程序如下:CONT: MOV A,R0 ;读低8位 CPL A ;取反 ADD A,#1 ;加1 MOV R2,A ;存低8位 MOV A,R1 ;读高8位 ADDC A,#80H ;加进位及符号位 MOV R3,A ;存高8位 RET ;二.分支程序根据不同条件转向不同的处理程序,这种结构的程序称为分支程序。80C51指令系统中的条件转移指令、比较转移指令和位转移指令,可以实现分支程序。【例】已知电路如图4-5所示,要求实现: S0单独按下, 红灯亮,其余灯灭; S1单独按下, 绿灯亮,其余灯灭; 其余情况, 黄灯亮。程序如下SGNL:ANL P1,#1110
7、0011B;红绿黄灯灭 ORL P1,#00000011B;置P1.0、P1.1输入态, P1.5P1.7状态不变SL0: JNB P1.0,SL1 ;P1.0=0,S0未按下,转判S1 JNB P1.1,RED ;P1.0=1,S0按下;且P1.1=0,S1未按下,转红灯亮YELW:SETB P1.4 ;黄灯亮 CLR P1.2 ;红灯灭 CLR P1.3 ;绿灯灭 SJMP SL0 ;转循环SL1: JNB P1.1,YELW ;P1.0=0,S0未按下;P1.1=0,S1未按下,转黄灯亮GREN:SETB P1.3 ;绿灯亮 CLR P1.4 ;黄灯灭RED: SETB P1.2 ;红灯
8、亮转循环 三. 循环程序循环程序一般包括以下几个部分: 循环初值; 循环体; 循环修改; 循环控制; 以上四部分可以有两种组织形式,其结构如图4-6所示。左图为“先执行后判断”的结构,右为“先判断后执行”的结构。【例】P79四. 子程序及其调用:1、子程序的定义 在实际编程中,常常回遇到功能完全相同的程序段,或不在同一程序模块,或虽在同一模块而需重复执行,但又不是连续重复执行。为了避免重复编制同一段程序,节省存储空间,把程序段独立开来,附加少量额外语句,将其编制成公用子程序,供程序其他地方需要时调用。这种程序的设计方法称之为子程序设计。2、子程序的调用: 子程序的结构与一般的程序并无多大区别,
9、它的主要特点是,在执过程中需要由其他程序来调用,执行完后又需要把执行流程返回到该子程序的主程序。 子程序调用时应注意两点:一是现场保护和恢复;二是主程序与子程序的参数传递。3、现场保护和恢复:第一:在主程序中进行;第二:在子程序中进行;4、参数传递:传递参数的方法主要有:利用累加器或寄存器;利用存储器;第三:利用堆栈。5、编制子程序的基本要求:1)子程序要有一定的通用性;2)选用适当的方法在主程序和子程序之间进行参量传递, 3)注意信息的保存,保存方法有:P89 6、71)顺序程序、分支程序、循环程序的特点及其设计;2)子程序及其调用。第 19 次课第一章、第二章、第三章、第四章中各节的重点内
10、容;先总结,再进行测验。测验。独立完成。 测验(一) 90分第一章、第二章、第三章、第四章中各节的重点内容小结。1)将第一章、第二章、第三章、第四章的内容进行总结,加深对其理解;2)检查学生对第一章、第二章、第三章、第四章的内容的掌握情况。 测验(一)一、单选题(3分/题) 1.十进制数126对应的十六进制表示为( )A. 8FH B. 8EH C. FEH D. 7EH 2.二进制数110010010对应的十六进制数表示为( ) A. 192H B. 1B6H C.DB0H D. 666H 3.3的补码为( )A. 10000011 B. 11111100 C. 11111110 D. 11
11、111101 4.Intel80C51单片机CPU是( )位的单片机A. 16 B. 4 C. 8 D. 准16 5.在单片机中,通常将一些中间计算结果存放在( )A. 累加器 B. 控制器 C. 程序存储器 D. 数据存储器 6.80C31复位后,PC与SP的值分别为( )A. 0000H,00H B. 0000H,07H C. 0003H,07H D. 0800H,00H 7.80C31单片机片内RAM共有( )字节A. 128 B. 256 C. 4K D. 64K 8.当进行外部扩展时,80C51单片机的P0口用作( )A. 传输高8位地址 B. 传输低8位地址C. 传输低8位数据 D
12、. 传输低8位地址/数据总线 9.下列指令中错误的是( )A. MOV A,R4 B. MOV 20H,R4 C. MOV R4,P0 D. MOV R0,R3 10.若(A)45H,(C)1,执行指令RLC A后,(A)的值为( ) A. 8AH B. 0D1H C. 8BH D. 0A2H二、程序分析: 1.读程序(一)(4分/空) MOV R0,#30H 若(30H)8DH,(40H)4AH,(41H) MOV R1,#40H 66H,(CY)1 MOV A,R0 执行以上程序后: ADDC A,R1 (A)= , (30H)= MOV R1,A (40H)= , (41H)= INC
13、R1 (R1)= 。 SUBB A,R1 MOV 30H,A 2.读程序(二)(10分) MOV DPTR,#2000H CLR A MOVC A,A+DPTR MOV DPTR,#1000H MOVX DPTR,A 上述程序段实现的功能是( ) A.将累加器A中的内容送至数据指针存储器DPTR中 B.将ROM2000H单元的内容送至外部RAM1000H单元 C.将累加器A中的内容送至1000H地址单元中 D.将RAM2000H单元的内容送至外部ROM1000H单元 3.读程序(三)(5分/空) (1)若(SP)=40H,(3FH)=30H,(40H)=60H,执行 POP DPH POP D
14、PL 指令后,DPTR的内容为 ,SP的内容为 。 (2)若(SP)=22H,(PC)=2233H,执行LCALL 2B3CH指令后, (SP)= , (PC)= , (23H)= , (24H)= 。三、改错(2分/题) 判断下列指令是否有错,若有错,则改正之。 1.MUL R0R1 2.MOV A,R7 3.MOV A,#3000H 4.MOVC A+DPTR,A 5.LJMP #1000H第 20 次课汇编语言建立、运行的上机操作方法。上机操作。 同上。 实验一 P1口实验(一) 90分实际操作。l、学习P1口的使用方法。2、学习延时子程序的编写和使用。实验一 P1口实验(一)一、实验内
15、容1、P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。2、P1口做输入口,接八个扭子开关,以实验台上74LS273做输出口,编写程序读取开关状态,将此状态,在发光二极管上显示出来。二、实验目的三、有关说明P1口为准双向口,P1的每一位都能独立地定义为输出线或输入线,作输入的口线,必须首先向锁存器相应位写入“l”,该位才能作为输入。8031中所有口锁存器在复位时均置为“l”,如果后来在口锁存器写入过“0”,在需要时应写入一个“1”使它再成为一个输入。可以用第二个实验做一下试验。先按要求做好程序并调试成功后,可将P1口锁存器中置“0”,此时将P1作输入口,会有什么结果。再来看一下
16、延时程序的实现。现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。本实验系统晶振为6.144MHZ,则一个机器周期为126.144us即10.512us。现要写一个0.1s的程序,可大致写出如下: MOV R7,#200 (1) DE1: MOV R6,#X (2) DE2: DJNZ R6,DE2 (3) DJNZ R7, DE1 (4)上面MOVDJNZ指令均需两个机器周期,所以每执行一条指令需10.256us,现求出X值: (x0.256+10.256)200+10.2560.1106 指令(3) (2) (4) (1) 所需时间
17、 需时间 需时间 需时间指出X126。代入上式可知实际延时约0.100004S,很精确了。四、连线方法执行程序1时:P1.0P1.7接发光二极管L1L8执行程序2时:P1.0P1.7接钮开关K1K8;74LS273(U4)的O11O18接发光二极管L1L8;74LS273片选端CS接080F端。此时7LS273 的I/O口地址为1B08H。五、实验电路程序一图程序二图六、参考程序程序一、ST_ADDR EQU 4000H ORG ST_ADDR LJMP START ORG ST_ADDR+200HSTART: MOV A,#01HLOOP: MOV P1,A MOV R1,#10DEL1: MOV R2,#200DEL2: MOV R3,#126DEL3: DJNZ R3,DEL3 DJNZ R2,DEL2 DJNZ R1,DEL1 RL A LJMP LOOP END程序二、PORT EQU 1B08HLJMP S1S1: MOV P1,#0FFH MOV A,P1 MOV DPTR,#PORT独立撰写实验报告。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1