ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:33.52KB ,
资源ID:7069565      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7069565.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言的艺术组合语言的艺术1准备工作.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言的艺术组合语言的艺术1准备工作.docx

1、汇编语言的艺术组合语言的艺术1准备工作汇编语言的艺术(组合语言的艺术)-准备工作第一节系统 一、系统之选择 只因真正瞭解电脑的人太少,迷信名气的结果,使得IBMPC/AT占有了市场。为求电脑普及应用,我们唯有因陋就简,针对IBMPC/AT及其兼容系统,作进一步的分析和说明。 尽管使用80486CPU的微电脑已问世,我个人认为以其造价及功能而言,并不符合效率法则。在从事艺术工作的立场,价值的高低,与所采用的材料没有绝对的关系。更何况我们正要证明,利用组合语言的制作技巧,能够使功能不高的微电脑发挥最大的边际效益。故本书仅以8088CPU指令为研讨对象,至于程式应用在什么机型,就不在本书的考虑范围内

2、了。 二、目录及磁盘 假定读者为有经验的程式师,且电脑为IBMPC/XT/AT。则在着手制作程式之初,应该先将系统准备妥当。即所谓工欲善其事,必先利其器,如果未能注意到下面所提的细节,仅仅制作一、两个程式尚可应付。待工作量一大,程式渐渐增多,不是某些程式找不到,就是找到了也不能一目瞭然。结果是心烦意躁,马马虎虎,另外再写一个,勉强应付了事。 硬盘空间较大,应行注意的事相对的也较多。首先应妥善规划好目录及子目录的分类及应用方式,否则每当要找一个档案时,往往有大海捞针之叹。再不然,在修改程式时,如果将不同的版本放在一起,一定会张冠李戴,错误百出。 每位程式师都应该有自己的目录,而且每个不同的整套档

3、案都应有不同的子目录,这样方能明确的分辨以及应用。而最有效率的方法是,在每一子目录中,档案数不宜太多,且仅存放在同一工作项目下所需要的程式。 一旦硬盘坏了,所有贮存资料均将付诸流水。为了安全,一定要用软盘备份。最好每天复制一次,虽然每次复制,相当麻烦,但是万一程式被毁坏,那种损失是无从估计的。 最好的方法,是制作一个专门复制的工具,一般用.bat应用程式,每天工作完毕,只要执行一次即可。 三、应用工具 程式写作是为了控制电脑运作,应用工具则是将程式师的观念和理解转化为能够连续执行的指令。因此,市面上的应用工具虽多,却不见得对程式的写作有所助益。下面列了几种,只要运用纯熟,绝对够用了。 程式写作

4、:EDLIN,PEII,WS等。 程式编译:masm.exe 早期(1.25)版本容许较多的外界标题,即externallabel,但该版本仅限用于8088指令,较宜大型程式处理。 4.0以前的版本,于档案开始时,可用.xcref以产生标题及缓冲器的位址对照表。但后期的版本会发生错误,不能再用。 程式联接:link.exe 早期的版本对segmentpublicxxxx有些规定,但3.0以后,除了对code及data有效外,其他如byte及word等皆无作用。 程式侦错:debug.exe或symdeb.exe及mapsym.exe 后两者为套件,必须另购。其优点为在侦错过程中,可以使用原程式

5、中的标题名称,且可设断点等,侦错方便,功能较强。 系统处理:pctools.exe是dos下很有用的工具,可以作档案管理,也可用来直接修改程式机器码。此外,连机时可以用ll.exe或xtalk.exe等。尤其是系统程式的侦错,经常需要用联机的方式,以另一台微电脑作为监视器。 这些工具应统一放在dos子目录中,且须在系统之自动执行程式(autoexec.bat)里,先设妥优先通道(path)如: 1:PATH=DOS; 是则,不论在哪一个子目录中,前述之工具皆可使用。四、简化名称 前述各种工具,在程式侦错过程中使用频繁,为了应用上的方便,如果能少输入一些字符,不仅节省时间,且可避免错误。令用者在

6、惯性反应下,得以集中精神,思考其他细节。 简化名称是最简单的方法,最好只用一个字母,由于长度相等,其后面的档案名称,就可以利用系统所提供的“F3”复制上行功能,不必再行输入。 是以:改为 masm.exe改为m.exe link.exe改为l.exe debug.exe改为d.exe symdeb.exe改为s.exe 例如:在完成一个程式后,若要汇编,只要改第一个字母即可。 c:emyfile.asm(原来在系统中输入的字符) 此时仅输入“”,再按“F3”键,立即变为: c:mmyfile.asm 此外,如不需.lst等档案,则再加一“;”即可。 c:mmyfile.asm; “”及“”等同

7、样都可依循上面的方法,看来是雕虫小技,但实际上所节省的时间及精力却不同凡响。 五、参考资料 除专门性的资料外,程式师应该备妥各种有关输出、入,各种周边设备的参考资料或手册等,以便随手查阅。 最重要的是软件参考手册MS-DOSSoftwareReference,其中有各种中断命令的使用规格。唯应注意的,是有一些中断功能与IBMBIOS相同,我建议读者不要使用这些中断,因其调用过程中,要借道BIOS,会使速度减慢。 其次为IBMProgrammersManual的BIOS中断规格,是处理所有周边设备必需的工具。 正因为它涉及周边设备,在设计中文系统时,输出入、显示及列印等功能都有待修改,这本手册更

8、须彻底瞭解。 此外还有键盘的输入码表,也是编程必备的资料,本书附录三即为简要的码表介绍。 如果是编写应用程式,上述的资料已足够应付,但若涉及系统,则尚需瞭解系统的记忆空间安排,下表为IBM微电脑的记忆区结构。各种厂牌设计理念虽有差别,但大同小异。 系统段位址机能用途 00000000H中断调用表 00000500HDOS及系统操作区 00004C00H周边控制程式 00005400HCOMMAND运用 00000E0A0H使用者操作空间 000A0000H萤幕缓冲区(VGA) 000B0000H萤幕缓冲区(CGA,EGA) 000C0000HEMS记忆体扩充区 000F0000HROMBIOS

9、程式区 上述之系统段,调入段暂存器中时,原来的000AH应该是0A00H,余同。 又使用者操作空间的起始点,因各家设计而异。 第二节应用工具的制作 一、联接目标档(OBJFiles) 程式完成以后,相互间的联结,越大越难,有时是结构的改变,有时是档名的变动。不论什么因素,在在都需要加以维护,而且对工作效率关系重大。 因此,需先建立一个do.bat的执行档,其内容为: 1:LINK/MXXXX 此XXXX为一记录档,其中记载所有需联结的目标档名,如果有任何异动,直接更改此档即可。 在联结时,执行DO即可。 例如:要制作draw.exe档,已有dr1.obj.drn.obj以及dr-seg.obj

10、等档,则此xxxx档内容应为: 1:DR-SEG+ 2:dr1+dr2+.drn 3:DRAW,DRAW,, 在执行do后,如果没有错误,所产生的draw.exe以及draw.sym即可供测试。 也可在第三条后加入: 4:symdeb(或仅用)draw.exedraw.sym 似此,在发展初期,立即可以测试。如果不需再次联结,将第四条另外作一.bat档,随时执行亦可。 另外有一点需要注意的是,为了要让可执行的程式由指定的起点开始,应在原始档.asm的结束格式标记end后,加一起点的标题名称。 此标记不论有多少,联接目标档时,会以第一个找到的标题为唯一的入口。如果程式很多,参与工作的程式师也多,

11、在分开测试时,经常使用自己的入口,一旦联接在一起,就可能发生错误。 解决的方法是由负责联接的程式师,事先准备好前述XXXX记录档,将带有入口标记的程式放在最前面即可。当然,将其他程式标记后的标题删除亦可,但不如前法效率高。二、目标档侦错及工具 在使用debug时,因为名称简短,用法也简单。若使用标题侦错symdeb.exe则不然,因为首先要生成.map档,测试时,输入文字也较多。对不断使用的人来说,难免嫌烦。简化的方法,是先制作执行档:s.bat及sm.bat s.bat是专供指定程式侦错用,内容为: 1:symdeb%1.sym%1.exe 这是指已经有了原档的.map时,如果程式刚联接完毕

12、,且在联接档中,没有生成.map的语句,则应制作sm.bat如下: 1:mapsym%1.map 使用标题侦错工具有很多优点,其功能较DEBUG强得多。但是使用者必须注意,需要测试的标题,应该在程式中宣告PUBLIC,否则无法直接跳到该处。 尚有些特殊效果的程式,也应备妥测试的工具,甚至以利用监视器的方式,用另外一台电脑来控制。有一些通讯软件,如xtalk加上symdeb.exe,通过串行埠(serialport)可以联机调试,其手续如次: 1,先在待调程式的主机上输入通讯指令: C:MODECOM1:9600,N,8,1 c:symdebmyfile.exe 2,再于已与主机经串行埠联接的副

13、机上输入: C:XTALK 进入指令输入状态,再输入: C:SP 表示设定传输速度,一般多采用9600,但视主机而定。 C:9600 最后,输入操作指令: C:GOLO 表示用区域网络,即串行埠口。 这时等待联机成功的讯号,见到萤幕上出现“”,即可开始侦错。 3,在主机方面,尚要输入: C:=COM1(或COM2,端视双方的通讯口而定) 4,至于侦错方式,与利用一台电脑时相同,只是此时在主机上出现的是执行后的结果,而由副机控制侦错步骤。 第三节分类定义 一、段名(SegmentName)定义 对段名多于一个的程式,最好先有一个定义段的程式,以DRAW为例,假定程式为两段,一为控制程式段,一为绘

14、图程式段。资料分为三段,一为应用资料,一为参考资料,以及制作资料。此外还有一资料索引段,合计有六个段。 兹建议,在通用的基础上,简化段名,将段分类如下: 程式段(CODESEGMENT)定名为CG 资料段(DATASEGMENT)定名为DG 索引段(INDEXSEGMENT)定名为IG 记忆段(MEMORYSEGMENT)名为MG 特设段(EXTRASEGMENT)定名为EG 堆栈段(STACKSEGMENT)定名为SG 当各段超过一组时,则再加数字以区分之。 如在dr-seg.asm中,可设为: 1:TITLESEGMENTDEFINITIONOFPROGRAMDRAW 2:CG1SEGME

15、NTPUBLIC 3:CG1ENDS 4:CG2SEGMENTPUBLIC 5:CG2ENDS 6:DG1SEGMENTPUBLIC 7:DG1ENDS 8:DG2SEGMENTPUBLIC 9:DG2ENDS 10:DG3SEGMENTPUBLIC 11:DG3ENDS 12:IGSEGMENTPUBLIC 13:IGENDS 14:END 在SEGMENTPUBLIC之后,有多种表示方式: SEGMENTPUBLICXXXX XXXX=CODE表示为程式段,在联接时,属程式的段与段前后衔接。两段程式之间,以000H填充至节(每十六个字元为一节)之首位。 XXXX=DATA表示资料段,在联接

16、时同上。 如果程式师为了某种原因,必须严格控制程式之位置及长度时,不宜使用上述两种方式。 最简单之陈述方式,即在SEGMENTPUBLIC之后,保持空白。 XXXX=BYTE表示程式联接后,各程式之间紧密接合,不留空位。这种方法,有利于程式精简。 XXXX=WORD表示程式联接后,各程式之间紧密接合,但在后面的程式必然由双数位起。 又如在XXXX前后加以引号如: SEGMENTPUBLICXXXX 此一宣告,用以通知汇编程式各段的顺序及定义。因此在编写程式时,只要使用的段名及定义与本档相符,不管将各段安排在程式任一位置,都不致发生错误。 XXXX与本段程式的排列顺序有关,在联接时,先将引号中的

17、字串排序妥当,各程式即依此顺序排列之。 也就是说,凡是使用了引号,则程式联接的顺序,即以在引号中字串,于联接时出现先后为顺序。 单一程式档的错误不难测知,但若各段之间发生错误,对经验不足的程式师,将有无从下手之虞,不得不慎! 一般说来,在联接时,最令人头痛的错误讯息为: fixupoverflowatnnnn. 不论其错误提示内容如何,此种错误的发生,多半是因为段与段之间的标题、缓冲器或是暂存器的使用发生了混淆,联接程式得不到正确的信息所致。 解决方法是在第一个错误讯息出现时,立刻以Ctrl_C停止汇编,记下第一个讯息,再在原程式中,找到该位置,(多半为一标题位置)在此标题之前,一定会发现与段

18、有关的错误。二、原始档(SourceFile)档名定义 在共同设计大型模组时,程式师间的默契,全赖事先相互约定。否则程式越大,所面临的困难将越多,经常耗时费事,甚至最后功败垂成。 因此,在设计之初,必须妥善规划,将一应有关的档案、名称、功能等,皆明确地加以定义。参与设计的程式师,更必须严格遵守,方能得心应手。 原始档名的定义,其目的有三: 1,代表程式设计者:当制作的程式甚多时,一见档名,就应能分辨出各个程式的设计人。再如某程式师所编程式在一个以上,则应在其本人代码之后,加一数字编号。这样,遇有任何问题,立即可以找到来处,进行追踪。 2,代表程式功能:每当联结后发生问题时,应能由档名查知问题所

19、在,故每种功能宜给予适当的名称。 3,代表联结的关系:除了功能外,有时尚须表示各程式之间的联结关系。如某一程式必须安排在另一程式之前或后,亦应在档名最后,以数字表示顺序。 若参与的程式师不超过廿人,则以一字元为限,各人事先选定一个字母,作为档案名称的第一字元。第二字元则视该程式师是否编写一个以上的程式而定,是则取一数字代表之,若无则免。 功能以三到六字元为宜,能统一长度将更为方便,余下一字元留供数序用。 例:程式师代号为,本程式之编号为3,功能为DRAWS,此外并无联结关系,则其名应为: cdraws3.asm 三、标题定义 程式在整理或测试时,最大的困扰,是寻找某一个标题的出处或功能。如果在

20、同一档中,尚可利用cref.exe,列印出一份对照表来;如果不知道出自哪一个档案,在众多的程式中,就只有望洋兴叹了。 至于功能,如名称定得太长,不仅输入、修改不便,而且会使得程式看来杂乱无章,令人眼花撩乱。如果定得太简单,或各人任意定名,则难以理解。 所以,标题定名之重要性,不下于程式之写作。尤其是在参与人数众多时,标题不仅要统一,而且要能代表所有必备的讯息。 标题所代表的讯息有: Axxxxxxxx 分支代号 延伸定义 功能名称 程式出处 1,程式出处:如果很多人同时参加一个计划,而某程式师仅写了一个程式,此定义即为该程式师之代码。否则尚要附加编号,以便随时可查到。即使只有一个人写作程式,程

21、式可能不断扩大,为了制作的方便,或为了模组的分割,常有必要将程式分到其他档中。因此,一段程式究竟出自于哪一个档案,全赖标题表明,以便能迅速地找到。 程式出处一般用一个字母即可,如前述第一个字母代表此段程式来自编号为的原始档;或属于以为代号程式师的程式。 2,功能名称:除若干已知会用到的功能可以事先定义外,其余的多半是在发展过程中,针对需要而产生。对功能定义千万不要掉以轻心,一个程式的再利用价值,常与其功能定义息息相关,明确的定义,可以令人对其功能及应用方式一目瞭然。 功能名称长度以三个字母为宜,太长则输入费时,尤其是国人不见得个个英文了得,与其写错,不如藏拙。 如:DSP表示萤幕显示功能 PR

22、N表示列印功能 KIN表示键盘输入功能 3,延伸定义:若功能相同的程式过多,2,中的定义方式难以分辨,则可再加一延伸定义。 如:DSPDOT表示显示点阵 PRNCHI表示列印中文 KINASC表示输入ASCII字符 4,分支代号:在程式中常有分支,分支代号最理想是由小而大,依序安排。但由于写作时常难以预知后情,故宜先留空号,以便扩充。 如:DSPDOT10 PRNCHI06 KINASC24 四、缓冲器定义 Bxxxxxxx 延伸定义 功能名称 类型 缓冲器保留字 第一个字母规定用,为缓冲器保留字。 第二个字母定义其类型: Q=QWORD如:BQxxxx缓冲器长度为字元。 D=DWORD如:B

23、Dxxxx长度为字元。 W=WORD如:BWxxxx长度为字元。 B=BYTE如:BBxxxx长度为字元。 S=STRING如:BSxxxx不限长度,但限BYTE型。 O=ORIGINAL如:BOxxxx表不可破坏的原始资料。 F=FLAG如:BFxxxx用作旗号。 第二字母以后所采用功能或延伸定义,与三、2,3相同。此外,所有缓冲器皆应统一设在缓冲器专用程式中,若系临时使用,或尚未正式联接,亦应设在各程式之首,以便于查阅、修改。第四节统一格式 一、格式统一之优点 不论采用何种程式语言,凡是共同工作、须相互研讨,或者在同一部门中,分担成败责任者,应该有统一的程式写作方式。这样不仅便于沟通,提高

24、程式的品质,且可避免因某一程式师之离职或出缺所造成的后遗症。 良好的程式,应如一篇美妙的文学作品,其中有技巧,有意境。其功能不仅表现在执行的效率上,也可以作为同行间学习、欣赏的媒介,这些都必须透过统一的格式达成。 尤其是把组合程式写作当作一种艺术创作,就必须经常相互观摩,如果没有共通的格式规定,则这样的程式和天书可以说没有多大的分别。不论注释写得再好,一般程式师自己都怕看自己的程式,更何况参阅他人的?但若有统一的格式,养成习惯后,不仅易看易懂,而且寻找、修改方便,写作也轻松省事。 二、规格 1,统一用大写字母,以利于阅读。 2,空格处应采用TAB,齐头等距,一目瞭然。 3,标题之后立即改行输入,以便阅读。 4,每行不得超过70个字母,以免长度不等,画面紊乱。 5,注记位于指令后,在第五个TAB的起点,空间不足时,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1