汇编语言程序设计简介修改.pptx
《汇编语言程序设计简介修改.pptx》由会员分享,可在线阅读,更多相关《汇编语言程序设计简介修改.pptx(79页珍藏版)》请在咨信网上搜索。
1、第 4 章 汇编语言程序设计简介 第第4章章汇编语言程序设计简介汇编语言程序设计简介4.1伪指令伪指令4.2汇编语言程序设计汇编语言程序设计第 4 章 汇编语言程序设计简介 汇编程序功能汇编程序功能 源程序源程序 (汇编指令程序)(汇编指令程序)汇编汇编 目标程序目标程序(机器码指令程序)(机器码指令程序)汇编指令与机器码指令有一一对应的关系。汇编指令与机器码指令有一一对应的关系。汇编程序是一种翻译程序,将源程序翻译成目标程序。汇编程序是一种翻译程序,将源程序翻译成目标程序。第 4 章 汇编语言程序设计简介 汇编程序的汇编过程汇编程序的汇编过程 汇编有两种方法:手工汇编、机器汇编。汇编有两种方
2、法:手工汇编、机器汇编。1 1、手工汇编:、手工汇编:第一次汇编:确定地址,翻译成各条机器码,字符标号第一次汇编:确定地址,翻译成各条机器码,字符标号原样写出;原样写出;第二次汇编:标号代真,将字符标号用所计算出的具体第二次汇编:标号代真,将字符标号用所计算出的具体地址值或偏移地址值或偏移量代换。量代换。第 4 章 汇编语言程序设计简介 源程序源程序目标程序目标程序地址地址 ORG 1000H ORG 1000H START START:MOV R0MOV R0,2FH 2FH MOV R2 MOV R2,#00H#00H MOV A MOV A,R0 R0 MOV R3 MOV R3,A A
3、 INC R3 INC R3 SJMP SJMP NEXT NEXT LOOP LOOP:INC R0 INC R0 CJNE R0 CJNE R0,#44H#44H,NEXTNEXT INC R2 INC R2 NEXT NEXT:DJNZ R3DJNZ R3,LOOPLOOP MOV MOV 2AH2AH,R2 R2 SJMP$SJMP$END END第一次汇编第一次汇编第二次汇编第二次汇编1000A82F10027A001004E61005FB10060B100780NEXT100908100AB644NEXT100D0A100EDBLOOP10108A2A101280FEA82F7A0
4、0E6FB0B800508B644010ADBF98A2A80FE第 4 章 汇编语言程序设计简介 2 2、机器汇编、机器汇编两次扫描过程。两次扫描过程。第一次扫描:第一次扫描:检查语法错误,确定符号名字;检查语法错误,确定符号名字;建立使用的全部符号名字表;建立使用的全部符号名字表;每一符号名字后跟一对应值(地址或数)。每一符号名字后跟一对应值(地址或数)。第二次扫描:第二次扫描:是在第一次扫描基础上,将符号地址转换成是在第一次扫描基础上,将符号地址转换成 地址(代真);地址(代真);利用操作码表将助记符转换成相应的目标码。利用操作码表将助记符转换成相应的目标码。第 4 章 汇编语言程序设计
5、简介 4.1伪伪指指令令一、一、汇编起始指令汇编起始指令ORG 指令格式为:ORG nn 该指令的作用是指明后面的程序或数据块的起始地址,它总是出现在每段源程序或数据块的开始。式中,nn为 16 位地址,汇编时nn确定了此语句后面第一条指令或第一个数据的地址,此后的源程序或数据块就依次连续存放在以后的地址内,直到遇到另一个ORG指令为止。第 4 章 汇编语言程序设计简介 例:ORG 2000H MOV SP,60H MOV R0,2FH MOV R2,0FFH ORG伪指令说明其后面程序的目标代码在存储器中存放的起始地址是2000H,即 存储器地址 目标程序 2000H 75 81 60 20
6、03H 78 2F 2005H 7A FF 第 4 章 汇编语言程序设计简介 二、等值指令二、等值指令EQU 指令格式:字符名称 EQU 数字或汇编符号 功能:使指令中的字符名称等价于给定的数字或汇编符号。使用等值指令可给程序的编制、调试、修改带来方便,如果在程序中要多次使用到某一地址,由EQU指令将其赋值给一个字符名称,一旦需要对其进行变动,只要改变EQU命令后面的数字即可,而不需要对程序中涉及到该地址的所有指令逐句进行修改。但要注意,由 EQU等值的字符名称必须先赋值后使用,且在同一个源程序中,同一个标号只能赋值一次。例:PA8155 EQU 8001H即给标号PA8155赋值为8001H
7、。第 4 章 汇编语言程序设计简介 三、三、定义字节指令定义字节指令DB 指令格式:标号:DB 8位二进制数表 功能:把 8 位二进制数表依次存入从标号开始的连续的存储单元中。格式中,标号区段可有可无,DB指令之后的 8 位二进制数表是字节常数或用逗号隔开的字节串,也可以是用引号括起来的ASCII码字符串 (一个 ASCII字符相当于一个字节)。例:第 4 章 汇编语言程序设计简介 ORG 1000HBUF1:DB 38H,7FH,80HBUF2:DB 45H,66H ORG伪指令指定了标号BUF1的地址为1000H,而DB伪指令是将其后的二进制数表38H,7FH,80H依次存放在1000H,
8、1001H,1002H 3 个连续单元之中,BUF2也是一个标号,其地址与前一条伪指令连续,即1003H,1004H地址单元中依次存放 45H,66H。第 4 章 汇编语言程序设计简介 四、四、定义字指令定义字指令DW 指令格式:标号:DW 16 位数据表 该指令的功能与DB相似,区别仅在于从指定地址开始存放的是指令中的 16 位数据,而不是字节串。每个 16 位数据要占两个存储单元,高8 位先存,低 8 位后存,这和MCS-51指令中的16位数据存放顺序是一致的。第 4 章 汇编语言程序设计简介 五、五、汇编结束指令汇编结束指令END 指令格式:标号:END 地址或标号 格式中标号以及END
9、后面的地址或标号可有可无。功能:提供汇编结束标志。汇编程序遇到 END后就停止汇编,对 END以后的语句不予处理,故 END应放在程序的结束处。第 4 章 汇编语言程序设计简介 4.2汇编语言程序设计汇编语言程序设计程序编写做到:程序编写做到:占用存储空间少;占用存储空间少;运行时间短;运行时间短;程序的编制、调试及排错所需时间短;结构清晰,易读、易于移植。程序的编制、调试及排错所需时间短;结构清晰,易读、易于移植。按结构化程序设计思想,任何复杂程序都可由按结构化程序设计思想,任何复杂程序都可由顺序结构、顺序结构、分支结构、分支结构、循环结构循环结构 等构成。等构成。第 4 章 汇编语言程序设
10、计简介 语句 3语句 2顺序结构顺序结构入口入口语句 1出口出口分支结构分支结构入口入口条件满足否?分支 1出口出口YN 分支 2循环结构循环结构入口入口 处理 修改条件条件满足否?Y出口出口N第 4 章 汇编语言程序设计简介 4.2汇编语言程序设计汇编语言程序设计4.2.1简单程序设计简单程序设计例例1 两个无符号双字节数相加。设被加数存放于内部RAM的40H(高位字节),41H(低位字节),加数存放于50H(高位字节),51H(低位字节),和数存入 40H和41H单元中。第 4 章 汇编语言程序设计简介 程序如下:START:CLR C ;将Cy清零 MOV R0,41H ;将被加数地址送
11、数据指针R0 MOV R1,51H ;将加数地址送数据指针R1 AD1:MOV A,R0 ;被加数低字节的内容送入AADD A,R1 ;两个低字节相加MOV R0,A ;低字节的和存入被加数低字节中 DEC R0 ;指向被加数高位字节 DEC R1 ;指向加数高位字节 MOV A,R0 ;被加数高位字节送入AADDC A,R1 ;两个高位字节带Cy相加 MOV R0,A ;高位字节的和送被加数高位字节 RET 第 4 章 汇编语言程序设计简介 例例2 将两个半字节数合并成一个一字节数。设内部RAM 40H#,41H单元中分别存放着 8 位二进制数,要求取出两个单元中的低半字节,并成一个字节后,
12、存入 50H单元中。程序如下:START:MOV R1,40H ;设置R1为数据指针MOV A,R1 ;取出第一个单元中的内容ANL A,0FH ;取第一个数的低半字节SWAP A ;移至高半字节INC R1;修改数据指针XCH A,R1 ;取第二个单元中的内容ANL A,0FH ;取第二个数的低半字节ORL A,R1 ;拼字MOV 50H,A;存放结果RET 第 4 章 汇编语言程序设计简介 4.2.2分支程序设计分支程序设计图 4.1 分支结构框图(a)单分支流程;(b)多分支流程 第 4 章 汇编语言程序设计简介 分支结构与分支程序设计分支结构与分支程序设计结构:根据不同的条件,进行相应
13、的处理。结构:根据不同的条件,进行相应的处理。通常用条件转移指令形成简单分支结构。通常用条件转移指令形成简单分支结构。如:如:判(判(A A)=Z=Z 或或 NZ NZ,转移,转移 判(判(CYCY)=1=1 或或 0 0 ,转移,转移 判(判(bitbit)=1=1 或或 0 0 ,转移,转移 CJNE CJNE 比较不相等转移比较不相等转移第 4 章 汇编语言程序设计简介 例例3 x#,y均为8位二进制数,设 x存入R0,y存入R1,求解:程序如下:START:CJNE R0,00H,SUL1;R0中的数与00比较不等转移 MOV R1,00H;相等,R1 0 SJMP SUL2 SUL1
14、:JC NEG ;两数不等,若(R0)0,则 R101H SJMP SUL2 NEG:MOV R1,0FFH;(R0)0,则 R10FFH SUL2:RET 第 4 章 汇编语言程序设计简介 图 4.2 第 4 章 汇编语言程序设计简介 例例4 比较两个无符号数的大小。设外部 RAM 的存储单元 ST1和 ST2中存放两个不带符号的二进制数,找出其中的大数存入外部 RAM 中的 ST3单元中。图 4.3 第 4 章 汇编语言程序设计简介 程序如下:ORG 1000H ST1 EQU 2000H ST2 EQU 2100H ST3 EQU 2200H START:CLR C ;清零Cy MOV
15、DPTR,ST1 ;第一个数的指针 MOVX A,DPTR ;取第一个数 MOV R2,A ;保存 MOV DPTR,ST2 ;第二个数的指针 MOVX A,DPTR ;取第二个数 CLR C 第 4 章 汇编语言程序设计简介 SUBB A,R2;两数比较JNC BIG1;若第二个数大,则转XCH A,R2;第一个数大BIG0:MOV DPTR,ST3 MOVX DPTR,A;存大数RETBIG1:MOVX A,DPTR;第二个数大SJMP BIG0RET 第 4 章 汇编语言程序设计简介 4.2.3循环程序设计循环程序设计一、一、循环程序循环程序图 4.4 第 4 章 汇编语言程序设计简介
16、循环程序一般由四个主要部分组成:(1)初始化部分:为循环程序做准备,如规定循环次数、给各变量和地址指针预置初值。(2)处理部分:为反复执行的程序段,是循环程序的实体,也是循环程序的主体。(3)循环控制部分:这部分的作用是修改循环变量和控制变量,并判断循环是否结束,直到符合结束条件时,跳出循环为止。(4)结束部分:这部分主要是对循环程序的结果进行分析、处理和存放。第 4 章 汇编语言程序设计简介 循环结构不但使程序简练,而且大大节省存储空间。循环结构不但使程序简练,而且大大节省存储空间。循环程序包含四部分:循环程序包含四部分:、初始化部分(循环计数器、变量置初值)初始化部分(循环计数器、变量置初
17、值)、循环处理部分(主体,需要重复执行的部分)循环处理部分(主体,需要重复执行的部分)、循环控制部分(修改地址指针、修改变量、检测循环控制部分(修改地址指针、修改变量、检测循环结束条件)循环结束条件)、循环结束部分(对结果分析、处理,存放结果)循环结束部分(对结果分析、处理,存放结果)第 4 章 汇编语言程序设计简介 先先处理处理,后判断:,后判断:开始初始化部分处理部分修改变量循环结束?结束部分结束先判断,后处理:先判断,后处理:开始初始化部分修改变量循环结束?结束部分结束处理部分第 4 章 汇编语言程序设计简介 循环有:单循环、多重循环。循环有:单循环、多重循环。循环次数已知,可用计数器控
18、制循环次数;循环次数已知,可用计数器控制循环次数;循环次数未知,按问题条件控制循环是否结束。循环次数未知,按问题条件控制循环是否结束。1 1、单循环程序、单循环程序(1 1)循环次数是已知的程序)循环次数是已知的程序第 4 章 汇编语言程序设计简介 例例5工作单元清零。在应用系统程序设计时,有时经常需要将存储器中各部分地址单元作为工作单元,存放程序执行的中间值或执行结果,工作单元清零工作常常放在程序的初始化部分中。设有50个工作单元,其首址为外部存储器8000H单元,则其工作单元清零程序如下:第 4 章 汇编语言程序设计简介 CLEAR:CLR A MOV DPTR,8000H ;工作单元首址
19、送指针 MOV R2,50;置循环次数CLEAR1:MOVX DPTR,A INC DPTR ;修改指针 DJNZ R2,CLEAR1;控制循环 RET 第 4 章 汇编语言程序设计简介 例例6 设在内部 RAM的BLOCK单元开始处有长度为 LEN个的无符号数据块,试编一个求和程序,并将和存入内部 RAM的 SUM单元(设和不超过 8 位)。BLOCK EQU 20H LENEQU 30H SUM EQU 40HSTART:CLR A ;清累加器A MOV R2,LEN;数据块长度送R2 MOV R1,BLOCK ;数据块首址送R1 LOOP:ADD A,R1;循环加法 INC R1;修改地
20、址指针 DJNZ R2,LOOP ;修改计数器并判断 MOV SUM,A;存和 RET 第 4 章 汇编语言程序设计简介 二、二、多重循环多重循环 循环体中还包含着一个或多个循环结构,即双重或多重循环。循环体中还包含着一个或多个循环结构,即双重或多重循环。例例3 3、设、设80318031使用使用12MHz12MHz晶振,试设计延迟晶振,试设计延迟100ms100ms的延时程序。的延时程序。内内循循环环外外循循环环解:延时程序的延迟时间就是该程序的执行时间,通常采用解:延时程序的延迟时间就是该程序的执行时间,通常采用MOV MOV 和和DJNZDJNZ二指令。二指令。T=12/fosc=12/
21、T=12/fosc=12/(121012106 6)=1us=1us ORG 1000H ORG 1000H DELAYDELAY:MOV R2MOV R2,#CTS#CTS ;T=1usT=1us LOOPS LOOPS:MOV BMOV B,#CTR#CTR ;T=1us T=1us LOOPR LOOPR:DJNZ BDJNZ B,LOOPR LOOPR ;2T=2us 2T=2us DJNZ R2 DJNZ R2,LOOPS LOOPS ;2T=2us 2T=2us ENDEND第 4 章 汇编语言程序设计简介 内循环延时:内循环延时:(1+2 CTR1+2 CTR)T=500usT=
22、500us(假设)(假设)则则CTR=250CTR=250 实际延时:实际延时:1+2 250 1us=501us1+2 250 1us=501us外循环延时:外循环延时:T+T+(501+2T501+2T)CTS=100ms=100 000us CTS=100ms=100 000us 所以所以 ,CTS=198.8 CTS=198.8 取取 199199 实际延时:实际延时:1+1+(501+2501+2)199=1000.98ms199=1000.98msDELAY:MOVR2,#CTS;T=1usLOOPS:MOVB,#CTR;T=1usLOOPR:DJNZB,LOOPR;2T=2usD
23、JNZR2,LOOPS;2T=2usEND 第 4 章 汇编语言程序设计简介 例例7 10 秒延时程序。延时程序与 MCS-51 执行指令的时间有关,如果使用 6 MHz晶振,一个机器周期为 2 s,计算出一条指令以至一个循环所需要的执行时间,给出相应的循环次数,便能达到延时的目的。10 秒延时程序如下:DELAY:MOV R5,100 DEL0:MOV R6,200 DEL1:MOV R7,248 DEL2:DJNZ R7,DEL2 DJNZ R6,DEL1 DJNZ R5,DEL0 RET 第 4 章 汇编语言程序设计简介 上例程序中采用了多重循环程序,即在一个循环体中又包含了其它的循环程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 简介 修改
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。