第2章 MCS-51单片机指令系统.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 MCS-51单片机指令系统

起始伪指令ORG 起始伪指令ORG用于标记一个汇编语言程序的开始。 这里,16位地址便是汇编程序块或数据块存放的起始地址。如果省略ORG伪指令,则单片机程序代码将默认从0000H单元开始存放。 [标号:] ORG 16位地址 使用格式 结束伪指令END 结束伪指令END用于标记一个汇编语言程序的结束 。 这里,标号和表达式都可以省略。在汇编语言程序执行时,END之后所写的任何指令都不予以处理。 一个程序只能有一个END伪指令。 [标号:] END [表达式] 使用格式 两个最常用的伪指令 (1)ORG:汇编起始地址 用来说明其后一段程序在存储器中存放的起始地址。 (2)END:汇编结束 org 0000h ljmp Start org 0030h Start: mov P1,#55h ;端口P1写55h sjmp $ end 注:汇编语言很有用,但初学者不要深究 等值伪指令EQU 等值伪指令EQU相当于重命名的概念,其采用一个规定的字符名称来代替一个数或特定的汇编符号。 使用伪指令EQU时必须先赋值,后使用,而不能先使用后赋值。另外,给字符名称所赋的值可以是8位数,也可以是16位数。用EQU定义的字符名称不能和汇编语言的关键字同名。 字符名称 EQU 数据或汇编符号 或者 字符名称 = 数据或汇编符号 使用格式 地址赋值伪指令DATA 地址赋值伪指令DATA是用指定的字符名称来代替数据地址或代码地址 。 DATA伪指令在程序中常用来定义数据地址。就功能上来说,伪指令DATA与EQU有些类似。区别如下: EQU伪指令必须先定义后使用,而DATA伪指令则无此限制; EQU伪指令可以把一个汇编符号赋给一个字符名称,而DATA伪指令则不能; DATA伪指令可将一个表达式的值赋给一个字符变量,所定义的字符变量也可以出现在表达式中,而EQU定义的字符则不能这样使用。 字符名称 DATA 表达式 字节保存伪指令DB 字节保存伪指令DB用于在单片机内存中保存数据表,只能对程序存储器进行操作 。 其中,8位字节数据表可以是一个或多个字节数据、字符串或表达式。 在数据表中,各项数据用“,”分隔,一个数据项占一个存储单元。 所有的数据项是从标号指定的地址单元开始,将数据表中的字节数据按顺序依次保存。 数据项可以采用十进制、二进制或者十六进制表示。 [标号:] DB 8位字节数据表 字保存伪指令DW 字保存伪指令DW用于在单片机内存中保存双字节数据表,只能对程序存储器进行操作 。 其中,16位字数据表可以是一个或多个字节数据、字符串或表达式。 在数据表中,各项数据用“,”分隔,一个数据项占一个存储单元。 所有的数据项是从标号指定的地址单元开始,将数据表中的字节数据按顺序依次保存。 16位数据要占用两个单元的存储器,高8位数据存入低地址字节,低8位数据存入高地址字节。 [标号:] ORG 16位地址 空间预留伪指令DS 空间预留伪指令DS用于在单片机内存中划分出一定的存储空间用作备用区域,只能对程序存储器进行操作 。 这里,表达式表示了从标号指定的地址单元开始,保留存储单元的个数。 [标号:] DS 表达式 位变量伪指令BIT 位变量伪指令BIT用于给位地址定义一个字符名称 。 其中,位地址需要参考单片机中的定义,字符名称就是位变量。 字符名称 BIT 位地址 单片机汇编语言的程序结构 程序结构就是程序指令的组织方式。 单片机汇编语言程序大致可以分为5种程序结构 : 顺序结构 分支结构 循环结构 子程序结构 查表结构 顺序结构 顺序结构程序是按照指令的书写顺序来执行的程序结构,相当于人们在作事情时,严格按照一个计划表来执行。 顺序结构是一种无分支的直线型程序结构,一种最简单、最基本的程序。 在该程序中,单字节十六进制数据在0~255之间,存放在单片机RAM的32H中。首先将其除100后,商为百位数,余数除以10,商为十位数,余数为个位数。程序转换后,百位数存放于R5中,十位和个位分别存放于R6的高位和低位字节中。 顺序结构 01 ORG 0200H ;汇编程序起始指令 02 MOV A, 32H ;将单字节数据存入累加器A中 03 MOV B, #100 ;分离出百位数 04 DIV AB 05 MOV R5, A ;百位数送入寄存器R5 06 XCH A, B ;余数存入累加器A中 07 MOV B, #10 ;分离出十位和个位 08 DIV AB 09 SWAP A ;十位存入高字节 10 ADD A, B ;低位存入低字节中 11 MOV R

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档