开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 991|回复: 0
收起左侧

[其它] 汇编语言上机过程指导及示例

[复制链接]

结帖率:61% (35/57)
发表于 2013-2-4 11:20:05 | 显示全部楼层 |阅读模式   海南省海口市
从如何建立源文件到进行调试作下简要的介绍,并配例题说明。由于本人水平有限,在下文在如有错误及可以进一步修改的地方请大家指出
汇编语言上机过程:
一、上机前的软件准备:
MS-DOS操作系统(如:MSDOS6.22 , MSDOS7.0 等)
文本编辑器 (如:EDIT.COM , TURBO.EXE , TC.EXE , C.EXE 等)
汇编程序 (如:MASM.EXE , ASM.EXE 等)
连接程序 (如:LINK.EXE 等)
调试程序 (如:DEBUG.EXE 等)
二、汇编程序建立过程:
a.建立汇编源程序─通过───→b.编译为目标文件─ ↓┬─→d.连接为可执行文件
↑ 
│ c.不通过,重新修改(语句错误) ↓ 
├──────────────────────┘ ↓
↑ f.不正确,用调试工具调试,重新修改(逻辑错误) ↓ 
└────────────────────────────←e运行
↓正确
g.完成
三、现在对(二)的每一个标有字母的过程(PROCEDURE)进行详细说明
PROCEDURE a:建立汇编源程序(即:建立 文件名.asm)
这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。将源程序代码录入计算机的方法很多,下面将介绍具体方法。
1.通过MD-DOS自带的EDIT.EXE文本编辑器进行输入,在DOS提示符下键入:EDIT回车,这时如果你系统内可调用时,EDIT的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename为你起的文件名,由1-8个字符组成),asm 是为汇编程序识别而必须加上去的,不可更改。存盘后在DOS下可用DOS命令DIR来查看,如果看到了所存的文件存在,就可以进行进程b。
2.如果你的系统中没有EDIT,也可用你所熟悉的文本编辑器进行录入、编辑,如可用c语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。
PROCEDURE b:编译目标文件(即:编译为.obj .lst .crf文件)
这个过程计算机将把你编的正确的源代码编译为机器语言、程序清单及交叉引用表的目标文件。如果此时你的程序有语句错误,系统将报错,并指出在第几行,什么类型的错误,你可根据提示去逐一修改。现介绍具体过程:
在DOS提示符下键入MASM filename回车
(注:你系统内的汇编程序为MASM.EXE,如果你系统的汇编程序为ASM.EXE时,便将命令变为ASM filename回车。其中filename为你刚才在PROCEDURE a 中建立的文件名)
这时汇编程序的输出文件可以有三个(分别:.obj .lst .crf),便会出现三次提问,在这可以一路回车即可。下面显示的信息是源程序中的错误个数,如果为0则表示顺利通过,就可进行进程c。但如果不为0就说明有错误,并指出错误出现的行,可依据这个提示去进行修改。但如果错误太多还未等看清就显示过去了,可用如下命令形将错误信息存于一个你指定的文件,再用文本编辑器去查看。 MASM filename >filen (filen为你起的一个没用过的文件名,用以存放出错信息)以后可查看filen来得到出错信息。
PROCEDURE c:编译不通过,重新修改(错误类型:源程序语句不合法)
在执行过PROCEDURE b后,如有出错信息时,就要我们自己按PROCEDURE c去做,而不能跳跃到PROCEDURE d去,如果强行执行PROCEDURE d将无任何有效结果。
现在就开现找错吧!首先要清楚,在PROCEDURE b中检测出的错误均为每一条语句的语法或用法错误,它并不能检测出程序的逻辑设计(语句按排位置)错误,所以就要记好出错的行号。在记录行号后,就应再次执行PROCEDURE a,这时和操作应是打开已编好的源程序(以EDIT为例:在DOS提示符下键入:
EDIT filename.asm回车),依据行号进行修改并存盘,再次进行汇编,直至PROCEDURE b通过为止。便可继续向下执行PROCEDURE d。
下面给出一些常见出错信息,以便查对:
1、Register already defined 汇编内部出现逻辑错误
2、Unknown symbol type 在符号语句的类型中,有些不能识别的东西
3、Symbol is multi-defined 重复定义一个符号
4、Symbol not defined 符号没有定义
5、Syntax error 语句的语法与任何可识别的语法不匹配
6、Symbol is reserved word
企图非法使用一个汇编程序的保留字(例:定义add为一变量)
7、Not proper align/combine type SEGMENT参数不正确
8、One operand must be const 这是加法指令的非法使用
9、Operands must be same or 1 abs 这是减法指令的非法使用
10、Already have base register 试图重复基地址
11、Illegal size for item 引用的项的长度是非法的,(如:双字移位)
12、Illegal register value 指定的寄存器值不能放入“reg” 字段
13、Must be AX or AL 某些指令只能用AX或AL
14、Improper use of segment reg 段寄存器使用不合法(如:mov ds,0)
15、Division by 0 or overflow 给出一个用0作除数的表达式
16、value is out of range 数值大于需要使用的
17、CS register illeal usage 试图非法使用CS寄存器
18、DUP is too large for linker
DUP嵌套太长,以至于从连接程序不能得到所要的记录
PROCEDURE d:连接为可执行文件(即:连接为.exe 或.com文件)
在这个过程中一般没有意外,如果有也就是文件名打错了。
形式:在DOS提示符下: LINK filename 回车
PROCEDURE e:运行编译好的可执行文件
当PROCEDURE d通过后,会产生一个可执行文件,这时只需运行这个程序,看它是否按你所想象那样得出结果。在试运行期间,要尽量试一些临界状态,看 程序是否运行稳定、结果是否正确。如一切正常,便可进入PROCEDURE g了。
可最怕的是不OK,程序产生一些莫名其妙的结果(你可不要以为是你的计算机不听你的指挥,其实它是在一丝不苟地按照你编的程序执行。我以前总以为我的计算机出了毛病),如果是在考场上这时千万不要慌,稳住自己的情绪,先不要看计算机,静几分钟(反正时间多得是)。这时就要用到最关键、最常用的一步了,进行PROCEDURE f 。
PROCEDURE f:用调试工具调试,重新修改(逻辑错误)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表