- 1
- 0
- 约2.33万字
- 约 112页
- 2019-09-06 发布于广东
- 举报
(2) 编写example.asm,.def start是用来定义语句标号start的汇编伪指令,start是源程序.text段开头的标号,供其他文件引用。 (3) 分别对两个源文件进行汇编, example.asm和vectors.asm →example.obj和vectors.obj. (4) 编写链接命令文件example.cmd。 链接example.obj和vectors.obj →输出文件example.out, →映像文件example.map 假设目标存储器的配置如下: 程序存储器 EPROM E000h~FFFh(片内) 数据存储器 SPRAM 0060h~007Fh(片内) DARAM 0080h~017Fh(片内) 【例4.10】 链接命令文件example.cmd. vectors.obj example.obj -o example.out -m example.map -e start MEMORY { PAGE0: EPROM: org=0E000h, len=100h VECS: org=0FF80h, len=04h PAGE1: SPRAM org=0060h, len=20h DARAM org=0080h, len=100h } SECTIONS { .text :EPROM PAGE 0 .data :EPROM PAGE 0 .bss :SPRAM PAGE 1 STACK :DARAM PAGE 1 .vectors :VECS PAGE 0 } (5) 链接。 生成输出文件example.out和映像文件example.map。 将example.out装入目标系统就可运行了。 系统复位后,PC首先指向0FF80h,这是复位向量地址。在这个地址上,有一条B start指令,程序马上跳转到start语句标号,从程序起始地址0e000h开始执行主程序。 以上所述5步是一个常用的简单引导文件范例。 4.6 汇编语言程序设计 基本程序设计分为3大类: (1) 程序的控制与转移。 (2) 数据块传送程序。 (3) 算术运算类程序。 4.6.1 程序的控制与转移 包括:分支转移 子程序操作(调用与返回程序) 循环控制(重复操作) 这些指令都将影响程序计数器(PC),会造成把一个不是顺序增加的地址加载到PC。表4-3 条件:有一些指令只有当一个条件或多个条件得到满足时才能执行。如条件分支转移或条件调用、条件返回指令。表4-4。 多重条件 :BC pmad, cond[,cond[,cond]],当这条指令的所有条件得到满足时,程序才能转移到pmad。不是所有条件都能构成多重条件,某些条件的组合如表4-5所示。 1. 分支程序 根据条件判断改写PC值,使程序发生分支转移。 两种形式:有条件分支转移和无条件转移。 常用指令: B[D]、BACC[D] ;BC[D]、BANZ[D] 合理地设计延迟转移指令,可以提高程序的效率。应当注意,紧跟在延迟指令后面的两个字,不能是造成PC不连续的指令(如分支转移、调用、返回或软件中断指令)。 【例4.11】 条件分支转移指令BC举例。 BC new, AGT, AOV ; 若累加器A0且溢出,则转至new,否则往下执行 单条指令中的多个条件是“与”的关系。 如果需要两个条件相“或”,只能写成两条指令。如上一条指令改为“若累加器A大于0或溢出,则转移至new”,可以写成如下两条指令 BC new, AGT BC new, AOV 【例4.12】 计算 .bss x, 5 ;为变量分配6个字的存储空间 .bss y, 1 STM #x, AR1 ;A
原创力文档

文档评论(0)