- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
南京航空航天大学微机原理与应用_薛重德_汇编语言程序设计
第四章 汇编语言程序设计 学习要求 4.1 汇编语言程序设计概述 6.2 简单程序设计 5种基本的程序结构 示例: 示例: 示例 示例 示例 示例 课堂作业: 课堂作业: 课堂作业: 课堂作业: 课堂作业: 图 单分支结构示意图 图 单分支结构示意图 图 单分支结构示意图 在图(a)中,当条件满足时执行分支程序1,否则执行分支程序2。 在图(b)中,当条件满足时跳过程序段1,从程序段2开始继续顺序执行;否则,顺序执行程序段1和程序段2。 在图(c)中,当条件满足时程序顺序执行程序段2;否则,重复执行程序段1,直到条件满足为止。 对于第3种形式,若以程序段1重复执行的次数或某个参数作为判跳条件,当重复次数或参数值达到条件满足时,停止重复,程序顺序往下执行。这是分支结构的一种特殊情况,这实际是循环结构程序。 当条件不满足,不是转向程序段1的起始地址,重复执行程序段1,而是转向判跳指令本身。这种方式常用于状态检测。例如: LOOP:JB Pl.1,LOOP ;当P1.1引脚电平为“1”时,等待。 由于条件判跳指令均属相对寻址方式,其相对偏移量rel是个带符号的8位二进制数,常以补码形式出现,可正可负,其寻址范围为+127~-128个字节单元之间,因此,它可向高地址方向转移,也可向低地址方向转移。应用时应特别注意。这对实时系统的应用带来很大方便。 例4—11 求单字节有符号二进制数的补码。 解 正数补码是其本身,负数的补码是其反码加1。因此,程序首先判断被转换数符号,负数进行转换,正数即为补码。 设二进制数放在累加器A中,其补码放回到A中。其程序框图如图6—4所示。 例4—11 求单字节有符号二进制数的补码。 程序为: CMPT:JNB ACC.7,NCH ;(A)>0,不需转换 MOV C,ACC.7 ;保存符号 MOV 00H,C ;保存符号 CPL A ADD A,#1 MOV C,00H MOV ACC.7,C ;恢复符号 NCH: RET 例6—6 将ASCII码转换为十六进制数。如果不是十六进制数的ASCII码.用户标志位置l。 解 由ASCII码表可知。30H--39H为0-9的ASCII码,41H-46H为A-F的ASCII码。在这一范围内的ASCII码减30H或37H就可以获得对应的十六进制数。 设ASCII码放在累加器A中,转换结果放回A中。 程序流程图如图6—6所示。 流程图如图6—6所示。 ASCII码: 00H…2FH, 30H…39H, 40H, 41H…46H, 47H………. 将ASCII码转换为十六进制数。 十六进制数: 0…9, A…F ASCII码: 00H…2FH, 30H…39H, 40H, 41H…46H, 47H………. 将ASCII码转换为十六进制数。 (1)减30H,排除了00H…2FH 0 …. …9, 10H,11H…16H,17H………. (2)与0A比较后可确定十六进制数0~9 0 …. …9, 10H,11H…16H,17H………. (3)减07H,确定十六进制数A~F 10H,11H…16H,17H………. 09H,0AH…0FH,10H……. (4)与0A比较后,分隔09H(即原来的ASCII40H) 09H,0AH…0FH,10H……. (5)与10H比较后,排除10H以后的数(即原来的ASCII47H以后) 0AH…0FH,10H……. 程序为: START: CLR C SUBB A, #30H ;低字节相减 A-30H JC NASC ;(A)<0,不是十六进制数 CJNE A,#0AH,MM MM: JC ASC
文档评论(0)