微机接口 lecture06汇编语言程序设计.pptVIP

微机接口 lecture06汇编语言程序设计.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微机接口 lecture06汇编语言程序设计

第五章 汇编语言程序设计 汇编语言程序设计 Assembling Language Programming 基本内容: 语句格式 伪指令 重点: 程序结构 程序流控制(条件、分支、循环,子程序,宏汇编) 程序设计方法 机器语言、汇编语言和高级语言 高级语言(High Level Language): 面向过程的语言,不依赖于机器,有很好的通用性和移植性。具有很高的程序设计效率 BASIC, C(++), VB, DELPHI, JAVA, HTML 汇编语言(Assembly Language) : 最接近于机器语言的低级语言。基本单位是机器指令。采用助记符编程,便于记忆。面向具体机器(CPU)的语言 。不具备通用性和移植性。设计员必须对机器的硬件和软件资源有足够的了解才能设计程序 汇编语言是各种系统软件如操作系统设计的基本语言 汇编语言编写的程序比高级语言编写的程序执行速度快,占内存少 汇编语言程序 —— 机器代码一一对应,程序流可控,速度快,用于编制系统程序、实时通信/控制/处理。 机器语言(Machine Language): 二进制表示的指令和数据序列 ——目标代码 从高级语言到计算机指令 编辑器(Editor) 程序设计(流程图) 编译器(Compiler) 高级语言程序(与机型无关) 汇编器(Assembler) 汇编语言(与机型有关) 链接器(Linker) 机器语言(待装配的BIN指令代码) (二进制) 可执行BIN指令代码(二进制) 4种基本的程序结构 主程序: main( ) { int a, b; int result; result = sqrt(a, b) return 0; } 用累加器或工作寄存器来传递参数 通过操作数地址来传递参数 通过堆栈来传递参数 软件延时一般DJNZ Rn, rel 指令构成 执行一个DJNZ指令需要两个机器周期 软件延时程序的延时时间主要与机器周期和延时程序中的循环次数有关。 软件延时 问题1: 什么是机器周期? 问题2:若单片机晶振频率12 MHz时,一个机器周期为多少? 问题3:执行一次子程序DELAY,耗时多长? 一个叫DELAY的子程序: DELAY: MOV R6, #200 ;执行时间1个机器周期 DEL2: DJNZ R6, DEL2 ;执行时间2个机器周期 RET ;执行时间1个机器周期 软件延时 例:编写50ms软件延时程序。 若使用12 MHz晶振时,一个机器周期为1μs,执行一条DJNZ指令需要2个机器周期,即2μs,延时50ms需用双重循环 方法: DEL: MOV R7, #125 ;执行时需1个机器周期 DEL1: MOV R6, #200 ; DEL2: DJNZ R6, DEL2 ;200x2≈400μs(内循环时间) DJNZ R7, DEL1 ;0.4msx125 ≈ 50ms(外循环时间) RET 通过软件可以实现任意的延时要求,但是以牺牲CPU的工作为代价 条件控制循环结构 根据控制循环结束的条件,决定是否继续循环程序的执行 所谓的结束条件可以是有哪些信誉好的足球投注网站到某个参数(比如回车符“CR”),也可以是发生的某种变化(如故障引起电路电平变化) 等,什么时侯结束循环是不可预知的 一般常用比较转移指令或条件判跳指令进行控制和实现 例:编写数据检索程序 在内部RAM 60单元开始 连续存放32个数据,查找第一个出现的“$”符号(ASCII码24H),若找到,将数据序号送入内部RAM 2FH单元,程序结束;否则将FFH送入内部 RAM 2FH单元。 程序: MAIN: MOV R0, #60H ;数据区首地址送R0 MOV R7, #20H ;数据长度送计数器R7 MOV 2FH, #00H ;工作单元清零 LOOP: MOV A, @R0 ;取数送A CJNE A, #24H, LOOP1 ;与“$”比较,不等转移 SJMP HERE ;找到,转结束,序号在2FH单元 LOOP1: INC R0 ;修改地址指针 INC 2FH ;序号加1 DJNZ R7, LOOP ;计数器减1,不为零,继续 MOV 2FH, #0FFH ;未找到,标志送2FH单元 HERE: NOP ;程序结束 END 子程序设计方法 子程序的调用过程与子程序嵌套 调用过程中的参数传递 通过寄存器传递(通过工作寄存器R0~R7,累加器A

文档评论(0)

kfcel5460 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档