汇编语言代码书写规范.doc_第1页
汇编语言代码书写规范.doc_第2页
汇编语言代码书写规范.doc_第3页
汇编语言代码书写规范.doc_第4页
汇编语言代码书写规范.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编语言代码书写规范 第1章 文件结构每个汇编程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。头文件以“.h”为后缀,定义文件以“.asm”为后缀,宏定义文件以“.mac” 为后缀。1.1 版权和版本的声明 版权和版本的声明位于头文件和定义文件的开头(参见示例1-1),主要内容有:(1)版权信息。(2)文件名称,标识符,摘要。(3)版本历史信息。;*;Copyright (c)2002 , 广东步步高教育电子分公司 ;All rights reserved. ; ;文件名称:di.asm;文件标识:英汉词典程序文件;修改历史:;版本 日期 作者 改动内容和原因; -;1.0 1999.12.1 黄福广 BA757英汉词典完成 ;2.0 2002.5.1 杨文容 BA777英汉词典移植完成;*; 示例1-1 版权和版本的声明1.2 头文件的结构头文件由三部分内容组成:(1)头文件开头处的版权和版本声明(参见示例1-1)。(2)常量和变量的定义。(3)宏定义(参见示例1-2)。假设头文件名称为di.h,头文件的结构参见示例1-3。【规则1-2-1】用 .include di.h头文件(编译器将从用户的工作目录开始搜索)。【规则1-2-2】每个标号定义时,要加空格时都用”Tab”键,定义符和定义值要整齐,每个定义符后都在同一列加上”;”(分号),分号后加上每个标号的注释(参见示例1-3)。(版权和版本声明见示例1-1,此处省略。);-; 常量定义;-;-;功能 :设置LCD的显示页面;入口 :页面值;出口 :无; 修改历史:; 版本 日期 作者 改动内容和原因; 1.0 2002.5.1 XXXX BA757英汉词典用 ;-;LCDSETPAGE.MACRO PAGEPARA;ldaPAGEPARA;读参数and#%00001111;高4位清0ora#%10110000;重设高4位LCDWDAT;向LCD写数据.ENDM;-; 示例1-2 宏定义文件的结构(版权和版本声明见示例1-1,此处省略。);-; 常量定义;-;FIRST_HZ_CODEHequ$85 ;代码最小的汉字码(汉英一级索引)FIRST_HZ_CODELequ$de ;LAST_HZ_CODEHequ $fc ;代码最大的汉字码(汉英一级索引)LAST_HZ_CODELequ $a0;-; 变量定义 ;-;m_ec_WordCompressOffSetL ds1 ; 压缩数据数据地址低位m_ec_WordCompressOffSetH ds1; 压缩数据数据地址高位m_ec_CompressData ds1 ;根据偏移取的压缩数据 m_ec_BitInCompressOffSet ds1 ;在压缩区某个字节的位偏移 示例1-3 汇编头文件的结构1.3 定义文件的结构1.3.1定义文件有三部分内容:(1)定义文件开头处的版权和版本声明(参见示例1-1)。(2)对一些头文件的引用。(3)程序的实现体(包括数据和代码)。假设定义文件的名称为di.asm,定义文件的结构参见示例1-4。(版权和版本声明见示例1-1,此处省略。).includedi.h;引用头文件;-;(函数使用说明);-;fun_ec_EnToCh:;-; 示例1-4 汇编定义文件的结构1.3.2函数(参见示例1-5)【规则1-3-1】原则上函数内不允许对绝对地址进行操作。【建议1-3-1】函数内不要分配大的数组,占用堆栈空间。【建议1-3-2】函数内尽量不要使用数字和字符等常量,而要用标识符常量,便于以后的修改。【建议1-3-3】每个函数体不得超过150行(不含注释);-;功能 :把保存在单词缓冲区的单词送到; 显示缓冲区;入口 :无;出口 :无;堆栈使用:无;全局变量:m_ec_BuffLine,m_ec_BuffColumn ; 两变量为显示缓冲区的行列计数器; 修改历史:; 版本 日期 作者 改动内容和原因; 1.0 2002.5.1 杨文容 BA777英汉词典用;-;fun_ec_LoadWord:; ldy#0;lw_loop:; ldam_ec_SaveWordBuff,y;读一个字节 beqlw_next; =0? stam_ec_TempBuff,y;不等于0,保存到TempBuff iny; jmplw_loop;跳转回去再读下一字节lw_next:;savewordbuff已读完 stam_ec_TempBuff,y; (A)=0,保存到TempBuff末 jsrfun_ec_TempToDispBuff;调用将TempBuff数据转移;到DispBuff中去的子函数 ldam_ec_BuffColumn;显示缓冲区列计数器为0吗? beqlw_end;为0,跳转结束 lda#0; stam_ec_BuffColumn; incm_ec_BuffLine;行计数器加1lw_end:; rts;-; 示例1-5 汇编语言的函数结构1.4、编译连接环境 【规则1-4-1】在项目文档和项目源代码的ReadMe文件,说明编译连接环境和方法,特别是 Dos 行命令下相关的 Path ,及编译连接参数。(参见示例1-6)一、编译:X6502 -q 输入文件名 输出文件名 选项 或X6502 -q 选项 输入文件名 输出文件名q静态模式: 编译程序只在屏幕上输出错误和行号。输入文件名: 如果忽略文件扩展名,那缺省的是 .asmX6502 编译源文件.asm, 输出目标文件.obj输出文件名: 如果忽略文件名,那缺省的跟输入文件名一样,扩展名是 .objX6502 编译源文件.asm,输出目标文件.obj-t : 终端,编译(.asm文件), 创建(.obj文件), 向终端输出程序清单-p : 打印机, 编译(.asm文件),创建(.obj文件),向打印机输出程序清单-d : 磁盘, 编译(.asm文件),创建(.obj文件),向磁盘文件(.lst)输出程序清单 二、连接: link -q c file1 -loffset file2. -ofile -Lfile. -optiones -q: 主要参数。该参数把连接器置为情态模式,即只向屏幕输出连接错误的信息。-c: 领先于第一个输入文件,它置连接器为命令行的模式。File1:必须要求的。至少必须指定一个输入文件-l:(小写l).file2:第二个输入文件。可以同时连接几个文件,跟第一个文件的句法结构、段偏移量一样。-o:第一个输出文件名。如果忽略输出文件名,那连接器创建缺省的跟第一个输入文件同名的文件。扩展名由输出文件格式决定。-L:(大写L)把库文件包含进来。不必指定扩展名,因为连接器自动认为是(.lib) 最多可以包含50个库文件。-:最后的负号(-)是列表选项的前缀。(不能有空格分开),如果命令行忽略选项,那连接器会有提示。 示例1-6 ReadMe.txt第2章 程序的版式版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要构成因素。因此,可以把程序的版式比喻为“书法”。2.1 对齐 【规则2-1-1】 要求编辑中对齐使用 Tab ,而编辑软件中将Tab设为 8 个字符位置,且跳格不用空格代替。 【规则2-1-2】每行程序宽度为6个Tab宽,即8*6=48个字符,第49列为分号,分号后写注释。 【规则2-1-3】标号从行首(即第1列)开始输入,标号后不直接跟汇编指令,换行后加一个Tab键后再输入汇编助记符,输完助记符后再加一个Tab键才输操作数. (参见示例2-1)。fun_ec_LoadWord:; ldy #0; (加注释) 1个Tab 1个Tab 4个Tab 示例2-1对齐2.2 注释汇编语言的注释符为”;”。注释通常用于:(1)版本、版权声明;(2)函数接口说明;(3)重要的代码行或段落提示。 【规则2-1-1】使用中文做注释。 【规则2-1-2】汇编语言是低级语言,原则上要求每行都加上注释。最少注释率不得低于50%。 【规则2-1-3】边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。 【规则2-1-4】注释应当准确、易懂,防止注释有二义性。错误的注释不但无益反而有害。 【规则2-1-5】尽量避免在注释中使用缩写,特别是不常用缩写。 【规则2-1-6】注释的位置应与被描述的汇编指令相邻,汇编语言一般把注释放在指令的右方。(参见示例1-4)。 第3章 命名规则3.1 共性规则【规则3-1-1】标识符应当直观且可以拼读,可望文知意,不必进行“解码”。标识符最好采用英文单词或其组合,便于记忆和阅读。切忌使用汉语拼音来命名。程序中的英文单词一般不会太复杂,用词应当准确。例如不要把CurrentValue 写成NowValue。【规则3-1-2】单词连写时,用第一个字母大写来区分。如: CurrentValue。3.2 常量的命名约定 【约定3-2-1】常量全用大写的字母,用下划线分割单词。 例如: MAX equ 100; MAX_LENGTH equ 100;3.3 变量的命名约定【约定3-3-1】全局变量名的约定: g_模块名+变量标识名 如: g_card_CardNumberds1;名片总数量 g_ sys_KeyCodeds1;系统变量,保存键码【约定3-3-2】模块变量名的约定: m_模块名+变量标识名如: m_ec_WordOrderds2;英汉单词序号 m_ec_DispBuffColumnds1;显示缓冲区列计数 m_ec_DispBuffLineds1;显示缓冲区行计数3.4 函数的命名约定【约定3-4-1】函数的命名约定:fun_+模块标识+_+函数标识名; 如: fun_sys_PutChar:;系统程序,显示一个字符 fun_ec_Unpress:;英

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论