首页 > 知识点讲解
       汇编语言程序
知识路径: > 嵌入式系统软件基础知识 > 嵌入式系统程序设计 > 嵌入式程序设计语言 > 汇编语言(指令系统、寻址方式、伪指令、宏指令等) > 汇编语言程序设计 > 
被考次数:1次     被考频率:低频率     总体答错率:72%     知识难度系数:     
相关知识点:1个      
        汇编语言是为特定计算机或计算机系统设计的面向机器的符号化程序设计语言。用汇编语言编写的程序称为汇编语言源程序。由于计算机不能直接识别和运行符号语言程序,所以需要用专门的翻译程序——汇编程序进行翻译。用汇编语言编写程序时要遵循所用语言的规范和约定。汇编语言的核心是汇编指令,它决定了汇编语言的特性。
               汇编语言源程序中的指令
               汇编语言源程序由若干条语句组成。一般来说,在一个程序中可以有3类语句:指令语句、伪指令语句和宏指令语句。
                      指令语句
                      指令语句又称为机器指令语句,将其汇编后能产生相应的机器代码,这些代码能被CPU直接识别并执行相应的操作。例如,表示传数据、相加、相减和与运算的MOV、ADD、SUB和AND等,书写指令语句时必须遵循指令的格式要求。
                      指令语句可分为传送指令、算术运算指令、逻辑运算指令、移位指令、转移指令和处理器控制指令等。
                      伪指令语句
                      伪指令语句指示汇编程序在对源程序进行汇编时完成某些工作。例如,给变量分配存储单元地址,给某个符号赋一个值等。伪指令语句与指令语句的区别是:伪指令语句经汇编后不产生机器代码,而指令语句经汇编后要产生相应的机器代码。另外,伪指令语句所指示的操作是在源程序被汇编时完成的,而指令语句的操作必须在程序运行时完成。
                      通常,汇编语言都应设立常数定义、存储定义、汇编控制、开始和结束等伪指令。
                      (1)常数定义伪指令。例如,在ARM汇编语言中定义常数的格式为:
                      
                      其中,EQU是语句的记忆码,x是用户定义的常数。这条语句的功能是定义标记符x的值为50。
                      (2)存储定义伪指令。例如,ARM汇编语言使用DCB来定义内存单元。
                      
                      这条语句用于指示分配一片连续的字节存储单元并进行初始化,str表示被分配的存储区域的起始地址。
                      (3)汇编控制伪指令,用于控制汇编程序的执行流程。
                      例如,在ARM汇编语言中,常用的汇编控制伪指令包括:
                      IF、ELSE、ENDIF:条件判断指令
                      WHILE、WEND:循环执行指令
                      (4)开始伪指令。例如,在ARM中可以使用ENTRY伪指令来指定汇编程序的入口点。
                      (5)结束伪指令。例如,在ARM中END伪指令用于通知编译器已经到了源程序的结尾。
                      对于每一条汇编指令语句,它由四个部分组成,或者说,被划分为4个区,依次是标号区、操作码区、操作数区和注释区。各个区域之间用确定的符号分隔开。标号区中的标号用于指示一条汇编指令语句,它实际上代表该指令的内存单元地址。操作码区是该语句的指令助记符,它可以是机器指令助记符、伪指令码等。操作数区指出本条汇编指令所操作的运算对象,用寻址方式指定操作数的来源,常用的是寄存器操作数和内存单元操作数。
                      宏指令语句
                      在汇编语言中,还允许用户将多次重复使用的程序段定义为宏。宏的定义必须按照相应的规定进行,每个宏都有相应的宏名。在程序的任意位置,若需要使用这段程序,只要在相应的位置使用宏名,即相当于使用了这段程序。因此,宏指令语句就是宏的引用。
               汇编语言程序示例
               下面分别以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进行与操作即可。
                      数据采集程序段如下,
                      
 
本知识点历年真题:
隶属试卷 题号/题型 题干 难度系数/错误率
   2010年下半年
   嵌入式系统设计..
   上午试卷 综合知识
第5题
选择题
编写汇编语言程序时,下列寄存器中程序员可访问的是(5)。

72%
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


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