汇编语言程序示例
考试要求: 掌握     
知识路径:  > 嵌入式系统软件基础知识  > 嵌入式系统程序设计  > 嵌入式程序设计语言  > 汇编语言(指令系统、寻址方式、伪指令、宏指令等)  > 汇编语言程序设计  > 汇编语言程序


 
       下面分别以ARM和x86汇编语言为例,通过示例简要介绍汇编语言程序的基本格式。
       ARM汇编语言程序示例
       ARM汇编语言以段(section)为单位来组织源文件。段是相对独立的、具有特定名称的、不可分割的指令或数据序列。段又可以分为代码段和数据段,代码段存放执行代码,数据段存放代码运行时需要用到的数据。一个ARM源程序至少需要一个代码段,大的程序可以包含多个代码段和数据段。
       ARM汇编语言源程序经过汇编处理后生成一个可执行的映像文件(类似于Windows系统下的EXE文件)。该映像文件通常包括以下的三个部分:
       .一个或多个代码段,代码段通常是只读的。
       .零个或多个包含初始值的数据段,这些数据段通常是可读写的。
       .零个或多个不含初始值的数据段,这些数据段被初始化为0,通常是可读写的。
       链接器根据一定的规则将各个段安排到内存的不同位置,源程序中相邻的段在可执行映像文件中不一定是相邻的。
       x86汇编语言程序示例
       不同平台有不同的汇编语言相对应,实际应用系统中,开发人员可能会用汇编来实现部分功能以获得更高的性能。下面用一个程序段简要说明x86汇编语言程序的简单示例。
       设要利用某16位嵌入式CPU进行A/D采集,所设计的硬件电路(此处略)利用8255控制器C口中的PC0输出控制信号,利用PC7读入AD574的状态信号,再利用8255的A口和B口读入AD574转换好的12位数据。其中,8255控制器各个管脚及地址控制描述如下表所示。
       
       8255控制器各个管脚功能定义表
       根据相应硬件设计编写对应的数据采集程序,首先需要对8255进行初始化,然后进行数据采集。
       初始化8255程序段如下,先对8255(寻址其A口为C000H、寻址其控制寄存器为C003H)的工作模式进行配置。在给出的配置情况下,必须使得8255的A1 A0=11,即工作在寻址控制器模式下,同时保证8255的片选有效,即必须使得A15=A14=1,A13 =A12=A11=…=A2=0,因此给DX寄存器的地址为C003H,使8255的A口8位、B口8位及C口的高4位均设置为输入,C口的低4位设置为输出,将控制字写入8255的控制寄存器。
       
       在进行数据采集过程中,需要先通过8255的C口进行AD574的转换控制,要对C口操作,就需要设置A1 A0=10,再考虑到片选的有效性,需要给DX的地址是C002H。在进行一次数据转换时需要在PC0产生一个上升沿,所以要给C口输出配置为00H和01H。
       当从C口取出状态字后,需要借助C口的最高位STS进行转换完毕的状态判断,因此取出数据保存在AL寄存器,需要将其与80H进行与操作来判断最高位的完成状态。
       当判断结果是有效数据时候,需要分别从8255的A口和B口进行数据的获取,因此需要分别配置A口和B口的地址,依次为C000H和C001H。
       在进行12位数据合并时,需要通过与操作取出低4位数据,与#0FH进行与操作即可。
       数据采集程序段如下,
       
 

更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2025 All Rights Reserved
软考在线版权所有