




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、51指令集汇编器的构建方法探究曹晓龙打李华2(1.贵州师范大学物理与电子科学学院,贵州贵阳550002; 2.贵州师范大学职业技术学院,贵州贵 阳 550014)摘要:本文主要讨论了如何构建一个51指令集汇编器,主要从如何处理源程序中宏汇编指 令、如何解决将指令中的标号地址转化为实际物理地址以及如何最终将一条指令汇编为其对 应的机器码等问题入手讨论了可行的解决方法,且对最终如何产生机器码给出了两种可行的 方案。文中所讨论的各个问题及其解决方法均以得到实际的验证。关键词:汇编;汇编器;51指令集study the method of building a 51 assemblercao xiao
2、 long ,li hua(1.school of physic and electrical science,guizhou normal university,guiyang 550002,china;2.school of technology,guizhou normal universityguiyang 550014,china;)abstract: how to build an assembler which based on 51 instruction set is discussed in this paper, and it involves how to deal w
3、ith macro assembler instruction,how to translate those label address into physic address and how to translate instructions into machine code finally, and there are two ways to produce corresponding machine codes in this paper, all of the problems discussed have been solved practically.key words: ass
4、emble; assembler; 51 instruction set棊金项h:贵州省科学技术基金(黔科合j字lks201011号)作者简介:曹晓龙(1976-08),男,湖南省长沙市,汉族,硕士研究生,讲师,主要研究方向为soc系统级 设计;李华(1971-12),女,贵州省贵阳市,汉族,硕士研究生,副教授,主要研究方向为软件与理论近年來,随着soc系统级设计技术的发 展,应用这一技术进行soc产品设计开发的 早期验证越來越多地被采用。soc设计早 己成为集成电路设计的发展潮流。为了培养 适应于新形势下的高级人才,各高校相继开 设了相关的课程以配合市场需求。其中51单片机仍ih作为各高校重
5、点开设的基础课 程2,该课程的特点强调理论与实践紧密 结合的原则,因此,一般情况下都需要配套 一定的实验设备。多数为实验箱,随着时间 的流逝,这些设备将会出现老化,h许多实 验无法得到验证的情形出现。这种情况将造 成一定的资源浪费和投入的开销加大。另 外,也因为实验场地和吋间的限制,使得学 生很难在短期内迅速掌握该门课程。为解决 上述问题,可以采用构建单片机仿真实验平 台的做法以缓解孑盾,节省教学实践,提高 学生动手能力。因此可以利用一些软件工具 以实现仿真实验室的构建,例如比较流行的 专用于单片机开发的proteus软件即可实现 上述功能。而systemc是由synopsys公司与 cowa
6、re公司针对各方对系统级设计语言的 需求,合作开发的可以较好地实现硬件的 系统级设计语言。并且,它将是系统级芯片 设计语言的发展趋势。对于一个以单片机为核心的仿真平台 的实现,需要解决许多问题,诸如单片机指 令集仿真器的实现、各种外设芯片的建模、 可执行程序文件的生成及导入等问题。为了 保证平台的完整性,需要平台中包含能够实 现对源程序文件进行汇编或编译功能的模 块,木文将讨论一种可行的汇编方法。1 end指令的处理51宏汇编指令end的作川是表征程序 的结束点,只冇那些在end z前的内容才能 作为参与最终的汇编。对该指令的解决方法较为简单,将end z前的内容进行复制,从而产生一个只包含
7、end之前内容的临时性文件。2 equ以及data宏指令处理equ以及data指令的格式一致,equ指 令的功能是将一个数或者特定的汇编符号 赋予规定的字符名称,而data则是将数据 地址或代码地址赋了规定的字符名称。例如 abb equ r1mov a, abb对这两条命令的处理如下:1)处理源程序文件中的equ、data命令,为此定义如下格式的结构体struct labstruint type;int line;char symbol20;char value20;该结构体用于记录源程序文件中的equ 以及data前所定义的符号,其屮type用于 记录符号的类别,如0表示标号或符号是由 e
8、qu定义的,1表示由data定义的,而2表 示其他。line表示符号所在的行,symbol 存储符号木身,value是equ或data之后所 定义的被替换字符。2)扫描源程序文件,找出所有的equ 或data所定义的符号,存入结构体labstru 数组中。3)再次扫描源程序文件,找岀指令屮 所有操作数为上述两种符号定义的标号或 符号操作数。4)检杳符号定义是否有效,这将按照 equ和data正确的语法规则进行检杳,例如 指令中出现的符号操作数如果是由equ定义 的,则该定义必须在该条指令z前等。这一 功能的实现需要借助于结构体中的line信 息。如果当前的line值小于符号中由equ 所定义的
9、符号所在的行值则表示错误的语 法格式。除此之外还需要检查equ所定义符 号是否为特定汇编符号或一个数据等。5)将转换后的结果指令写入一个新的 临吋文件,该文件的内容不再包含equ或 data宏指令。例如 di equ accmov dl,#23将替换为:mov acc,#233指令符号地址替换将指令屮的符号数据经过计算示替换 成对应的地址数据。例如ajmp delaydelay: mov ro,ftoffh假设此时计算出delay的地址为80h, 那么经过替换后上述指令将被修改为ajmp 80h具体步骤为:1)从上一步产生的临时文件小读取一 行到变屋s中,去掉多余的空格,设置地址 变虽addr
10、的初值为0.2)从s小分离出一条指令的各个部分, 包括标号、操作符以及操作数等,为此可定 义如下结构的数组:char parts510;根据51指令的结构,一条指令格式如 下:标号:操作码操作数;注释 其中操作数最多可有3个,最少没冇操 作数。即一条指令最多有5个有意义的部分, 因为注释是被滤掉的部分,因此不予考虑。 这一步可利用c提供的字符串分离函数实 现,也可自行编写程序实现。3)若该行指令为org宏指令,则设置地 址变量的值为org后面的地址操作数4)若为db> dw或ds宏指令且这些宏指 令前含有定义的符号,则将符号与当前地址 入列。为此也定义一个记录该类符号的结构 体struc
11、t instr_lab 一char string30;unsigncd int addr;并定义该结构体类型的队列。5)如杲是指令,则计算指令的长度也就 是指令占的字节数。计算的原则是根据指令 中操作数的类别进行。例如如果指令是立即 数,则需要加一或加二,根据立即数的长度 而定,并以计算的结果修改addr的值。若 指令前含有符号,则将符号入队。经过上述几步将产生一个符号队列,队列 存储程序中所有的由db、dw、ds定义的符 号或指令前的标号及其地址。下面的部分主 要是将这些符号替换成对应的地址数据。6)修改指令小的由db等広指令定义的符 号地址为实际地址,从头逐行读取文件,如 果是符号操作数,
12、并且是由db等宏指令定 义的,则将队列中对应项的地址部分加以替 换。7)处理指令中的标号地址,此时需要按 照51的地址计算方法进行计算。具体为如果转移指令是2字节的则用下面的公 式进行计算:re 1二地址差-2 rel=feh-地址差 如果是3字节指令则用re 1二地址差-3rel=fdh-地址差向前转移向后转移向前转移向后转移并将计算的结果替换指令中的符号操 作数并由此产生临时文件,该文件小所有的 符号地址均已被实际地址所替换。4机器码生成这里讨论两种简单可行的实现方法4.1根据每条指令产生翻译函数。定义如下结构体struct instr_stru 一char opstr10;pf p;其中
13、opstr用于存储指令中的助记符 号,例如mov, add等。而p是一个函数指 针,用于调用与助记符号对应的函数。函数 指针为如下定义typedef int (*pf)();51指令集共冇40多种助记符号。为此 定义该结构体数组cs以存储每条指令助记 符号及其调用的函数。在每个函数内部将按照指令的语法规 则检杳,判断操作数类型,获得操作码以及 操作数的值,并按16进制格式记录。例如cs0. opstr为acai 1, p扌旨向 acall函数。若读到的指令为acall 40h则将通过p 调用acall函数将得到acall指令的操作 码。因51结构简单,指令条数不多,从而 按照该方法可以实现对5
14、1指令的汇编过程。4.2利用文件比较的过程实现汇编过程 1事先建立一个文件,文件中每一行记录的 格式如下:操作符操作数类别/操作数,操作 数类别/操作数,操作数类别/操作数操 作码指令字节数例如mov a,立即数格式的指令在文件 中表现为:mova, #c 74 2牡表示操作数为立即数,而去掉mov与a 之间的空格则是为了处理的方便,示而的数 据74是该指令的操作码以及指令的字节数。2从文件中读取一行指令字串,并转换 成对应上面的格式,1.保留字串中的操作数 部分。例如mov a,ro转化为mova, roi(umova, 60h转化为inova, &addrmova,#23转化为niova, tic接着将转换后的指令字串与文件屮的 记录逐行进行比较,如找到对应项,则获取 其后的操作码以及根据指令字节数产生操 作数以牛成该条指令的16进制格式的代码。例如mov a, #23将得到代码74和23。 最后将得到的指令码产生一定格式的 文件,如intel hex文件格式。5结论本文对常用的51指令集的汇编方法进 行了讨论,文中所描述的算法已经在实际中 经过验证,利用算法所产生的hex文件能够 应用到proteus等软件屮,并得到预期的效 果。参考文献1邵作之,刘莉娟.基于sys
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年五年级下册数学《露在外面的面》(教案)
- 《定风波 莫听穿林打叶声》历年中考古诗欣赏试题汇编(截至2022年)
- 2024年作物收获机械项目资金筹措计划书代可行性研究报告
- 2024年歌舞厅娱乐服务项目资金需求报告
- 2025年湖南工业职业技术学院单招职业适应性测试题库及参考答案
- 2024年注射用骨肽投资申请报告代可行性研究报告
- 深圳高级中学(集团)2025届高三第三次诊断考数学试题+答案
- 2025年鹤壁职业技术学院单招职业倾向性测试题库完美版
- 二零二五年度精装修公寓转租合同电子版
- 2025年度工伤事故责任划分与赔偿方案合同
- 个人合伙开店合同范本
- 生而为赢自燃成阳-开学第一课发言稿
- 2024年设备监理师考试题库及答案参考
- 公司外派学习合同范例
- 2025年中国国投高新产业投资集团招聘笔试参考题库含答案解析
- 安徽省合肥市包河区 2024-2025学年九年级上学期期末道德与法治试卷(含答案)
- 年产10吨功能益生菌冻干粉的工厂设计改
- 理论力学课件00796
- 学习叠层母排必须知道的电力知识
- 微波与天线矩形波导
- 19+张爱玲经典《金锁记》英文版
评论
0/150
提交评论