masm编译与调试过程

masm编译与调试过程

ID:4160380

大小:185.55 KB

页数:19页

时间:2017-11-29

masm编译与调试过程_第1页
masm编译与调试过程_第2页
masm编译与调试过程_第3页
masm编译与调试过程_第4页
masm编译与调试过程_第5页
资源描述:

《masm编译与调试过程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《微机系统与接口》实验参考资料之一汇编语言与命令行动态调试程序DEBUG使用汇编就是把用汇编语言编写的源程序翻译(汇编)成机器语言的目标程序。汇编程序可使用小汇编程序(ASM)也可以使用宏汇编程序(MASM),由于宏汇编程序不但代替ASM,而且可以汇编具有宏定义的汇编程序,因此在汇编程序时一般都使用宏汇编程序(MASM)。一、汇编程序MASM与链接程序LINK1.运行汇编程序必备的条件运行汇编程序必备的软件环境:DOS操作系统;汇编系统。汇编系统盘应包含如下文件:MASM宏汇编程序文件LISK连接程序

2、文件CRFF索引程序文件(也可不用)EDIT文本编辑程序(或PE等文本编辑程序)用户通过屏幕编辑程序键入源程序,检查无误,可将源程序存到汇编系统盘上,该程序的扩展名为·ASM。2.编写汇编源程序用汇编语言编写的源程序必须是一个完整的源程序,才能经过宏汇编程序MASM的汇编,生成一个目标程序。为了完成汇编任务,汇编程序一般采用两遍扫描的方法,第一遍扫描源程序产生符号表、处理伪指令等,第二遍扫描产生机器指令代码、确定数据等。1)源程序的书写格式当CPU访问内存时,是把存储器分成若干个段,通过4个段寄存器中

3、存放的地址对内存储器访问,因此在编源程序时必须按段的结构来编制程序。由于每个段的物理空间为≤64KB,所以程序中各段可以分别为一个或几个。源程序的书写一般有如下形式:逻辑堆栈段堆栈段名SEGMENTSTACK用变量定义预置的堆栈空间···堆栈段名ENDS逻辑数据段数据段名SEGMENT用变量定义预置的数据空间···数据段名ENDS逻辑代码段代码段名SEGMENTASSUME定义各段寻址关系过程名PROC…1《微机系统与接口》实验参考资料之一程序···过程名ENDP代码段名ENDSEND过程名或起始标号

4、在源程序中最少要有一个代码段,数据段根据需要可有可无,也可以增设附加段。对于堆栈段也可以根据需要可有可无,但在连接(LINK)时计算机将显示警告性的错误:Warning:NSTACKsegmentTherewas1errordetected.在程序中如果没有用到堆栈时,该错误提示不影响程序的运行,如果程序中用到堆栈时必须设置堆栈段。其中:SEGMENT、ASSUME、PROC…ENDP为伪指令,伪指令是发给汇编程序ASM的,而不和微处理器打交道,在汇编时不产生目标代码,只是把源程序中各段的设置情况告诉

5、汇编程序。2)段寄存器的段地址的装入Assume伪指令语句只是建立了当前段与段寄存器的联系,但不能把各段的段地址装入相应的段寄存器中,段寄存器的段地址的装入是在程序中完成的。(1)DS、ES、SS的装入由于段寄存器不能用立即数寻址方式直接传送,所以段地址装入可通过通用寄存器传送给段寄存器。MOVAX,逻辑段名MOV段寄存器,AX其中逻辑段名为程序中定义各逻辑段的名字,(不包括代码段),段寄存器是指与各逻辑段相对应的各段寄存器(DS、ES、SS)。(2)CS的装入代码段寄存器是装当前执行目标代码的段地址

6、,IP是提供下一条要执行的目标代码的偏移量,为了保证程序的正确执行,CS和IP装入新值时是一起完成的。对CS和IP的装入有如下几种情况:①根据用户程序中的伪指令END后的标号为CS和IP提供代码段的段地址和目标代码的偏移地址。②在程序运行过程中,当执行某些指令和操作时,CPU自动修改CS和IP的值,使它们指向新的代码段。3)程序中的数据与变量在汇编源程序中的数据除了立即数,由指令产生的数和通过键盘输入的数以外,还胡大量的数据是通过伪指令语句进行预置和分配的,也就是在某逻辑段中(除代码段),将所需的数据

7、以某种形式存放起来,在程序中可任意调用。在数据定义的同时还可以定义变量,将变量与数据结合在一起。可以为某个变量分配存储空间以便在程序执行过程中存放中间结果和最终结果,使用起来极为方便。(1)变量与数据的定义2《微机系统与接口》实验参考资料之一变量与数据的定义可以通过符号定义伪指令EQU、=和数据定义伪指令DB或DW或DD来实现。EQU和=可以出现在程序的逻辑段内也可出现在逻辑段外。(2)汇编程序中数据的提供方法①用数据定义伪指令提供数据如果程序要求原始数据为一批数据时,用数据定义伪指令DB、DW和DD

8、来提供较为方便。②用立即数的形式提供数据当原始数据只有几个时,一般用立即数的方法来提供。当然,用立即数的方法只是将一个数据传送到通用寄存器中,它只是通过通用寄存器传送数据。③用编程的方法提供数据假如原始数据是一组有规律的数据项,则用编程序的方法形成这一组数据,不用专门为这组数据分配存储单元,节省了存储空间。④用键盘提供数据当原始数据为任意数据时,一般用键盘输入方法,调用DOS21H中断。(3)数据的输出方式①在显示器上显示一个字符调用02H号功能调用号,

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

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

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