第七章 汇编语言程序设计

第七章 汇编语言程序设计

ID:43805640

大小:1.23 MB

页数:135页

时间:2019-10-14

第七章 汇编语言程序设计_第1页
第七章 汇编语言程序设计_第2页
第七章 汇编语言程序设计_第3页
第七章 汇编语言程序设计_第4页
第七章 汇编语言程序设计_第5页
资源描述:

《第七章 汇编语言程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第七章 汇编语言程序设计本章教学目的理解源程序的结构理解为各种语句的功能和格式掌握程序设计的基本方法掌握上机过程7.1汇编语言源程序基本框架汇编语言源程序若干个段构成、数据段、附加段和堆栈段组成。P178每个段都有段定义语句和其它有关语句设置,长短按需要而定。用段名标识一个段,并确定段的首地址。一个段的大小一般可以是1-64KB,占据从段首开始的一片连续存储单元。源程序的大小和结构不同,所包含的逻辑的数目也不想等,但至少有一个代码段。源程序一般在DOS操作系统上运行,程序运行完毕应返回DOS。其一般结构如下:SEGMENTSTACK〈堆栈段的内容〉STACKENDSSE

2、GMENTDATA〈数据段的内容〉DATAENDSSEGMENTCODE〈代码段的内容〉CODEENDSEND〈启动标号〉对于一般程序来说,定义太多的段只会增加程序设计的复杂性,通常需要一个代码段、一个数据段和一个堆栈段,有时可包含一个附加段。DSEGSEGMENTADB‘1234567890’DSEGENDSESEGSEGMENTBDB10DUP(?)ESEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,ES:ESEGSTART:MOVAX,DSEGMOVDS,AXMOVAX,ESEGMOVES,AXLEASI,ALEADI,BADDDI,

3、9MOVCX,10MOVE:CLDLODSBSTDSTOSBLOOPMOVEMOVAH,4CHINT21HCSEGENDSENDSTART[例]:在数据段定义首地址为A的10个字符,将这10个字符以相反次序传送到附加段首地址为B的内存单元中。数据段附加段代码段返回DOS上机举例datasegmentaadb'thisismyprograme$'dataendscodesegmentassumecs:code,ds:databegin:movax,datamovds,axmovdx,offsetaamovah,9int21hmovah,4chint21hcodeendse

4、ndbegin一、段定义伪指令P161段定义伪操作的格式如下:segment-nameSEGMENT……segment-nameENDS其中省略号号部分数据段、附加段和堆栈段,一般是存贮单元的定义、分配等伪操作代码段则是指令及伪操作。例180页4行和10行例180页16行和181页第66行二、段寄存器分配说明伪指令P162必须明确段和段寄存器的关系,其格式为:ASSUME<段寄存器名:逻辑段名>,<段寄存器名:逻辑段名>,……其中段寄存器名须是CS、DS、ES和SS之一。段名必是由前面的段定义语句定义过的段的段名。此语句写在代码段的开始处。例180页17行三、过程定义伪

5、指令P162定义格式:过程名PROC[NEAR]/FAR……RET过程名ENDP例181页51行、64行、65行例181页49行调用格式:CALL过程名四、返回操作系统方式2、将主程序定义为操作系统的远过程主过程名PROCFAR……RETEND主过程名例180页19行、181页50行、67行1、使用4CH号DOS功能调用MOVAH,4CHINT21H特别注意和一般过程定义的区别四、返回操作系统方式(续)4、使用0号DOS功能调用MOVAH,0HINT21H3、使用20号BIOS功能调用INT20H第3和第4中方法只有在.COM类型的文件中才可以使用例191页35行五、模

6、块开始伪指令/列表伪指令NAME<模块名>:P163为模块起名。TITLE<标题>:P163制定了在每一页上打印的标题NAME和TITLE不是必须的:如果程序中没有name,则MASM将用TITLE中的标题的前6个字符做为模块名,如果既无NAME,也没有TITLE,则用源文件名作为模块名。六、模块结束伪指令格式:END[标号或主过程名]功能:告诉汇编程序源文件结束,并给出了执行程序的启动单元地址。标号:给定了程序开始执行的启动单元地址。如果有多个模块相连接,只有主模块中的END语句代标号举例Nameexp_1datasegmentaadb'thisistest1$'da

7、taendscodesegmentassumecs:code,ds:databegin:movax,datamovds,axmovdx,offsetaamovah,9int21hmovah,4chint21hcodeendsendbeginNameexp_2datasegmentaadb‘thisisaprocedure$'dataendscodesegmentassumecs:code,ds:datastartprocfarpushdsxorax,axpushaxmovax,datamovds,axmovdx,offsetaamovah

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。