版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022-6-111第4章 汇编语言程序设计汇编语言程序设计概述汇编语言程序设计概述4.1伪指令和伪指令和汇编汇编4.2设计方法与技巧设计方法与技巧4.3汇编语言程序的基本结构汇编语言程序的基本结构4.4汇编语言程序设计举例汇编语言程序设计举例汇编语言程序设计概述汇编语言程序设计概述 汇编语言从指令性质上可以分为汇编语言从指令性质上可以分为2 2类:类:指令性语句、指示性语句(伪指令)。指令性语句、指示性语句(伪指令)。 指令性语句有相应的机器代码。指令性语句有相应的机器代码。伪指令在汇编时没有机器代码与之相对伪指令在汇编时没有机器代码与之相对应,起辅助性作用。应,起辅助性作
2、用。 4.2 汇编语言的伪指令与汇编汇编语言的伪指令与汇编MCS-51MCS-51的汇编语言的的汇编语言的四分段格式四分段格式如下:如下: 标号字段标号字段 操作码字段操作码字段 操作数字段操作数字段 注释字段注释字段规则:规则:(1 1)标号字段和操作字码段之间要有冒号)标号字段和操作字码段之间要有冒号“:”相隔;相隔;(2 2)操作码字段和操作数字段间的分界符是空格;)操作码字段和操作数字段间的分界符是空格;(3 3)双操作数之间用逗号相隔;)双操作数之间用逗号相隔; (4 4)操作数字段和注释字段之间的分界符用分号)操作数字段和注释字段之间的分界符用分号“;”相隔。相隔。操作码字段为必选
3、项,其余各段为任选项。操作码字段为必选项,其余各段为任选项。 标号字段标号字段 操作码字段操作码字段 操作数字段操作数字段 注释字段注释字段 START: MOV A,#00H ;0A MOV R1,#10 ;10R1 MOV R2,#00000011B ;3R2 LOOP:ADD A,R2 ;(;(A)+(R2)A DJNZ R1,LOOP ;R1内容减内容减1不为零,则循环不为零,则循环 NOP HERE: SJMP HERE基本语法规则:基本语法规则:1 1标号字段标号字段是语句所在地址的标志符号是语句所在地址的标志符号 (1 1)标号后边必须跟以冒号)标号后边必须跟以冒号“:” (2
4、2)由)由1 18 8个个ASCIIASCII字符组成字符组成(3 3)同一标号在一个程序中只能定义一次)同一标号在一个程序中只能定义一次 (4 4)不能使用汇编语言已经定义的符号作为标号)不能使用汇编语言已经定义的符号作为标号 2 2操作码字段操作码字段 是汇编语言指令中唯一不能空缺的部分。汇编程序就是汇编语言指令中唯一不能空缺的部分。汇编程序就是根据这一字段来生成机器代码的。是根据这一字段来生成机器代码的。3 3操作数字段操作数字段 通常有单操作数、双操作数和无操作数三种情况。如通常有单操作数、双操作数和无操作数三种情况。如果是双操作数,则操作数之间,要以逗号隔开。果是双操作数,则操作数之
5、间,要以逗号隔开。(1 1)十六进制、二进制和十进制形式的操作数表示)十六进制、二进制和十进制形式的操作数表示 采用十六进制形式来表示采用十六进制形式来表示 ,某些特殊场合才采用,某些特殊场合才采用二进制或十进制的表示形式二进制或十进制的表示形式 。 若十六进制的若十六进制的操作数以字符操作数以字符A AF F中的某个开头时,中的某个开头时,则需在它则需在它前面加一个前面加一个 “0 0”,以便在汇编时把它和,以便在汇编时把它和字符字符A AF F区别开来。区别开来。(2 2)工作寄存器和特殊功能寄存器的表示)工作寄存器和特殊功能寄存器的表示采用工作寄存器和特殊功能寄存器的代号来表示,也采用工
6、作寄存器和特殊功能寄存器的代号来表示,也可用其地址来表示。可用其地址来表示。 例如,累加器可用例如,累加器可用A A(或(或AccAcc)表示。也可用)表示。也可用0E0H0E0H来表来表示,示,0E0H0E0H为累加器为累加器A A的地址。的地址。(3 3)美元符号)美元符号$ $的使用的使用用于表示该转移指令操作码所在的地址。例如用于表示该转移指令操作码所在的地址。例如 JNB F0JNB F0, $ $与如下指令是等价的:与如下指令是等价的:HEREHERE:JNB F0JNB F0,HEREHERE 再如:再如:HEREHERE:SJMP HERESJMP HERE可写为:可写为: S
7、JMP $SJMP $4 4注释字段注释字段 必须以分号必须以分号“;”开头,换行书写,但必须注意也要开头,换行书写,但必须注意也要以分号以分号“;”开头。开头。 汇编时,注释字段不会产生机器代码。汇编时,注释字段不会产生机器代码。 ORG定位定位 END结束结束 EQU赋值赋值 DB定义字节定义字节 DW定义字定义字 DS定义存储区定义存储区 DATA数据地址赋值数据地址赋值 BIT位定义位定义常用的伪指令常用的伪指令1.ORG1.ORG(ORiGinORiGin)汇编起始地址命令)汇编起始地址命令在汇编语言源程序的开始,通常都用一条在汇编语言源程序的开始,通常都用一条ORGORG伪指令来实
8、伪指令来实现规定程序的起始地址。如不用现规定程序的起始地址。如不用ORGORG规定,则汇编得到规定,则汇编得到的目标程序将从的目标程序将从0000H0000H开始。开始。例如:例如: ORG 2000HORG 2000HSTARTSTART:MOV A,#00HMOV A,#00H规定标号规定标号STARTSTART代表地址为代表地址为2000H2000H开始。开始。在一个源程序中,可多次使用在一个源程序中,可多次使用ORGORG指令,来规定不同的程序段指令,来规定不同的程序段的起始地址。但是,的起始地址。但是,地址必须由小到大排列,地址不能交地址必须由小到大排列,地址不能交叉、重叠叉、重叠。
9、例如:。例如:ORG 2000HORG 2000H ORG 2500H ORG 2500H ORG 3000HORG 3000H 【例例4-1】 ORG 0000H LJMP MAIN ;指令指令LJMP MAIN存放于存放于0000H开始的单元开始的单元 ORG 100H MAIN: MOV A,#0 ;指令;指令MOV A,#0从从100H单元开始存放单元开始存放2. END(END of assembly)汇编终止命令汇编终止命令汇编语言源程序的结束标志,用于终止源程序的汇编工作。汇编语言源程序的结束标志,用于终止源程序的汇编工作。在整个源程序中只能有一条在整个源程序中只能有一条END命
10、令,且位于程序的最后。命令,且位于程序的最后。3DB(Define Byte)定义字节命令)定义字节命令在程序存储器的连续单元中定义字节数据。在程序存储器的连续单元中定义字节数据。ORG 2000HDB 30H,40H,24,“C”,“B”汇编后:汇编后:(2000H)=30H(2001H)=40H(2002H)=18H(10进制数进制数24)(2003H)=43H(字符(字符“C”的的ASCII码)码)(2004H)=42H(字符(字符“B”的的ASCII码)码) 4 4DWDW(Define WordDefine Word)定义数据字命令)定义数据字命令从指定的地址开始,在程序存储器的连续
11、单元中定义从指定的地址开始,在程序存储器的连续单元中定义1616位的数据字。例如:位的数据字。例如:ORG 2000HORG 2000H DW 1246H DW 1246H,7BH7BH,1010汇编后:汇编后:(2000H2000H)=12H=12H;第;第1 1个字个字(2001H2001H)=46H =46H (2002H2002H)=00H=00H;第;第2 2个字个字(2003H2003H)=7BH=7BH(2004H2004H)=00H=00H;第;第3 3个字(个字(2005H2005H)=0AH=0AH(2005H2005H)=0AH =0AH 【例例4-3】用定义字节伪指令定
12、义内存。用定义字节伪指令定义内存。 ORG 2000H AAA: DB a,78H,-1,16 BBB: DB 12 【例例4-4】 用定义字伪指令定义内存。用定义字伪指令定义内存。 ORG 1200H D1: DW l122H, 100 D2: DW -2 5 5EQUEQU(EQUateEQUate)赋值命令)赋值命令用于给标号赋值。赋值以后,其标号值在整个程用于给标号赋值。赋值以后,其标号值在整个程序有效。例如:序有效。例如:TEST EQU 2000HTEST EQU 2000H表示标号表示标号TEST=2000HTEST=2000H,在汇编时,凡是遇到标号,在汇编时,凡是遇到标号TE
13、STTEST时,均以时,均以2000H2000H来代替。来代替。例例 LED_LAMP EQU P1.0 COUNTER EQU 100 DISPLAY_ADDR EQU 2000H POINTEREQUR0 6 6数据地址赋值伪指令数据地址赋值伪指令DATADATA在程序中它常用来定义数据地址,该语句一般放在程序中它常用来定义数据地址,该语句一般放在程序的开头或末尾。在程序的开头或末尾。DATA命令的功能和命令的功能和EQU类似,但有以下差别:类似,但有以下差别: (1)用用DATA定义的标识符汇编时登记在符号表定义的标识符汇编时登记在符号表中,可以先使用后定义,而中,可以先使用后定义,而E
14、QU定义的标识符定义的标识符必须先定义后使用。必须先定义后使用。 (2)用用EQU可以把一个汇编符号赋给字符名,而可以把一个汇编符号赋给字符名,而DATA只能把数据赋给字符名。只能把数据赋给字符名。 (3)DATA可以把一个表达式赋给字符名,只要可以把一个表达式赋给字符名,只要表达式是可求值的。表达式是可求值的。 7.7.定义空间伪指令定义空间伪指令DSDS 定义空间伪指令定义空间伪指令DS是用于告诉汇编程序,是用于告诉汇编程序,从指定的地址单元开始,保留由表达式指从指定的地址单元开始,保留由表达式指定的若干字节空间作为备用空间。定的若干字节空间作为备用空间。8.8.位地址赋值伪指令位地址赋值
15、伪指令BITBIT格式格式: 标号标号 BIT位地址位地址 该伪指令的功能是将位地址赋予特定位的标该伪指令的功能是将位地址赋予特定位的标号号, 经赋值后就可用指令中经赋值后就可用指令中BIT左面的标号左面的标号来代替来代替BIT右边所指出的位。右边所指出的位。【例例4-2】用用EQU赋值。赋值。 LED_LAMP EQU P1.0 COUNTER EQU 100 DISPLAY_ADDR EQU 2000H POINTER EQU R0 . MOV R0, #COUNTER MOV DPTR, #DISPLAY_ADDR MOV C, LED_LAMP MOV POINTER,#30H;与与M
16、OV R0,#30H等效等效 【例例4-5】 用用DS指令预留空间,指令预留空间,并在其后定义内存。并在其后定义内存。 ORG 1000H BUF: DS 50 TAB: DB 22H ;22H存放在存放在1032H单元。单元。 【例例4-6】用用BIT指令定义位地址指令定义位地址名。名。 MN BIT Pl.7 FLAG1 BIT 08H . MOV C,MN CLR FLAG1 4.2.2 汇编语言的汇编汇编语言的汇编 2022-6-1120 源程序的汇编源程序的汇编汇编源程序转为目标程序的过程叫汇编源程序转为目标程序的过程叫汇编汇编汇编通常在汇编通常在Windows下的下的集成开发环境集
17、成开发环境完成完成用用A51.EXE汇编生成汇编生成.OBJ、.LIB及及.LST 目标程序的连接目标程序的连接.OBJ、.LIB经经BL51.EXE生成无扩展名的生成无扩展名的绝对地址目标文绝对地址目标文件件绝对地址目标文件绝对地址目标文件可以用于仿真器调试可以用于仿真器调试调试无误的目标文件用调试无误的目标文件用OH51.EXE转换为转换为.HEX文件文件.HEX文件经文件经编程器编程器写入单片机存储器写入单片机存储器2022-6-11214.3 汇编语言的设计方法和技巧汇编语言的设计方法和技巧 程序编制的步骤程序编制的步骤 明确任务:功能要求、技术指标明确任务:功能要求、技术指标 运行环
18、境调研运行环境调研 任务分析 将实际问题转化为计算机处理的程序算法将实际问题转化为计算机处理的程序算法 算法比较与优化(内存需求算法比较与优化(内存需求与与运行速度)运行速度) 算法设计算法设计2022-6-1122 流程描述流程描述 流程图符号 “超级循环超级循环”框架框架2022-6-1123 强化模块观念使程序占用空间减少、结构清晰使程序占用空间减少、结构清晰循环初值和结束条件,避免循环初值和结束条件,避免“死机死机”现象现象子程序的现场保护(注意栈平衡、寄存器内容)子程序的现场保护(注意栈平衡、寄存器内容)程序模块(主程序模块、各种子程序模块)程序模块(主程序模块、各种子程序模块)模块
19、化优点:分块设计、便于阅读、调试方便模块化优点:分块设计、便于阅读、调试方便 采用循环和子程序采用循环和子程序对中断子程序还有注意保护对中断子程序还有注意保护PSW的内容的内容汇编语言程序设计步骤汇编语言程序设计步骤(1 1)分析问题,确定算法)分析问题,确定算法(2 2)根据算法,画出程序框图)根据算法,画出程序框图(3 3)分配内存工作区及有关端口地址)分配内存工作区及有关端口地址(4 4)编写程序)编写程序养成在程序的适当位置上加上注释的好习惯。养成在程序的适当位置上加上注释的好习惯。(5 5)上机调试)上机调试编写完毕的程序,必须编写完毕的程序,必须“汇编汇编”成机器代码,才能调成机器
20、代码,才能调试和运行,调试与硬件有关程序还要借助于仿真开试和运行,调试与硬件有关程序还要借助于仿真开发工具并与硬件连接。发工具并与硬件连接。4.4 汇编语言程序的基本结构汇编语言程序的基本结构 任何复杂的程序设计都可以分解为顺序任何复杂的程序设计都可以分解为顺序结构、分支结构、循环结构和子程序。结构、分支结构、循环结构和子程序。4.4.1顺序程序设计顺序程序设计 【例例4-7】有两组压缩有两组压缩BCD码码(如:如:1183H和和5678H),加数和被加数分别存放在加数和被加数分别存放在22H23H单元和单元和32H33H单单元中,试求它们的两者之和,并将和送入元中,试求它们的两者之和,并将和
21、送入42H43H单元中去。数据按高位在低地址存放的原则存放单元中去。数据按高位在低地址存放的原则存放【例例4-8】求变量求变量X(0X9)的平方。的平方。X的值存放于内的值存放于内部部RAM 30H单元中,结果放于单元中,结果放于31H中中【例例4-9】试编制双字节乘法程序。试编制双字节乘法程序。 4.4.2 分支结构4.4.2 分支结构 【例4-10】x,y均为8位二进制数,x存放于R0,y存放于R1中。 【例4-11】若片内RAM中,50H、51H两单元分别存放两个无符号数,比较这两个数的大小,并将大者存入50H单元,小者存入51H单元。4.4.3循环程序设计循环程序设计 例子【例4-12
22、】已知以内部RAM ADDR1为起始地址的数据块存放有一组单字节无符号数,块长在LEN单元内。请编程求出数据块中的最大值并存入MAX单元中。【例4-13】将内部RAM60H开始的字符串传送到外部RAM 1000H的存储区域,字符串以$ 字符结束。2022-6-11314.4.4 子程序设计子程序设计 完成完成通用功能通用功能、反复使用反复使用的程序设计成的程序设计成子程序。子程序。使应用程使应用程序结构清晰紧凑,便于阅读和调试序结构清晰紧凑,便于阅读和调试 执行要由其它程序来调用,执行完后要返回到调用程序执行要由其它程序来调用,执行完后要返回到调用程序 结构上仍然采用一般程序的结构上仍然采用一般程序的3种结构种结构 调用时注意:调用时注意:一是现场的保护和恢复;一是现场的保护和恢复;二是主程序与子程序间的参数传递。二是主程序与子程序间的参数传递。例子【例4-14】 试编写10个字节的无符号二进制数求和子程序。入口:RAM 30H开始的单元。 出口:结果存放于70H和71H中,低位存放于71H,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学康复治疗(康复评定技术)试题及答案
- 2025年中职(汽车维修)岗位技能达标测试卷
- 2025年高职第二学年(安全工程技术)职业卫生工程试题及答案
- 2025年高职畜牧兽医(畜禽养殖技术)试题及答案
- 2025年高职生物(生物应用技能进阶)试题及答案
- 2025年大学水利水电工程(水利工程设计)试题及答案
- 2025年大学大三(国际贸易实训)外贸跟单实操综合测试试题及答案
- 2025年中职道路与桥梁工程施工(路基施工技术)试题及答案
- 2025年中职机械类(机械技术创新)试题及答案
- 2025年大学(材料成型及控制工程)粉末冶金工艺测试题及答案
- 初中历史区域国别研究教学与跨学科整合课题报告教学研究课题报告
- 档案工作责任追责制度
- 2024-2025学年重庆市南开中学七年级(上)期末道德与法治试卷(含答案)
- 【语文】广东省深圳市宝安区宝城小学二年级上册期末复习试题(含答案)
- 2025西藏日喀则市萨迦县招聘专职网格员11人笔试备考题库及答案解析
- 节能工程监理质量评估报告范本
- 摄影取景角度课件
- 2025宁夏黄河农村商业银行科技人员社会招聘考试笔试参考题库及答案解析
- 统编版语文一年级上册无纸化考评-趣味乐考 玩转语文 课件
- 2025年北京市海淀区中小学教师招聘笔试参考试题及答案解析
- 全科接诊流程训练
评论
0/150
提交评论