第四章语言设计素材.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 汇编语言程序设计 【例4-1】 ORG 2000H MOV A,20H … 表示后续目标程序从2000H单元开始存放? 一般要求ORG定义空间地址应由小到大,且不能重叠? 在实际应用中,一般仅设置主程序的起始地址和中断服务程序的入口地址,其它的程序或常数依次存放即可,汇编程序汇自动进行存储空间的分配? ? 【例4-2】 ORG 1000H SEG1: DB 65H,68H,“4” SEG2: DB ‘DAY’ END 则 (1000H)=65H ;SEG1的地址为1000H (1001H)=68H ;存放数字68H (1002H)=34H ;数字4的ASCII码 (1003H)=44H ;D的ASCII码 (1004H)=41H ;A的ASCII码 (1005H)=59H ;Y的ASCII码 【例4-3】 2200:DW 253AH,58H 则 (2200H)=25H (2201H)=3AH (2202H)=00H (2203H)=58H 伪指令DB和DW均是根据原程序的需要,用来定义程序中用到的数据(地址)或数据块的?一般应放在原程序之后,汇编后的数据块将紧挨着目标程序的末尾地址开始存放? 【例4-4】 ORG 2000H SEG: DS 06H DB 35H,45H 表示从2000H单元开始,连续预留6个存储单元,然后从2006H单元开始按DB指令给内存单元赋值,即(2006H)=35H,(2007H)=45H? 【例4-5】 SG: EQU R1 ;SG与R1等值 DE: EQU 40H ;DE与40H等值 MOV A,SG ;(R1)→A MOV R7,DE ;(40H)→R7 【例4-6】 MAIN: DATA 40H 汇编后MAIN的值为40H? 【例4-7】 MEN BIT P1.3 GEN BIT 08H 汇编后,位地址P1.3?08H分别赋给变量MEN和GEN? 【例4-9】 双字节二进制数求补? 程序说明:本程序对R3(高)?R2(低)中的二进制定点数取反加1便得到其补码? 程序框图如图4-1所示? 程序清单: 【例4-10】设变量x存放在VAR单元之中,函数值y存放在FUNC中,按下式给y赋值: 程序框图如图4-2所示? 程序清单: AVR EQU 30H FUNC EQU 31H START:MOV A,VAR ;取x JZ COMP ;为0,转COMP JNB ACC.7, POSI ;0,转POSI MOV A,#0FFH ;0,-1送入A SJMP COMP POSI: MOV A, #01H ;+1送入A COMP:MOV FUNC, A END 【例4-11】32个分支转移程序?根据入口条件转移到 32个目的地址? 入口:(R3)=转移目的地址的序号00H-1FH? 出口:转移到相应子程序入口? 程序框图如图4-3所示? 程序清单: MP: MOV A,R3 ;取序号 RL A ;序号乘2 MOV DPTR, #JTAB ;32个子程序首址送 ;DPTR JMP @A+DPTR ;根据序号转移 JTAB: AJMP ROUT00 ;32个子程序首址 AJMP ROUT01 … AJMP ROUT31 此程序要求32个转移目的地址(ROUT00~ROUT31) 必须驻留在与绝对转移指令AJMP同一个2KB存储区内? RL指令对变址部分乘以2,是由于每条AJMP指令占用 2个字节?如改用LJMP指令,目的地址可以任意安排在 64KB的程序存储器空间内,但程序应作较大的修改? 【例4-12】 若Xi均为单字节数,并按i(i=1~n)的顺序存放在MCS-51的内部RAM从50H开始的单元中,n放在R2中,现在要求将它们的和(双字节)放在R3?R4中? 入口:Xi存放在从50H开始的单元; n放在R2中? 出口:和存放于R3?R4中? 程序框图如图4-5所示? 程序清单: ADD1: MOV R3,#00H ;清和存储单元 MOV R4,#00H MOV R2,# n ;置循环计数初值 MOV R0,#50H LOOP: MOV A,R4 ;取部分和低位 ADD A,@R0 ;与Xi相加

文档评论(0)

知识宝库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档