2022年单元汇编语言程序设计 .pdf
《2022年单元汇编语言程序设计 .pdf》由会员分享,可在线阅读,更多相关《2022年单元汇编语言程序设计 .pdf(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单元四汇编语言程序设计41 单片机计数 . 142 LED 显示电路 . 441 单片机计数学习目标:通过学习任务七的完成方法,掌握MCS-51单片机汇编语言中的伪指令的功能特点。任务描述:利用实验开发板上的555 振荡电路产生的4HZ的脉冲信号进行计数,要求每计十个数单灯向左移动一次。411 硬件电路1. 硬件电路硬件电路如图4.1所示, 555 振荡电路产生约4HZ的脉冲信号,经S3 点接到单片机P3.4 输入端,注意应将跳线JP1 下面的两个端子(M与 R)短接。ABCD4321TitleNumberRevisionSizeOrcad AEA/VP31X119X218RESET9RD17
2、WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10U3XTAL11.0592MC233PC133PTRIG2Q3R4CVolt5THR6DIS7VCC8GND1U4VCCL1M2R3JP1S3R19470R20100KR21100KNE555C71uF/16VC8104D9LEDR18200C9104CLKVCCS3图 4.1 单
3、片机计数电路原理图2. 工作原理MCS-51单片机内部有两个16 位的定时 / 计数器,都可以用于对外部事件进行计数。外部计数脉冲从P3.4 或 P3.5 端口输人,程序设置定时/ 计数器工作在计数状态即可以对外部事件进行计数。412 程序设计 ORG 0000H LJMP MAIN ORG 0030H 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 28 页 - - - - - - - - - MAIN: MOV TMOD,#06H MOV TH0,#0F6H MOV
4、TL0,#0F6H SETB TR0 MOV A,#0FEH LOOP: MOV P1,A JBC TF0,MLOOP SJMP LOOP MLOOP:RL A SJMP LOOP END 413 源程序的编辑、编译、下载打开“伟福”模拟仿真软件进行程序的编辑、编译。打开“ ISP 下载软件”将目标文件下载到ISP-4实验开发板上的AT89S51 单片机芯片,观察程序运行结果。414 相关知识在前面的程序中,我们经常可以看到ORG 、END这样的东西,但是从我们已经学完了51 单片机的基本指令中,根本找不到它们。它们到底是什么呢?原来在单片机中,除了指令外还有伪指令。1. 什么是伪指令 ?有哪
5、些常用伪指令?随着单片机的广泛应用和开发以装置功能的不断完善与发展,汇编语言源程序都借助系统机( PC 等)进行编辑、汇编和调试。因此,在编制汇编语言源程序时,常需应用伪指令。伪指令又称汇编程序控制译码指令,属说明性汇编指令。“伪”字体现在汇编时不产生机器指令代码,不影响程序的执行,仅产生供汇编时用的某些命令,在汇编时执行某些特殊操作。不同的单片机及其开发装置所定义的伪指令不全相同。下面介绍几种常用的伪指令。(1)为标号赋值伪指令标号等值伪指令EQU 格式:标号:EQU 表达式指令的含义为本语句的标号等值于表达式,亦即将表达式值赋予标号。这里的标号和表达式是必不可少的。例如 :TTY : EQ
6、U 1080H 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 28 页 - - - - - - - - - 本语句向汇编程序指明,标号TTY 已于前句赋值为1080H,则相当于TTY=1080H 。用EOU 语句给一个标号赋值以后,在整个源程序中该标号的值是固定而不能更改的。定义标号值伪指令DATA 格式:标号:DATA 表达式其含义是定义该标号的值为表达式值,同样,标号和表达式是不可缺少的。例如 :COUNT1: DATA 2300H ;定义 COUNT1=2300H
7、 COUNT2: DATA COUNT1+1 ;定义 COUNT2=2300H+1 由上可见, DATA和 EQU的功能都是将表达成值赋给标号,但两者有区别,用DATA语句赋值的标号可以先用后定义,而用EQU 语句赋值的标号,必须先定义后使用。(2)数据存储说明伪指令数据存储说明伪指令的作用是将数据存储在程序存储器单元中。定义字节数据伪指令DB或 DEGB 格式: 标号: DB 表达式或表达式串式中表达式或表达式串是指一个字节或用逗号隔开的一个字节数据。其含义是将表达式或表达式串所指定的字节数据存入从标号开始的连续存储单元中。标号为可选项,它表示数据存入程序存储器的起始地址。例如:HERE :
8、DB 56H ;将数据 56H存入 HERE 所指示的单元中DB OA7H 再如:SECON: DB02H ,36H, 74H ,0B4H,OFFH ,,上述语句表示将字节数据串按顺序存篇幅标号 SECON 所指示的地址为起始顺序存储单元中。作为本语句操作数控部分的表达式或表达式串,可以是数据表达式、ASCII 码字符串、字节数据,字节数据串(其字节串长度限制在80B 的数据内)。定义字数据伪指令DW或 DEFW 格式 :标号: DW 表达式或表达式串本语句的含义是将作为操作部分的字数据(2B)或字数据串存入由标号指定的首地址按顺序连续单元中,定义字为为双字节的数据。在执行汇编时,计算机会自动
9、按高位字节在前、低位字节在后的顺序格式存入程序存储器单元中,例如:ABC :DW 1234H ,4567H,0A5C4H ,,汇编执行时第一个字节的12H 存入标号 ABC所指示的存储单元,34H存入( ABC )+1 单元中,其余按此顺序将后续字节数据存入对应的存储单元中,如标号ABC 定义为1000H,则上例汇编后:(1000H ) =12H ,( 1001H)=34H ,( 1002H)=45H,, 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 28 页 - -
10、 - - - - - - - (3)存储区说明伪指令DS格式 :标号: DS 表达式其含义是以标号的值为首地址保留表达式所指定的若干存储单元空间作为备用。例如:BASE :DS 0100H 汇编后,程序存储器从标号BASE为首地址开始,空出256 个存储单元,以备另用。(4)程序起始地址伪指令ORG格式 :ORG 表达式其含义是指定下面目标程序的起始地址为表达式值。表达式常为一个双字节地址数。例如:ORG 0100H START : MOV A ,#00H 汇编号,从START开始的目标程序,其起始地址从0100H 开始。由于表达式0100H 是立即型地址码所以隐含地指明该程序段属绝对地址段。
11、一个源程序中,可能有多处设置程序段起始地址,因此定义地址空间应从低地址端向高地址设置,不能重叠,否则将出错。若程序段前无ORG伪指令,则汇编后的目标程序将从 0000H 地址开始或紧接前段程序后。若表达式为浮动程序段中定义过的标号,则由该标号定义的目标程序段首地址也将之浮动。(5)汇编结束伪指令ENDEND伪指令是汇编语言源程序结束为标志。源程序在汇编过程中执行完END伪指令,即结束伪指令,为调试方便,可根据调试需要而设置。它有两种格式:格式 1:标号: END 表达式格式 2:标号: END 或者 END 其中标号不是必需的,有无表达式的区别在于前者在汇编结束后立即转向由表达式指定的起始地址
12、开始执行程序。因此,只需在程序运行的入口处和END后的表达式以同一个标号设置,当汇编完源程序后就自动转向由标号指定的入口处开始执行。表达式也可以入口入的绝对地址,后者则汇编结束后立即停机。42 LED 显示电路学习目标:通过学习任务八的完成方法,掌握单片机汇编语言程序设计的结构化设计方法,如分支结构、循环结构、子程序结构、查表程序结构等。任务描述:将 09 这十个数循环送P1 口七段 LED上显示名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 28 页 - - - - -
13、 - - - - 421硬件电路硬件电路如图4.2 。P1 口外接高亮度七段LED显示器用于字符显示。图 4.2 七段 LED显示电路原理图422 程序设计 START: ORG 0100H ;程序起始地址 MAIN: MOV R0,#00H ;从“ 0”开始显示 MOV DPTR,#TABLE ;表格地址送数据指针 DISP: MOV A,R0 ;送显示 MOVC A,A+ADPTR ;指向表格地址 MOV P1,A ;数据送 LED ACALL DELAY ;延时 INC R0 ;指向下一个字符 CJNE R0,#0AH,DISP ;未显示完,继续 AJMP MAIN ;下一个循环 DEL
14、AY: MOV R1,#0FFH ;延时子程序,延时时间赋值 LOOP0: MOV R2,#0FFH LOOP1: DJNZ R2,LOOP1 DJNZ R1,LOOP0 RET ;子程序返回 TABLE: DB 0C0H ;字型码表 DB 0F9H DB 0A4H DB 0B0H DB 99H DB 92H DB 82H 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 28 页 - - - - - - - - - DB 0F8H DB 80H DB 90H END ;程
15、序结束423 源程序的编辑、编译、下载打开“伟福”模拟仿真软件进行程序的编辑、编译。打开“ ISP 下载软件”将目标文件下载到ISP-4实验开发板上的AT89S51 单片机芯片,观察程序运行结果。424 相关知识1. 单片机源程序有哪些常用结构形式?一个应用系统的汇编语言源程序,无论其系统工能的要求简单还是复杂,其程序结构的组成基础总是由简单程序、分支程序、循环程序、子程序、查表程序等结构化程序块组合而成。这是汇编语言源程序的设计基础。(1)简单结构程序简单结构程序又称顺序结构程序,是汇编语言程序设计中最基本、最单纯的程序,在整个程序设计所占比例最大,是程序设计的基础。这里所说的简单结构程序是
16、指一种无分支的直接程序,是按照逻辑操作顺序,从第一条指令开始逐步条顺序执行,直到最后一条指令为止。可见,简单结构程序是指其组织成结构简单、程序的逻辑流向是一维的,程序的具体内为止。可见简单结构程序是指其组成结构简单,程序逻辑的逻辑流向是一维的,程序的具体内容不一定简单,在实际编程中,如何正确选择指令,合理使用工作寄存器、节省存储单元等,是编写好程序的基本功。现举例说明。(2)分支结构程序很多复杂的实际问题,总是伴随着逻辑判断,从而选择不同的处理路径,即程序的走向,从而使计算机能根据肯定某种智能基础。分支程序的主要特点是程序的流向从一个入口、两个或两个以上的出口,根据给定的条件进行选择确定。编程
17、的关键是如何确定供判断或选择的条件以及选择的条件以及选择合适的分支指令AT89S52 的指令集提供了极为丰富、功臣极强的多种分支指令,特别是比较转移和位判跳指令,给复杂问题,尤其是测控系统的程序设计提供了方便。分支程序又称复杂程序。因为一个源程序如果包含有无数个分支,每个分支均有不同的处理程序段,分支中又包含分支,这就使程序的流向十分复杂。因此,程序设计时必须借助程序流程图,把复杂的程序流向展现在平面图上,使之一目了然。为减少程序的复杂性,应尽力少用分支结构程序。 单分支结构程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名
18、师精心整理 - - - - - - - 第 6 页,共 28 页 - - - - - - - - - 单分支结构在程序设计中应用最广,拥有的分支指令了也多,其结构一般为一个入口两个出口。常用的流程图图形如图4.3 所示。图 4.3 单分支结构单分支结构程序的选择条件一般由运算或检测的状态标志提供,选用对应的条件判跳指令来实现。多分支结构程序在实际应用中,常常需要从两个以上的流向(出口)中选一。例如,两个数相比较,必然存在大于、等于、小于三种情况,这时就需从三个分支中选一。再如多分支跳转(又称散转)将根据运算结果值在多分支中选一。这就形成了多分支结构。其流程图形如图4.4 所示。MCS-51单片
19、机指令集设有散转指令:JMP A+DPTR 其中数据指针DPTR为存放转移指令串(S0Sn)的首地址,由累加器A的内容动态选择对应的转指令。因此,可多达256( n=1256)个分支程序中选一。分支结构程序的形式单分支选择结构程序有以下三种典型形式:图 4.3 :条件成立则执行分支程序(1),否则执行分支程序(2),两者选一。图4.5a :条件成立则跳过程序段(2),执行程序段(3),否则顺序执行。图4.5b :条件成立则顺序往下执行,否则重复执行程序段(1),直至条件成立,程序顺序往下执行。,分支 0分支 1分支 n(A)=nS000S11Snn散转结构程序示意图条件成立?N附名师资料总结
20、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 28 页 - - - - - - - - - Y N (a)(b)图 4.5 单分支结构程序的典型形式对于第三种形式,可以程序段(1)重复执行次数作为判别条件,当重复次数达到条件满足时停止重复,程序顺序往下执行,这是分支程序结构的一种特殊形式。其中判别条件也可能是一个定量或状态标志,而重复次数是不定的,只要条件一满足,立即停止重复。也可能条件不满足时直接转向判跳指令本身,一旦条件成立,立即结束。这种方式常用于状态检测。例如: LOOP :
21、JB P1.X ,LOOP ;本例是等待P1.X 引脚上的电平出现“1”“ 0”的急跳变而结束循环等待,程序顺序往下执行。分支结构程序允许嵌套,即一个分支接着一个分支,形成树根式多级分支程序结构。汇编语言程序本身并不限止这种嵌套层次数,但过多的嵌套层次将使程序结构变得十分复杂和雍肿,以致造成逻辑上的混乱和错误,因而应尽力避免。NY开始程序段条件成立?程序段结束分支程序分支程序NY开始程序段条件成立?程序段结束程序段名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 28 页
22、- - - - - - - - - 图 4.6 循环程序的典型形式一个较复杂的程序,总是包含多个分支程序段,为防止分支流向的混乱,应采用程序流程图具体标明每个分支的确切条件和走向。(3)循环结构程序循环结构程序是控制主机多次、重复执行同一个程序段的一种基本程序结构。从本质上讲,它是分支结构程序中的一个特殊形式。由于它在程序设计中的重要性,故而配以专用指令,单独作为一种程序结构的形式进行设计。在某些情况下采用循环程序结构,可使原程序大大缩短和简化。例如,利用软件延时lms,若采用 NOP指令来实现,当fosc=12MHz 时,需近1000 条 NOP指令组成。如果采用循环结构程序,只需少数几条指
23、令即可完成。可见其程序的简化效率。 循环结构程序的组成循环结构程序如图4.6 所示,它由下述4 个主要部分组成。A、初始化部分程序在进入循环处理程序段部分之前需设备初值,如循环次数、有关单元清0、变量设置、地址指针等。B、循环处理部分循环处理部分又称循环程序主体。是循环结构程序的核心,是循环执行需完成某种功能的主体。C、循环控制部分在重复执行循环体的过程中,不断修改和判断循环控制变量,直到符合结束循环条件。循环控制变量可以是循环递减计数或条件控制。前者是每循环执行一次,控制变量减1,并判是否减为0,若不为0,继续执行循环体程序;若控制变量减1 后结果值为0,则结束循环程序的执行,进入结束处理。
24、这些工作均由循环指令自动完成。后者判别结束条件上是否成立,例如计算结果达到给定精度要求或达到某一给定条件时就结束循环,这时的循环次数是不固定的。常用条件判跳指令来完成。D、结束处理部分名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 28 页 - - - - - - - - - 这是对循环程序全部执行结束后的结果进行处理和存储。 循环结构程序举例有两条功能极强的循环转移指令:DJNZ Rn, rel ;以工作寄存器Rn为控制寄存器DJNZ direct,rel ;以直接寻址
25、单元作控制寄存器这两条基本指令可派生出很多条不同控制计数器的循环转移指令,大大扩展了应用范围和多重循环的层次。控制计数器的计数方式一般均为不断减1 计数(递减方式),即每循环一次,计数器自动减 1 计数,并判控制计数器是否为0,若不为0,继续执行循环;若为0,则结束循环程序的执行,脱离循环程序顺序往下执行。循环次数在初始化时预置,循环次数范围1-255,如超过此范围,则要采用多重循环方式。多重层次原则上不受限。 多重循环结构程序某些复杂问题或者循环数超过256,则需采用多重循环的程序结构,即循环程序中包含循环程序或一个大循环中包含多个小循环程序,称多重循环程序结构,又称循环嵌套。循环的重数不限
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年单元汇编语言程序设计 2022 单元 汇编语言 程序设计
限制150内