收藏 分销(赏)

汇编语言以及汇编语句.pptx

上传人:天**** 文档编号:4224740 上传时间:2024-08-26 格式:PPTX 页数:35 大小:158.96KB
下载 相关 举报
汇编语言以及汇编语句.pptx_第1页
第1页 / 共35页
汇编语言以及汇编语句.pptx_第2页
第2页 / 共35页
汇编语言以及汇编语句.pptx_第3页
第3页 / 共35页
汇编语言以及汇编语句.pptx_第4页
第4页 / 共35页
汇编语言以及汇编语句.pptx_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、1 本单元目标本单元目标了解什么是汇编语言掌握汇编语句格式掌握源程序框架结构2 机器语言机器语言&汇编语言汇编语言v机器语言:芯片的存储单元只有机器语言:芯片的存储单元只有0 0和和1 1两种状态,两种状态,而芯片也只会判断而芯片也只会判断0 0和和1 1这两种状态,因此一串代这两种状态,因此一串代码要让芯片码要让芯片“读懂读懂”,这串代码只能由数字,这串代码只能由数字0 0和和1 1组成。组成。像这种由数字像这种由数字0 0和和1 1按照一定的规律组成按照一定的规律组成的代码就叫机器码,也叫二进制编码。的代码就叫机器码,也叫二进制编码。一定长度一定长度的机器码组成了机器指令,用这些机器指令所

2、编的机器码组成了机器指令,用这些机器指令所编写的程序就称为机器语言。写的程序就称为机器语言。1010011000000001 表示表示1A011011100000000100000000 表示表示1$002 机器语言机器语言&汇编语言汇编语言v1001010100000001011011100000000100000000这串机器码表示:这串机器码表示:1A,1$00v机器语言的缺陷:机器语言的缺陷:代码长,不好记忆,不易看懂,容易写错。代码长,不好记忆,不易看懂,容易写错。v汇编语言:为了解决机器语言的缺陷,人们发明汇编语言:为了解决机器语言的缺陷,人们发明了另外一种语言了另外一种语言汇编语

3、言。这种语言用符号汇编语言。这种语言用符号(助记符,标号,数值)来代替冗长的、难以记(助记符,标号,数值)来代替冗长的、难以记忆的忆的0、1代码串。代码串。LDA#1T表示表示1AMOV#1T,$00 表示表示1$002 机器语言机器语言&汇编语言汇编语言v汇编:汇编语言写成的源程序,我们人类看得懂,汇编:汇编语言写成的源程序,我们人类看得懂,但是芯片看不懂,它只认得机器语言,汇编源程但是芯片看不懂,它只认得机器语言,汇编源程序必须翻译成机器语言,才能在芯片上运行。序必须翻译成机器语言,才能在芯片上运行。利利用专用的汇编工具(例如用专用的汇编工具(例如ICS08、CodeWarrior、Kei

4、l)把汇编语言写成的源把汇编语言写成的源程序翻译成机器语言的过程就叫汇编。程序翻译成机器语言的过程就叫汇编。v现今,人们普遍采用汇编语言和现今,人们普遍采用汇编语言和C语言来编写单语言来编写单片机源程序。片机源程序。3 汇编语言源程序的格式汇编语言源程序的格式v用户的汇编源程序由一条条汇编语句组成,每条最完整用户的汇编源程序由一条条汇编语句组成,每条最完整的语句可包括以下的语句可包括以下4个部分:标号、操作码、操作数和注个部分:标号、操作码、操作数和注释。汇编语句不区分大小写。释。汇编语句不区分大小写。例如:例如:Again:MOV#$01,RamData ;主循环的开始主循环的开始标号标号操

5、作码操作码操作数操作数注释注释3.1 汇编语言源程序的格式:标号汇编语言源程序的格式:标号v标号:实际上是代表了某行语句存放的标号:实际上是代表了某行语句存放的起始地址起始地址。标号不是必须的,绝大多数语句都没有标号,它通常只用在子标号不是必须的,绝大多数语句都没有标号,它通常只用在子函数或转移目的语句处。函数或转移目的语句处。一般来说,标号的前面不能有空格,在一般来说,标号的前面不能有空格,在CodeWarrior中允许标号中允许标号前面有空格,但是这时必须在标号的后面跟上帽号前面有空格,但是这时必须在标号的后面跟上帽号“:”;当;当标号的前面没有空格时,标号后面的冒号标号的前面没有空格时,

6、标号后面的冒号“:”可有可无。可有可无。标号只能以字母或下划线开头标号只能以字母或下划线开头,后面可以跟字母、数字和下划,后面可以跟字母、数字和下划线。线。标号在标号部分只能出现一次,不能重复。标号在标号部分只能出现一次,不能重复。v判断这些标号,找出不合法的:判断这些标号,找出不合法的:Init_Pro,_Init_Pro,3Init_Pro,Again1。v(不合法:不合法:3Init_Pro)3.2 汇编语言源程序的格式:操作码汇编语言源程序的格式:操作码v操作码:表示某种计算或者控制,例如表示加法、操作码:表示某种计算或者控制,例如表示加法、跳转等等。它可以是伪指令,也可以是助记符。跳

7、转等等。它可以是伪指令,也可以是助记符。操作码位于标号之后,两者用至少一个空格操作码位于标号之后,两者用至少一个空格或或Tab符隔开。对于没有标号的语句,操作符符隔开。对于没有标号的语句,操作符不能从一行的第一列开始写,前面应该至少不能从一行的第一列开始写,前面应该至少有一个空格或有一个空格或Tab符。符。操作码是必须的,在一条语句中一定存在操操作码是必须的,在一条语句中一定存在操作码。作码。v例例ORG,EQU,ADD,MOV,INC,LDA,STA,CLR等等。等等。3.3 汇编语言源程序的格式:操作数汇编语言源程序的格式:操作数v操作数:是操作码操作的对象,可以是地址、标操作数:是操作码

8、操作的对象,可以是地址、标号、数值或表达式。号、数值或表达式。操作数位于操作码之后,两者用至少一个空操作数位于操作码之后,两者用至少一个空格或格或Tab符隔开。符隔开。多个操作数之间用逗号多个操作数之间用逗号“,”隔开。隔开。大多数指令需要操作数,但是有些隐含寻址大多数指令需要操作数,但是有些隐含寻址的指令(针对的指令(针对CPU寄存器的操作)没有操作寄存器的操作)没有操作数,如数,如CLRA,STX,RSP等等。等等。3.4 汇编语言源程序的格式:注释汇编语言源程序的格式:注释v注释:在一行语句中,分号注释:在一行语句中,分号“;”后面的内容为后面的内容为注释部分;另外,如果注释部分;另外,

9、如果“*”在一行语句的第一在一行语句的第一列,也表示该行是注释。列,也表示该行是注释。它应由一个以上的空格或制表符与操作数或它应由一个以上的空格或制表符与操作数或操作码(无操作数时)分开。操作码(无操作数时)分开。它可包含任何可打印的它可包含任何可打印的ASCII字符。字符。注释不是必须的,但是对于初学者,建议给注释不是必须的,但是对于初学者,建议给每条语句写注释。每条语句写注释。3.5 汇编语言源程序的格式:其他说明汇编语言源程序的格式:其他说明v语句中出现的标点符号语句中出现的标点符号“:”、“;”、“,”、“_”都必须是在都必须是在“英文标点模式英文标点模式”下输入,而下输入,而不能在不

10、能在“中文标点模式中文标点模式”下输入为下输入为“:”、“;”、“,”、“”。v注释中出现的标点符号则不受上面的限制。注释中出现的标点符号则不受上面的限制。v不要把数字不要把数字0和字母和字母o混淆。混淆。v不要把数字不要把数字1和字母和字母l混淆。混淆。v不同语句的标号、操作码、操作数、注释最好对不同语句的标号、操作码、操作数、注释最好对齐,这样的程序美观且容易阅读。齐,这样的程序美观且容易阅读。3.6 汇编语言源程序的格式:仿真体验汇编语言源程序的格式:仿真体验v运行运行”学生练习(找错)学生练习(找错)_汇编语言程序设计汇编语言程序设计1.mcp“,对照汇编语言源程序的格式中的各,对照汇

11、编语言源程序的格式中的各个要点,找出问题并改正它们。个要点,找出问题并改正它们。4 常量常量v常量是指那些在汇编时已经有确定数值的量。分为数值常量(也叫常量是指那些在汇编时已经有确定数值的量。分为数值常量(也叫常数)和符号常量。常数)和符号常量。v常数常数:以数值的形式出现在符号指令中。常数可以是二进制、十进:以数值的形式出现在符号指令中。常数可以是二进制、十进制、十六进制和制、十六进制和ASCII码,其中二进制、十进制、十六进制分别加码,其中二进制、十进制、十六进制分别加前缀前缀%、!、$或者后缀或者后缀Q、T、H,ASCII码用单引号码用单引号表示。表示。如如10010111Q=%1001

12、0111=97H=$97=151TA;等同于等同于41Hv符号常量符号常量:经常使用的地址或者数值预先用伪指令:经常使用的地址或者数值预先用伪指令EQU定义为一个定义为一个名字,然后用该名字来表示该地址或数值,这个名字就成为了符号名字,然后用该名字来表示该地址或数值,这个名字就成为了符号常量。例如常量。例如PTAD EQU$0000 ;将将$0000地址单元定义为符号地址单元定义为符号 ;常量常量PTADRam_Start EQU 0070H ;将数值将数值0070H定义为符号常量定义为符号常量;Ram_Start5.1 伪指令:定位伪指令伪指令:定位伪指令ORGvORG:定位伪指令定位伪指令

13、格式:格式:ORG ORG 表达式表达式 (注释)(注释)例如:例如:ORG ORG EC00EC00 v ORG伪指令把由表达式决定的值(伪指令把由表达式决定的值(EC00)赋赋给程序计数器。在其后面的指令汇编后应放在从给程序计数器。在其后面的指令汇编后应放在从该值(该值(EC00)开始的存储单元中。开始的存储单元中。v如果一个源程序中没有如果一个源程序中没有ORG伪指令,程序计数伪指令,程序计数器初始值为器初始值为0000,即从,即从0号单元开始汇编。号单元开始汇编。5.2 伪指令:赋值伪指令伪指令:赋值伪指令EQUvEQUEQU:赋值伪指令赋值伪指令格式:标号格式:标号 EQU EQU

14、表达式表达式 (注释)(注释)RomStartRomStartEQUEQU$C000;FLASH$C000;FLASH的起始地址的起始地址v EQUEQU伪指令把表达式的值赋给前面的标号。该标号不能伪指令把表达式的值赋给前面的标号。该标号不能在程序的其他地方再定义。表达式中不能使用后面定义在程序的其他地方再定义。表达式中不能使用后面定义或没有定义的符号,否则将出错。下例将出错或没有定义的符号,否则将出错。下例将出错 ORG RomStart ORG RomStartRomStart EQU$C000RomStart EQU$C000v下例则是正确的:下例则是正确的:RamStart EQU$0

15、070RamStart EQU$0070 ORG RamStart ORG RamStart5.3 伪指令:块定义伪指令:块定义DS(RMB)v格式:标号格式:标号 DS(或或RMB)n_dsvDS(或或RMB)伪指令用于在伪指令用于在RAM存储区内定义存储区内定义n_ds个字节的连续存储空间,该空间个字节的连续存储空间,该空间不进行初不进行初始化始化(即定义后这些空间里面的值是不确定的)。(即定义后这些空间里面的值是不确定的)。例:例:ORG$0070Data_Ds DS(或或RMB)4v上例表示从上例表示从$0070开始,定义了一块了大小为开始,定义了一块了大小为4个字节的空间,且它们的值

16、是不确定的,即个字节的空间,且它们的值是不确定的,即($0070)=,($0071)=,($0072)=,($0073)=。5.4 伪指令:字节定义伪指令:字节定义DC.B(FCB)v格式:标号格式:标号 DC.B(或或FCB)n1_dbvDC.B(或或FCB)伪指令用于把后面的数据伪指令用于把后面的数据n1_db按字节按字节依次连续存依次连续存放在以标号作为首地址的放在以标号作为首地址的RAM存储单元中。例:存储单元中。例:ORG$0074Data_Db DC.B(或或FCB)12H,34H,56T,a,Av执行上例后,从执行上例后,从$0074开始的存储空间的内容开始的存储空间的内容为:为

17、:$0074 12 34 38 61 41(a、A的的ASCII值分别为值分别为61H、41H)。5.5 伪指令:字定义伪指令:字定义DC.W(FDB)v格式:标号格式:标号 DC.W(或或FDB)n1_dbvDC.W(或或FDB)伪指令用于把后面的数据伪指令用于把后面的数据n1_dw按字按字依次连续存放依次连续存放在以标号作为首地址的在以标号作为首地址的RAM存储单元中。例:存储单元中。例:ORG$0078Data_Dw DC.W(或或FDB)12H,34H,56T,a,Av执行上例后,从执行上例后,从$0078开始的存储空间的内容开始的存储空间的内容为:为:$0078 00 12 00 3

18、4 00 38 00 61 00 41。汇编语言程序设计1-伪指令综合练习.MCPv6 本任务所涉及的语句介绍6.1 INCLUDEv格式:INCLUDE 文件名v解释:INCLUDE是汇编伪指令。INCLUDE的作用是把单引号中表示的文件引入到INCLUDE语句所在的地方。v举例:语句“INCLUDE derivative.inc;”表示把文件derivative.inc的内容嵌入到本语句所在地方。由于derivative.inc包含以下的代码(注意,这里省略了注释信息):INCLUDE MC9S08AC16.incfeed_watchdog:MACRO STA SRS ENDMINCLUD

19、E derivative.inc的作用相当于把以上的4行语句插入到该语句所在的地方。6.2 EQUv格式:标号 EQU 表达式 (注释)v解释:EQU是一条伪指令,语句的作用是用标号来表示表达式的内容。v举例:ROMStartEQU$C000;ROMStart相当于$C000RAMStart:EQU$0100;RAMStart相当于$0100RAMEnd:EQU$046F;RAMEnd相当于$046F 6.3 ORGv格式:ORG表达式(注释)v解释:ORG是一条伪指令,用来重新定位程序或数据所在的存储单元的地址,表示ORG语句后面的语句从表达式所表示的地址开始存放。v举例:ORG RAMSt

20、art ;定位变量/数据区的起始地址LightNum:DS.B 1;LightNum所在的存储单元的 ;地址为RAMStart(即$0100)6.4 SEIv格式:SEIv解释:SEI是一条汇编指令,表示把条件码寄存器中的I标志置为1,具体作用是禁止单片机所有的可屏蔽的中断。v举例:SEI ;关中断6.5 LDAv格式:LDA v解释:LDA是一条汇编指令,表示把操作数所表示的8位立即数(数值)或操作数所表示的地址中的数值存放到累加器A中。v举例:LDA#7FH;7FHA,(A)=7FHLDA SOPT;(SOPT)A,;(A)=(SOPT)6.6 LDHXv格式:LDHX v解释:LDHX是

21、一条汇编指令,表示把操作数所表示的16位立即数(数值)或操作数所表示的地址以及下一个地址所存放的数值存放到H:X中,数值的高字节给H,低字节给X。v举例:LDHX#RAMEnd+1由于#RAMEnd+1$046F1$0470,所以(H)$04,(X)$70。6.7 TXSv格式:TXSv解释:TXS是一条无操作数的指令,表示把H:X中的值减去1后赋给SP,(H:X)-1SP。6.8 INCAv格式:INCAv解释:INCA是一条无操作数的指令,使累加器A的值自增1。6.9 DECAv格式:DECAv解释:DECA是一条无操作数的指令,使累加器A的值自减1。6.10 AIXv格式:AIX#opr

22、16iv解释:AIX是一条单操作数的指令,使H:X中的值增加opr16i。v举例:AIX#1 ;使H:X中的值加16.11 LSRv格式:LSRv解释:LSR是一条单操作数的指令,表示逻辑右移,使操作数所表示的数值的值向右移动1位,原来的第0位移到了条件码寄存器的C标志中,最高位补零。逻辑右移示意图如上图所示。v举例:CLC;(C)=0LDA#%10100101;(A)=%10100101STAPTBD;(PTBD)=%10100101LSRPTBD ;(PTBD)=%01010010,(C)=16.12 ROLv格式:ROLv解释:ROL是一条单操作数的指令,使操作数所表示的数值的值循环向左

23、移动1位,原来的第7位移到第0位,原来的第0位移到第7位,条件码寄存器中的C标志的值和原来的第7位相同。循环左移示意图如上图所示。v举例:CLC;(C)=0LDA#%10100101;(A)=%10100101STAPTBD;(PTBD)=%10100101ROL PTBD ;(PTBD)=%01001011,(C)=16.13 CPHXv格式:CPHX v解释:CPHX是一条单操作数或双操作数的指令,根据H:X中的值减去操作数所表示的16位数值的结果更新条件码寄存器中的V、N、Z、C标志,H:X和操作数本身的值没有改变。v举例:CPHX#50000T;(H:X)-50000,并更新条 ;件码

24、寄存器中的V、N、Z、;C标志6.14 CMPv格式:CMPv解释:CMP是一条单操作数或双操作数的指令,根据A中的值操作数所表示的8位数值的结果更新条件码寄存器中的V、N、Z、C标志,A和操作数本身的值没有改变。v举例:CMP#4T;(A)-4,并更新条件码寄存 ;器中的V、N、Z、C标志6.15 BNEv格式:BNEv解释:BNE是一条单操作数的指令,表示不相等则跳到操作数所表示的地址,具体来说是判断条件寄存器中的Z标志,如果(Z)0则跳到操作数所表示的地址,否则顺序执行下一条指令。v举例:AIX#1 ;使H:X中的值加1CPHX#50000T ;(H:X)-50000,更新条件码寄存器 ;中的V、N、Z、C标志BNE Delay ;如果H:X中的值还没有达到50000,;则转到Delay6.16 BRAv格式:BRA v解释:BRA是一条单操作数的指令,表示直接跳转到操作数所表示的地址。v举例:BRA mainLoop ;跳转到mainLoop所 ;表示的地址6.17 NOPv格式:NOP v解释:NOP是一条无操作数的指令,除了消耗1个指令周期的时间之外,什么事情都没有做,一般用来产生延时。

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服