欢迎来到天天文库
浏览记录
ID:44090739
大小:335.50 KB
页数:42页
时间:2019-10-18
《第4章 汇编语言》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、汇编语言程序设计第四章汇编语言程序设计汇编语言介绍第4.1节汇编语言介绍一.汇编语言种类绝对汇编:只能将助记符转换成机器码符号汇编:增加了段的定义,可用符号表示变量、常数、地址等宏汇编:增加了宏指令、结构、记录等高级功能二.伪指令编译后不产生代码,仅在编译时起控制或指示作用。如:OFFSET三.宏指令将常用的一系列指令定义成一条宏指令,编译时先对宏指令进行预处理(宏展开),再对展开之后的程序进行编译。四.汇编程序开发过程编辑源程序编译连接调试汇编语言介绍1.编辑—编辑后形成源程序文件*.asm,以ASCII码形式存盘2.编译—对源程序*.asm进行编译,形成*.obj文件,以二进
2、制形式存盘编译工具:masm/tasm例:masmauto.asm3.连接—将1个或多个*.obj文件进行连接,形成*.exe或*.com文件连接工具:link/tlink例:linkauto.obj4.调试—对程序进行调试,调试工具:TD.exe或debug.exe.COM文件与.EXE文件的区别.COM文件是内存映像文件,直接装入内存即可执行,其中代码、数据、堆栈、扩展4个段完全重合,程序不超过64KB,装入执行较快.EXE文件不是内存映像文件,执行时需要把代码段、数据段、堆栈段等重新定位,然后才能执行,装入执行速度相对较慢。.COM或.EXE文件装入内存时都会产生一个256
3、字节的程序段前缀PSP(ProgramSegmentPrefix),包含程序运行的基本信息,存放在程序开始的0~FFH处,具体格式如下:格式化参数2,给未打开的FCB用16+6CH保留4+7CHDOS专用,前两字节为环境块地址48+2CH格式化参数1,给未打开的FCB用16+5CH非格式化参数或默认磁盘传输地址128+80H保留22+16H标准错误出口地址(INT24H)4+12HCTRL_BREAK中断出口地址(INT23H)4+0EH保留DOS功能调用入口(同INT21H)运行终止处理程序地址(INT22H)154+4H+5H+0AH可用内存空间,以小段为单位2+2H指令IN
4、T20H,终止程序2PSP+0H字段说明字段长度字段偏移程序段前缀说明PSP+0H处存放了一条指令,是用于结束程序的DOS中断,即INT20HPSP+2H处是程序可用的内存空间,以小段为单位,每小段为16字节PSP+5H处是DOS功能调用INT21H的入口地址。PSP+0AH~0DH是INT22H的入口IP和CSPSP+0EH~11H是INT23H的入口IP和CSPSP+12H~15H是INT24H的入口IP和CSPSP+2CH处是环境块地址汇编语言介绍参数传递早期的DOS支持格式化参数,例:COPYA:file1.asmC:file2.asm将A:file1.asm格式化
5、参数1存于PSP+5CH处,格式为:将B:file2.asm格式化参数2存于PSP+6CH处非格式化参数存于PSP+80H处012345678910111FILE1ASM汇编语言格式五.汇编语言格式1.段的定义:由SEGMENT和ENDS定义段seg_nameSEGMENT[align_type][combine_type][‘class’]……;[]中的参数为可选参数seg_nameENDS例:data1segmentparapublic‘data’;数据段定义stringdb‘Hello!’,7,‘$’data1ends1)段名seg_name代表了所定义段的起始地址2)a
6、lign_type表明该段起始位置在内存中的对齐类型para指定该段从一个小段(16字节)的边界开始;byte指定该段从任一位置开始;word指定该段从一个字边界开始page指定该段从一个页(256字节)的边界开始汇编语言格式3)combine_type指出不同程序模块中具有相同段名的分段的连接类型public表示该段在连接时,将与有相同名字的其他分段连接在一起,且仅有一个起始地址;common表示该段连接时将与其他同名分段重叠,也只有一个起始地址,不同分段会产生覆盖;stack表示该段是堆栈段,连接时不同模块中的堆栈段连接在一起4)‘class’类别,连接时用于组成段组名当连接
7、两个源模块时,具有相同‘class’名的两个段在存储器中的位置是紧靠在一起的,但两个段并不会合并成一个段。汇编语言格式例1combine_type连接类型举例,两个模块定义如下;-------sourcemodule1-------;----------sourcemodule2----------data_segsegmentcommondata_segsegmentcommon…………data_segendsdata_segendsss_segsegmentstackss_s
此文档下载收益归作者所有