书签 分享 收藏 举报 版权申诉 / 30
上传文档赚钱

类型[小学教育]江苏大学 嵌入式系统与单片机课件 汇编语言程序设计方法(一).ppt

  • 上传人(卖家):三亚风情
  • 文档编号:2780254
  • 上传时间:2022-05-25
  • 格式:PPT
  • 页数:30
  • 大小:445.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《[小学教育]江苏大学 嵌入式系统与单片机课件 汇编语言程序设计方法(一).ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    小学教育 小学教育江苏大学 嵌入式系统与单片机课件 汇编语言程序设计方法一 江苏 大学 嵌入式 系统 单片机 课件 汇编语言 程序设计 方法
    资源描述:

    1、一、一、MCS-51单片机汇编语言的伪指令单片机汇编语言的伪指令 伪指令又称汇编程序控制译码指令,属说明性汇编指令。 “伪”字体现在汇编时不产生机器指令代码,不影响程序的执行,仅产生供汇编时用的某些命令,在汇编时执行某些特殊操作。MCS-51单片机汇编语言程序设计中,常用的伪指令(七条):ORG定位伪指令END结束汇编伪指令EQU赋值伪指令DB定义字节指令DW定义数据字指令DS定义存储区指令BIT位定义指令2-3 汇编语言程序设计方法(一) 1、起始地址伪指令 ORG ORG addr16 用于规定目标程序段或数据块的起始地址, 设置在程序开始处。 例: Org 0000h ljmp main

    2、 org 0100h main: .2、汇编结束伪指令 END 告诉汇编程序,对源程序的汇编到此结束。 一个程序中只出现一 次,在程序的最末尾。 例: end 3、赋值伪指令 EQU 告诉汇编程序,将汇编语句操作数的值赋予本语句的标号。 格式: 标号名称 EQU 数值或汇编符号 “标号名称”在源程序中可以作数值使用,也可以作数据地址、位地址使用。 先定义后使用,放在程序开头。例: led_lamp equ p1.0 counter equ 100 display_addr equ 2000h . mov r0, #counter mov dptr, #display_addr mov c, l

    3、ed_lamp程序最末尾指令ljmp main存放于0000H开始的单元4.定义字节数据伪指令DB格式:标号: DB 字节数据表功能:字节数据表可以是多个字节数据、字符串或表达式,它表示将字节数据表中的数据从左到右依次存放在指定地址单元。例如:ORG 1000HTAB: DB 2BH, 0A0H, A, 2*4 ;表示从1000H单元开始的地方存放数据2BH,0A0H,41H(字母A的ASCII码),08H5.定义字数据伪指令DW格式:标号: DW 字数据表功能:与DB类似,但DW定义的数据项为字,包括两个字节,存放时高位在前,低位在后。例如:ORG 1000H DATA: DW 324AH,

    4、 3CH ;表示从1000H单元开始的地方存放数据32H, 4AH ; 00H ,3CH(3CH以字的形式表示为003CH)6.定义空间伪指令DS格式:标号: DS 表达式功能:从指定的地址开始,保留多少个存储单元作为备用的空间。如: ORG 1000H BUF: DS 50 ; TAB: DB 22H ;22H存放在1032H单元。表示从1000H开始的地方预留50个(1000H1031H)存储字节空间。7. 数据地址赋值伪指令XDATA常见的伪指令8. 符号定义伪指令EQU或“=” 题意分析、熟悉并了解汇编语言指令的基本格式和主要特点、明确题意分析、熟悉并了解汇编语言指令的基本格式和主要特

    5、点、明确被控对象对软件的要求、设计出算法等。被控对象对软件的要求、设计出算法等。分配内存工作区及有关端口地址。分配内存工作区及有关端口地址。画出程序流程图。编写较复杂的程序时,画出程序流程图是十分必画出程序流程图。编写较复杂的程序时,画出程序流程图是十分必要的。程序流程图也称为程序框图,是根据控制流程设计的,它可以使程要的。程序流程图也称为程序框图,是根据控制流程设计的,它可以使程序清晰,结构合理,便于调试。序清晰,结构合理,便于调试。 编制汇编源程序。编制汇编源程序。仿真、调试和优化程序。仿真、调试和优化程序。 固化程序。固化程序。二、单片机汇编语言程序设计的基本步骤如下顺序程序顺序程序:顺

    6、序程序是最简单、最基本的程序结构,其特点是按指令顺序程序是最简单、最基本的程序结构,其特点是按指令的排列顺序一条条地执行,直到全部指令执行完毕为止。的排列顺序一条条地执行,直到全部指令执行完毕为止。分支程序分支程序:分支程序是通过转移指令对相应条件的判断实现改变程序分支程序是通过转移指令对相应条件的判断实现改变程序的执行方向的设计方法。的执行方向的设计方法。循环程序循环程序:在程序中需要反复的执行的程序段,为了避免在程序中多在程序中需要反复的执行的程序段,为了避免在程序中多次的编写,可以通过利用条件转移或无条件转移指令来控制程序的次的编写,可以通过利用条件转移或无条件转移指令来控制程序的执行。

    7、执行。三:单片机汇编语言程序主要的几种程序设计方法:一、顺序程序一、顺序程序 顺序程序是最简单的程序结构,在顺序程序中没有任顺序程序是最简单的程序结构,在顺序程序中没有任何的转移指令,以下是一个典型的例子。何的转移指令,以下是一个典型的例子。例例1:字节(双字)加法。将内部:字节(双字)加法。将内部RAM 30H开始的开始的4个单元中存放的个单元中存放的4字字节十六进制数和内部节十六进制数和内部RAM 40H单元开始的单元开始的4个单元中存放的个单元中存放的4字节十六字节十六进制数相加,结果存放到进制数相加,结果存放到40H开始的单元中。开始的单元中。(如如0a0ab234fh存放在片存放在片

    8、内内RAM30h开始的开始的4个单元如图所示个单元如图所示)30H31H33H32H加数加数 1 存放处存放处4FH23HABHA0H题意分析示意图题意分析示意图 (1) 题意分析。 题目的要求如图所示。30H31H33H32H加数加数 1 存放处存放处4FH23HABHA0H43H42H41H40H 7BH 56H 80H E8H加数加数 2 存放处存放处43H42H41H40HCAH79H2BH89H相加结果存放处相加结果存放处A0AB234FE880567B892B79CA1 ORG0000HMOV A,30HADD A,40HMOV 40H,A;最低字节加法并送结果MOV A,31HA

    9、DDCA,41HMOV 41H,A;第二字节加法并送结果(2) 汇编语言源程序。按照双字节加法的思路,实现4字节加法的源程序如下: MOV A,32HADDC A,42HMOV 42H,A;第三字节加法并送结果MOV A,33HADDCA,43HMOV 43H,A;第四字节加法并送结果,进位 位在CY中 SJMP $END分支程序分支程序分支程序可以分为:分支程序可以分为:单分支单分支双分支双分支多分支多分支单分支单分支单分支程序的基本结构:单分支程序的基本结构:条件成立?条件成立?程序段程序段下条指令下条指令NY双分支双分支双分支程序的基本结构:双分支程序的基本结构:程序段1条件成立?条件成

    10、立?程序段程序段2NY多分支多分支多分支程序的基本结构:多分支程序的基本结构:程序段程序段2条件条件N=?程序段程序段N-10N程序段程序段1程序段程序段N1N-1例:如图所示,设计一段程序实现功能:如果(例:如图所示,设计一段程序实现功能:如果(A)中)中1的个数为奇数,的个数为奇数,所有的二极管发光;如果全所有的二极管发光;如果全0,则只让,则只让VD0-VD3发光;否则全灭。发光;否则全灭。单分支程序举例单分支程序举例EA/VP31X119X218RESET9INT012INT113T014T115P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P0.03

    11、9P0.138P0.237P0.336P0.435P0.534P0.633P0.732P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728RD17WR16PSEN29ALE/P30TXD11RXD10AT89C51C230pFC330pFY16.000MHZGNDVD1VD2VD3VD4VD5VD6VD7R2 330R3 330R4 330R5 330R6 330R7330R8 330R9330GNDR110K+C147uFGNDVCCVCCVD0开始位P=1?(A)=0?P2FFHP200HP20FH结束YYNN ORG 0000H ORG 000

    12、0H JB PJB P,JISHJISH JZJZ QUAN QUAN MOV P2MOV P2,#00H#00H SJMP SJMP TOend TOendJISHU:MOV P2,#0FFHJISHU:MOV P2,#0FFH SJMP SJMP TOendTOendQUAN:MOV P2,#0FHQUAN:MOV P2,#0FHTOend: SJMP $TOend: SJMP $ END END流程图:源程序:判断奇偶标志位的值判断(A)的值是否为0(A)有偶数个1,二极管灭(A)有奇数个1,二极管全亮(A)为0,VD0-VD3亮注意:在MCS-51单片机中,实现单分支常用的指令有:JZ

    13、、JNZ、DJNZ、CJNE、JC、JNC、JB、JNB、JBC等。虚线框代表一个单分支双分支程序设计例:内部RAM的40H单元和50H单元各存放了一个8位无符号数,请比较这两个数的大小,比较结果用发光二极管显示(LED为低有效): 若(40H)(50H),则P1.0管脚连接的LED1发光; 若(40H)(50H),则P1.1管脚连接的LED2发光。 题意分析: 本例是典型的分支程序,根据两个无符号数的比较结果(判断条件),分别点亮相应的发光二极管。比较两个无符号数常用的方法是将两个数相减,然后判断有否借位CY。若CY=0,无借位,则XY;若CY=1,有借位,则XY。程序的流程图如下图所示。

    14、两数比较流程图两数比较流程图XYXY,LED1点亮点亮CY1? XY, YNLED2点亮点亮开始开始结束结束 源程序如下: X DATA 40H ;数据地址赋值伪指令DATA Y DATA 50H ORG0000H MOV A, X ;(X) A CLRC ;CY=0 SUBBA,Y ;带借位减法,A- (Y)-CYA JC L1 ;CY=1,转移到 L1 CLRP1.0 ;CY=0,(40H)(50H),点亮P1.0 连 接的LED1 SJMP FIN ;直接跳转到结束等待 L1:CLR P1.1 ;(40H)(50H),点亮P1.1接的LED2 FIN:SJMP $ END 多分支程序举例

    15、多分支程序举例例:在某单片机系统中,按下一按键,键值(代表哪个键被按下)存放例:在某单片机系统中,按下一按键,键值(代表哪个键被按下)存放在内部在内部RAM的的40H单元内。设计一段程序实现功能:单元内。设计一段程序实现功能:如果(如果(40H)=00H,调用子程序,调用子程序SUB1;如果(如果(40H)=01H,调用子程序,调用子程序SUB2;如果(如果(40H)=02H,调用子程序,调用子程序SUB3;如果(如果(40H)=03H,调用子程序,调用子程序SUB4;如果(如果(40H)=04H,调用子程序,调用子程序SUB5。流程图流程图.(40H)=?调调SUB1调调SUB2调调SUB3

    16、调调SUB4调调SUB5=00H=02H=03H=04H=01H程序清单程序清单 MOV 40H,A MOV DPTR,#TAB RL A ADD A,40H JMP A+DPTR TAB: LCALL SUB1 LCALL SUB2 LCALL SUB3 LCALL SUB4 LCALL SUB5设定表格首地址40H3 传送给A 查表转移转移地址表 循环程序循环程序循环程序是一种很重要的程序结构。结构流程图一般如循环程序是一种很重要的程序结构。结构流程图一般如下图所示:下图所示:循环次数够否?循环初始化置循环次数循环体下一条指令NY例例1:设计一段程序实现功能:统计(:设计一段程序实现功能:

    17、统计(A)中)中1的个数,把结果存入的个数,把结果存入30H单元中。单元中。循环程序举例循环程序举例解题思路:要统计1的个数,可以利用RLC指令把A带上Cy循环左移,如果移入Cy的是1,就让(30H)加1,重复8次,可以统计出结果。30H00HR208H(循环次数循环次数)RLC ACy=0?30H (30H)+1(R2)-1=0?下一条指令下一条指令NYYN MOV 30H,#00H MOV R2,#08H LOOP:RLC A JNC NEXT INC 30H NEXT:DJNZ R2,LOOP 30H赋初始值,置循环次数 移位,判断Cy是否为1,为1则30H自加1 判断是否结束 例例:

    18、:将内部将内部RAMRAM单元中单元中20H20H单元到单元到2FH2FH单元的数传到外单元的数传到外部部RAMRAM中的中的2000H2000H到到200FH200FH单元中单元中. .R2 10H, R0 20HDPTR 2000HNA R0 DPTR AR0 (R0)+1DPTR(DPTR)+1(R2)-1=0?ENDY流程图:源程序:源程序: ORG 0000HORG 0000H MOV R0,#20HMOV R0,#20H MOV DPTR,#2000H MOV DPTR,#2000H MOV R2,#10H MOV R2,#10H LOOP:MOV A,R0LOOP:MOV A,R

    19、0 MOVX DPTR,A MOVX DPTR,A INC R0 INC R0 INC DPTR INC DPTR DJNZ R2,LOOPDJNZ R2,LOOP SJMP $ SJMP $ END END设置进行数据传送的内部和外部RAM的首地址利用ACC进行数据传送设定循环次数RAM地址加“1”循环次数判定 排序程序排序程序程序名 :BUBBLE 功能 :将片内RAM数据块由大到小排序入口参数:R0指向数据块首地址,R2存放数据块长度出口参数:仍存放原来位置占用资源:R0,R1,R2,R3,R5,A,PSW;00H位 BUBBLLE:MOV A,R0 MOV R1,A MOV A,R2 MOV R5,ABUBB1: CLR 00H DEC R5 MOV A,R1 BUB1: INC R1 MOV B,R1 CJNE A,B,BUB0BUB0: JNC BUB2 SETB 00H XCH A,R1 BUB2:DEC R1 MOV R1,A INC R1 MOV A,R1 DJNZ R5,BUB1 MOV A,R0 MOV R1,A MOV A,R2 MOV R5,A JB 00H,BUBB1 RET

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:[小学教育]江苏大学 嵌入式系统与单片机课件 汇编语言程序设计方法(一).ppt
    链接地址:https://www.163wenku.com/p-2780254.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库