版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章汇编语言程序设计何宾2023.08主要内容汇编语言程序结构和段分配符号和符号名字表达式和操作符控制语句条件汇编宏的定义和调用设计实例一:LED驱动和控制设计实例二:按键中断和LED控制汇编语言程序结构和段分配所谓的汇编语言程序就是按照一定的规则组合在一起机器语言助记符和汇编器助记符命令这些按一定规则组合在一起的汇编语言助记符机器指令,能通过KeilMDK软件的处理,转换成可以在STC32G系列32位单片机处理器核上按照设计要求运行的机器代码汇编语言程序结构和段分配
--汇编语言程序框架一个完整的可以运行在STC32G系列单片上的汇编语言程序代码下面的汇编语言程序将保存在STC32G系列单片机程序存储器中(即CODE段,具体地址由TABLE符号指定)中的4个常数0x0123、0x4567、0x89ab、0xcdef搬移到STC32G系列单片机内的数据存储器中(即EDATA段,具体地址由STORE指定)汇编语言程序结构和段分配
--汇编语言程序框架
data_seg1SEGMENTCODE;定义代码段data_seg1RSEGdata_seg1;引用该段TABLE:DW0x0123,0x4567,0x89ab,0xcdef;该段内定义了4个16位常数data_seg2SEGMENTEDATA;定义EDATA段data_seg2RSEGdata_seg2;引用该段STORE:DSW4;该段保留4个16位字空间汇编语言程序结构和段分配
--汇编语言程序框架prog_segSEGMENTCODE;定义代码段prog_seg RSEGprog_seg;应用该段LJMPmain;跳转到main入口 ORG0x0220;强制偏移到代码段位置0x0220main:;main入口MOVDPTR,#TABLE;将TABLE的地址加载到DPTR MOVWR0,#STORE;将STORE的地址加载到WR0MOVR4,#0x04;将循环次数4加载到寄存器R4CON:;标号CON MOVA,#0x0;累加器A初始化为0 MOVCA,@A+DPTR;将指向TABLE的数据元素加载到累加器A汇编语言程序结构和段分配
--汇编语言程序框架MOVR2,A;累加器A的内容加载到寄存器R2 INCDPTR;16位寄存器DPTR加1,指向下一个元素 MOVA,#0x0;累加器A初始化为0 MOVCA,@A+DPTR;将指向TABLE的下一个数据元素加载到累加器AMOVR3,A;将累加器A的内容加载到寄存器R3 MOV@WR0,WR2;WR2内容保存到WR0指向的数据存储器地址INCDPTR;16位寄存器DPTR加1,指向下一个元素 ADDWR0,#0x2;WR2中的地址加2,指向下一个16位字边界 MOVA,R4;寄存器R4中的循环次数加载到累加器A中汇编语言程序结构和段分配
--汇编语言程序框架SUBBA,#0x1;累加器A递减,即循环次数减1,影响标志位MOVR4,A;将累加器A中的循环次数重新保存到寄存器R4 JNZCON;将标志位Z不等于0时,跳到循环标志CON NOP;否则结束循环END;标记文件的结束汇编语言程序结构和段分配
--汇编代码中段的分配段(segment)是代码块或数据存储器段是可重定位的或绝对的可重定位的段具有名字、类型和其他属性将来自不同模块的相同名字的段看作是同一段的一部分,称为部分段L251链接器/定位器将具有相同名字的多个部分段合并位一个段注:绝对段不能与其他段组合汇编代码中段的分配
--CODE段和常数CODE段,也称为代码段,它是用来保存程序中汇编助记符描述的机器指令部分以及程序中所用到的常数和表格等CODE段放在STC32G系列单片机中的程序Flash存储空间注:CODE段可以由MOVC指令,并且通过DPTR寄存器进行访问汇编代码中段的分配
--DATA段数据段DATA中的存储器位置可以通过直接和间接存储器访问来寻址在兼容MCS-251ISA的STC32G系列单片机实现中SFR在DATA段中的地址大于0x80。SFR的位置只能通过直接访问来寻址汇编代码中段的分配
--DATA段myvarSEGMENTDATA;定义DATA段myvarRSEGmyvar;引用该段VALUE:DS1;在DATA空间保存一个字节
IO_PORT2DATA0A0H;特殊功能寄存器中IO_PORT2的地址VALUE2DATA20H;存储器的绝对地址汇编代码中段的分配
--DATA段myprogSEGMENTCODE;定义CODE段myprogRSEGmyprog;引用该段LJMPmain;无条件跳转到main
ORG0200H;定位到代码段中地址为200H的位置main:MOVA,IO_PORT2;端口IO_PORT2的值0xFF加载到累加器AMOVVALUE,#0xa5;立即数#0xa5保存到VALUE指向的存储单元ADDA,VALUE;(A)+(VALUE)→(A),0xFF+0xA5→0xA4=(A)MOVVALUE2,A;累加器A的值保存到VALUE2指向的存储器单元MOVR1,#VALUE;将VALUE存储器地址加载到寄存器R1ADDA,@R1;将((R1))+(A)→(A)END汇编代码中段的分配
--BIT段BIT段中的存储器位置可用8051中的位指令寻址位于位可寻址存储器位置中的SFR可以用位指令寻址可位寻址SFR位置为80H、88H、90H、98H、0A0H、0A8H、0B0H、0B8H、0C0H、0C8H、0D0H、0D8H、0E0H、0E8H,0F0H和0F8H(可位寻址的只能是可以被8整除的地址)汇编代码中段的分配
--BIT段mybitsSEGMENTBIT;定义BIT段mybitsRSEGmybits;引用该段FLAG:DBIT1;保留1位空间P1DATA90H;80251中SFR表示端口1ACCDATA0E0H;80251中SFR表示ACC累加器的地址GREEN_LEDBITP1.2;在端口P1的第2引脚P1.2定义符号GREEN_LEDmyprogSEGMENTCODE;定义CODE段myprogRSEGmyprog;引用该段LJMPmain;无条件跳转到mainORG0220H;定位到程序程序器地址为0220H的位置汇编代码中段的分配
--BIT段main:SETBGREEN_LED;将P1.2设置为1JBFLAG,is_on;到DATA的直接访问SETBFLAG;设置FLAGMOVACC,#0xFF;给累加器ACC加载立即数0xFFCLRACC.5;复位ACC的第5位,(ACC)=0xDFCLRACC.7;复位ACC的第5位,(ACC)=0x5Fis_on:CLRFLAG;复位FLAGCLRGREEN_LED;P1.2=0END汇编代码中段的分配
--EBIT段MCS-251ISA为EBIT段提供了扩展位可寻址存储器空间,该空间由扩展位指令寻址MCS-251ISA中,所有SFR也可以使用扩展位指令寻址mybitsSEGMENTEBIT;定义EBIT段mybitRSEGmybits;引用该段 ORG0x90;位地址偏移0x90,等效于0x32.0ZFLAG:DBIT1 ;在0x32.0定义一个位ZFLAGPSW1DATA0D1H;80251中SFRPSW1的地址DATDATA40H;80251中的可位寻址区域汇编代码中段的分配
--EBIT段prog_segSEGMENTCODE;定义CODE段prog_seg RSEGprog_seg;引用该段LJMPmain;跳转到main入口 ORG0220H;强制偏移到程序存储空间的地址0x220main:;程序入口SETBPSW1.1;设置寄存器PSW1的第1位(零标志Z)JBZFLAG,is_on;如果设置了ZFLAG,则跳转到is_on CLRDAT.1;清除位可寻址空间字节地址0x40的第1位is_on:;标号SETBZFLAG;设置ZFLAGCLRPSW1.1;清除寄存器PSW1的第1位(零标志Z)SETBDAT.1;设置位可选址空间字节地址0x40的第1位END汇编代码中段的分配
--IDATA段通过寄存器R0或者R1,程序可以间接寻址保存在IDATA段中的变量
myvarsSEGMENTIDATA;定义IDATA段myvarsRSEGmyvars;引用该段BUFFER:DS10;缓冲区BUFFER保留10个字节PSW1DATA0D1H;定义寄存器PSW1在SFR的地址0xD1
prog_segSEGMENTCODE;定义CODE段prog_seg RSEGprog_seg;引用该段LJMPmain;跳转到main入口 ORG0220H;强制偏移到程序存储器地址为0x220的位置汇编代码中段的分配
--IDATA段main:;main入口MOVR1,#10;将循环次数10加载到寄存器R1MOVA,#0x0;累加器A初始化为0,(A)=0MOVR0,#BUFFER;将BUFFER的地址加载到R0寄存器CON:;标号CON MOV@R0,A;将累加器A的内容保存到R0指向的存储空间INCR0;递增寄存器R0值,指向下一个存储空间地址 INCA;递增累加器A值 SUBR1,#1;递减寄存器R1中的值 JNBPSW1.1,CON;如果PSW1中的z标志不为零,跳转到CON NOP;当PSW1中的z标志为零,退出循环END汇编代码中段的分配
--EDATA段EDATA段只存在于兼容MCS-251ISA的单片机中典型的,在STC32G系列单片机中允许设置EDATA段myvarsSEGMENTEDATA;定义EDATA段myvarsRSEGmyvars;引用该段BUFFER:DSW10;保留10个字空间(20个字节)PSW1DATA0D1H;定义PSW1的SFR地址0xD1prog_segSEGMENTCODE;定义CODE段prog_seg RSEGprog_seg;引用该段LJMPmain;跳转到main ORG0220H;强制偏移到程序存储器的地址0x220汇编代码中段的分配
--EDATA段main:;main入口MOVR6,#10;循环次数10加载到寄存器R6MOVWR0,#1010H;立即数0x1010加载到字寄存器WR0MOVWR4,#BUFFER;将BUFFER的地址加载到寄存器WR4CON:;标号 MOV@WR4,WR0;WR0寄存器内容保存到WR4指向存储空间INCWR4,#2;WR4内保存的地址递增2,指向下一个字 ADDWR0,#1010H;16位寄存器WR0的值加上0x1010 SUBR6,#1;寄存器R6保存的循环次数减1 JNBPSW1.1,CON;若寄存器PSW1的标志位Z≠0,则跳转CON NOP;若寄存器PSW1的标志位Z=0,则退出循环END汇编代码中段的分配
--XDATA段XDATA段可通过寄存器DPTR和MOVX指令访问对于一个单页的XDATA存储空间来说,也可以通过寄存器R0和R1访问myvarsSEGMENTXDATA;定义XDATA段myvarsRSEGmyvars;引用该段BUFFER:DSB10;保留100个字节PSW1DATA0D1H;定义寄存器PSW1在SFR中的地址0xD1prog_segSEGMENTCODE;定义CODE段prog_seg RSEGprog_seg;引用该段LJMPmain;跳转到main ORG0220H;强制偏移到程序存储器的地址0x220汇编代码中段的分配
--XDATA段main:;main入口MOVR6,#10;循环次数10加载到寄存器R6MOVA,#10H;累加器A初始化为0x10,即(A)=0x10 MOVDPTR,#BUFFER;将BUFFER的地址加载到寄存器DPTR中CON:;标号CON MOVX@DPTR,A;将A的内容写到DPTR指向的存储空间上INCDPTR;寄存器DPTR中的地址递增 INCA;寄存器A的值递增 SUBR6,#1;寄存器R6中的循环次数减1 JNBPSW1.1,CON;若寄存器PSW1的零标志z≠0,跳转到CON NOP;若寄存器PSW1的零标志z=0,退出循环END汇编代码中段的分配
--HDATA段和HCONSTHDATA和HCONST存储器只能在兼容MCS-251ISA的单片机中使用MCU指令访问HDATA和HCONST存储器在经典的251设备上使用存储器分组进行仿真HDATA和HCONST存储器可通过DR0...DR28和DR56访问。任何存储器位置均可通过这些寄存器访问汇编代码中段的分配
--HDATA段和HCONSTmyvarsSEGMENTHDATA;定义HDATA段myvarsRSEGmyvars;引用该段BUFFER:DSB10;保留10个字节PSW1DATA0D1H;定义寄存器PSW1在SFR的地址0xD1prog_segSEGMENTCODE;定义CODE段prog_seg RSEGprog_seg;引用该段LJMPmain
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 腰间盘突出的康复动作
- 半月板损伤的护理
- 小区雨污水管道施工指导书
- 牙周炎的维护期洁治频率
- COPD急性加重期机械通气护理查房
- 2026三亚市护士招聘考试题库及答案
- 2026泉州市专职消防员招聘考试题库及答案
- 2026曲靖市护士招聘考试题及答案
- 杭州亚运会综评题目及答案
- 2026年汕头市普通高考第二次模拟考试化学+答案
- 2025年江苏省安全员《A证》考试题库及答案
- 2025年AP考试物理C真题
- 2025课堂惩罚 主题班会:马达加斯加企鹅课堂惩罚 课件
- 施工现场交通安全课件
- Maya 2024三维设计基础教程(全彩微课版) 课件全套 来阳 第1-10章 初识Maya 2024 -综合实例
- 2025年天津市高考英语试卷(含答案及解析)
- 城市供水调研报告(老旧小区改造调研内容)
- 工业企业精益智造成熟度评价规范
- 2025年中国地质调查局招聘面试题预测与备考指南
- 农业生产资金管理规定
- 【《人脸识别技术中个人信息保护的法律规制探析》10000字】
评论
0/150
提交评论