调试MASM程序技巧及参数详解

合集下载

【精品】Masm软件使用教程及上机实验问题

【精品】Masm软件使用教程及上机实验问题

上机实验问题
上机实验问题
• 什么是有效地址?
有效地址EA是一16位无符号数,表示操作数所在单 元到段首的距离即逻辑地址的偏移地址。 当操作数是存放在存储器中时,存储器的存储单元 的物理地址有两部分组成。一部分是偏移地址;一 部分是段地址。在8086/8088的各种寻址方式中,寻 找存储单元所需的偏移地址可由各种成分组成,称 为有效地址,用EA表示。可以通过存储器寻址方式 获得有效地址。
调试程序
在Masm for Windows中集成CV(全称CodeView)与DEGUB两种调试工具,默认为用CV调 试程序。 (1)用CV调试 先单击“运行”按钮生成EXE文件,再单击“调试”按钮。下图是调试求 3+5的汇编程序,当连续按F10或连续在命令窗口输入P或t命令执行到ADD AL,03时,可 以看到AL的值为8。
调试程序
(2)用DEBUG调试 ① 依次单击“工具/选项”出现图8的界面,选中“DEBUG 调试”,再单击确定。
调试程序
② 先单击“运行”按钮生成EXE文件,再单击“调试”按钮。 说明:图中是调试求3+5的汇编程序,当连续输入P命令执行到ADD AL,03时,可 以看到AL的值为8。
在线帮助
当编写程序时,有可能忘记某个指令的用法,只要用鼠标点击关键字,按右键在 弹出的菜单上选实时帮助(或按F2)即可获得该指令的帮助。
MOV BX,OFFSET BLOCK MOV SI,(6-1)*2 MOV DX,[BX] [SI]; 操作数的有效地址是基址和变址之和
上机实验问题
• P108 E3.11习题解答
该程序AX中存的内容就是偏移TABLE数组3个的地址内容
修改程序语法错误
提示: 汇编程序的语法错误信息的形式: 文件名 行号 错误编号 错误内容 ↓ ↓ ↓ ↓ E:\汇编程序\helloworld.asm(9):Error A2008:Syntax error:CODES 小技巧: 一条语句错误可能会产生若干条错误信息,该例就是因为第9行SEGMENT多输入 一个S,导致很多错误,只要在第9行SEGMENTS改为SEGMENT即可调试通过。 特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试 程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很 多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。

MASM汇编语言编程和调试工具

MASM汇编语言编程和调试工具

附录1 汇编语言编程和调试工具一、汇编语言编程工具学习汇编语言的目的就是要用汇编语言编程来解决实际问题,下面介绍二种常用的汇编语言编程环境:宏汇编MASM 6.11和Turbo Assember 5.0。

1.1、宏汇编MASM系统在宏汇编MASM系统中,程序员可用二种方法来处理源程序:命令行和集成环境。

1.1.1 命令行命令1、编写源程序可用计算机系统中各种能编辑文本文件的编辑器来编辑汇编源程序。

常用的编辑器有:EDIT、Q、Word、记事本、写字板、WPS等。

源文件的后缀为:.ASM。

2、汇编程序当源程序编写好后,可用MASM命令来汇编该源程序。

如果源程序没有语法错误,那么,将生成目标文件(.OBJ文件),为最终生成可执行文件作准备,但如果源程序有错误,汇编程序将显示出错误位置和原因,也可用列表文件(.LST文件)来查看出错位置和原因。

下面给出一些使用该命令的实例情况。

例1.1:查看MASM命令的功能…>masm /?(*)……/Zi Generate symbolic information for CodeView/Zd Generate line-number information其中:选项/Zi和/Zd是经常被引用的二个选项,因为它们与符号跟踪有关。

例1.2:用MASM命令汇编源程序…>masm test……Invoking: ML.EXE /I. /Zm /c test.asm……Assembling: test.asm如果MASM命令显示了类似如上的处理结果,那么,表示源文件TEST.ASM已成功汇编,并已生成了其目标文件TEST.OBJ。

(*)用户输入的命令用“下划线”来表示,系统显示的内容没有“下划线”。

以下与此相同。

例1.3:用MASM命令汇编源程序…>masm test……Invoking: ML.EXE /I. /Zm /c test.asm……Assembling: test.asmtest.asm(10): error A2070: invalid instruction operands如果MASM命令显示了类似如上的处理结果,那么,表示源文件有错,没有生成其目标文件。

MASM6.14从傻瓜到入门

MASM6.14从傻瓜到入门

MASM6.14从傻瓜到入门最近有网友向我询问如何使用MASM6.14,其实我也不是很懂,只是对一些常用的功能有所了解。

对于一些常见的问题,这一点点可怜的知识还是勉强可以解决的。

所以本文只是从最浅显的方面谈一下MASM6.14的用法,只是能让读者入门而已。

本文将分成几个部分来叙述。

1.ML的参数问题在编译的时候主要使用的是ML.EXE,因此,我们的重点将集中在这个程序上。

ML.EXE的使用格式如下:ML [ /options ] filelist [ /link linkoptions ]下面简单解释一下一些常用的编译选项,因为绝大多数参数我也没有用过,所以,我不能保证解释的正确性,如果你发现了什么错误,欢迎来信告诉我。

/AT :允许小模式/Bl :指定链接器/c :只编译,不链接/Cp :保留用户标识符的大小写/Cu :所有标识符映射为大写/Cx :用public或者extrn引用的标志符保留大小写/coff :产生coff格式的目标文件/F :设置堆栈长度/Fe :命名可执行程序/Fo :命名目标文件/FPi :对80x87指令进行软件仿真/G :使用Pascal,C或者stdcall调用/I :添加包含文件的路径/WX :视警告为错误/W :设置警告级别/Zd :在调试信息中添加行标号/Zf :使所有符号变为PUBLIC类型/Zi :在调试信息中添加符号信息/Zm :与MASM5.10兼容/Zp[n] :设置结构的对齐方式/Zs :只进行语法检测上述内容只是从帮助文件中翻译过来的,很不全面,也不一定正确,有兴趣的朋友可以看一下原文。

其实绝大多数参数是根本用不上的,我很少使用汇编去编写一个完整的程序,通常是使用高级语言编译器来辅助的。

因为现在的高级语言都有着非常强大的编译和调试的功能,所以汇编语言的编译器只要提供一些必要的功能就可以了。

2..xmm和.k3d现在一些单指令多数据技术十分流行,其中尤以intel公司的Streaming SI MD Extensions 和AMD公司的3DNow为最。

MASM调试程序使用步骤及DEBUG及其常用命令

MASM调试程序使用步骤及DEBUG及其常用命令

MASM调试程序使用步骤及DEBUG及其常用命令MASM调试程序使用步骤1、在运行中输入cmd,进入DOS界面2、输入edit c:\abc.asm 编辑程序文件3、通过“cd 目录” 到指定masm目录4、masm 文件名.asm (汇编),生成obj文件5、link 文件名.obj(链接),生成可执行文件6、文件名.exe(执行)DEBUG及其常用命令转帖[/blog/static/16340121200610141 3352405/]一 DEBUG简介DEBUG是DOS的一个外部命令, 其命令格式为:[path]DEBUG [filename] [parm1] [parm2][path]是DEBUG命令在磁盘上的路径filename是要用DEBUG来处理的文件的名字, 它包括文件的盘符、路径、文件主名和扩展名。

参数parm1和parm2是文件filename运行时使用的参数。

当启动DEBUG时, 将对CPU的各寄存器进行初始化:1. 如果启动时指定的filename是.EXE文件, 则DEBUG启动后将自动把指定的文件装入内存, 并置:CS为程序代码段段地址IP为第一条要执行指令的偏移地址SS为堆栈段段地址SP为堆栈底部+1单元的偏移地址DS和ES是装入文件前第一个可用内存段的段地址(即DEBUG程序后的第一个段地址)标志寄存器的所有标志位为0BX(0)和CX是装入的文件长度其余寄存器为0。

2. 如果启动DEBUG时指定的文件filename不是.EXE文件, 则DEBUG 将把文件装入内存, 并置:四个段寄存器为DEBUG程序后面的第一个段地址IP指向100HSP指向这个段的段尾标志寄存器的所有标志位为0BX和CX是装入的文件长度其余寄存器为0。

3. 如果启动DEBUG时不指定filename, 则只是把CPU 的各寄存器进行初始化, 初始化结果与上述的第2点相同。

这时要想显示、修改文件,可以用DEBUG的子命令装入文件。

Masm编译与调试过程

Masm编译与调试过程

用户通过屏幕编辑程序键入源程序,检查无误,可将源程序存到汇编系统盘上,该程
序的扩展名为·ASM。
2. 编写汇编源程序 用汇编语言编写的源程序必须是一个完整的源程序,才能经过宏汇编程序 MASM 的汇 编,生成一个目标程序。为了完成汇编任务,汇编程序一般采用两遍扫描的方法,第一遍 扫描源程序产生符号表、处理伪指令等,第二遍扫描产生机器指令代码、确定数据等。
(3)数据的输出方式 ①在显示器上显示一个字符 调用 02H 号功能调用号,发 21H 号中断,将要显示的字符的 ASCII 码送入 DL,就可 在显示器上显示该字符。 ②在打印机上输出一个字符 调用 05H 号功能调用号,发 21H 号中断,将要打印字符的 ASCII 码送入 DL,就可在 打印机上打印出 DL 中的字符。
1)源程序的书写格式
当 CPU 访问内存时,是把存储器分成若干个段,通过 4 个段寄存器中存放的地址对内
存储器访问,因此在编源程序时必须按段的结构来编制程序。由于每个段的物理空间为≤
64KB,所以程序中各段可以分别为一个或几个。源程序的书写一般有如下形式:
逻辑堆栈段
堆栈段名 SEGMENT STACK
(1)变量与数据的定义
2
《微机系统与接口》实验参考资料之一
变量与数据的定义可以通过符号定义伪指令 EQU、=和数据定义伪指令 DB 或 DW 或 DD 来实现。
EQU 和=可以出现在程序的逻辑段内也可出现在逻辑段外。
(2)汇编程序中数据的提供方法 ①用数据定义伪指令提供数据 如果程序要求原始数据为一批数据时,用数据定义伪指令 DB、DW 和 DD 来提供较为 方便。 ②用立即数的形式提供数据 当原始数据只有几个时,一般用立即数的方法来提供。当然,用立即数的方法只是将 一个数据传送到通用寄存器中,它只是通过通用寄存器传送数据。 ③用编程的方法提供数据 假如原始数据是一组有规律的数据项,则用编程序的方法形成这一组数据,不用专门 为这组数据分配存储单元,节省了存储空间。 ④用键盘提供数据 当原始数据为任意数据时,一般用键盘输入方法,调用 DOS 21H 中断。

MASM DEBUG命令使用简介

MASM DEBUG命令使用简介

附录七 X86汇编语言程序调试工具 DEBUG 使用简介DEBUG是DOS系统下的程序调试工具,以DOS外部命令形式提供。

该外部命令对应的文件名为DEBUG.EXE,一般存放在DOS子目录下。

运行DEBUG程序的命令格式为:DEBUG [<驱动器名>:][<路径>][<文件名>[.<扩展名>]][<参数1>][<参数2>] < 回车> 例如:C:\DOS>DEBUG A.EXE < 回车>进入DEBUG后出现提示符“-”,就表示可以接受DEBUG命令了。

DEBUG命令使用说明:1)DEBUG命令是在提示符“-”之后,由键盘键入。

2)每条命令以单个字母的命令符开头,然后是命令操作参数。

3)操作参数与命令符之间用空格隔开,操作参数之间用空格或逗号隔开。

4)所用数均为十六进制数,不必加写H。

5)命令结束符是回车键<Enter>(在下面的命令格式中,不再单独标出)。

按组合键Ctrl+Break可中止正在执行的DEBUG命令,并返回提示符“—”。

DEBUG常用命令列表(其它命令请参考专门资料)常用命令介绍如下(以下有下划线处表示是从键盘输入的内容):告警:使用以下关于修改内存的命令A、E、F、M等,应注意内存地址(包括段基值和偏移地址)的准确性。

错误地更新了系统程序区,可能会造成死机!写磁盘的DEBUG命令(本文未列出)更应慎重使用!1.DEBUG命令列表—?屏幕显示DEBUG命令列表。

2.返回DOS命令Q(Quit)—Q退出DEBUG程序并返回DOS。

注意此命令不能将内存中的文件存盘。

3.显示内存单元内容命令D(Dump)—D[地址或范围]其中“范围”包括起始地址和结束地址,可以在地址前加段前缀。

例如:—D1366:110 11F屏幕显示为1366:0110 24 09 7E 21 00 00 00 00-34 00 00 00 00 00 55 13 $.~ !....4.....U.上面分左、中、右三部分显示:左边部分1366:0110是内存单元地址,中间及右边部分分别是1366:0110至1366:011F内存单元内容的16进制数表示及ASCII字符(“.”表示非ASCII码的数字)。

MASM5.0使用方法

MASM5.0使用方法

392178masm5.0使用方法324268下载个masm5.0(简单,适合初学者),里面至少应包含masm.exe和link.exe,可能还包含其他的,不过我们只需要最基本的这两个。

2、将masm5.0压缩包里的程序解压(包含masm.exe和link.exe),放到一个目录中(如D:\masm),然后就在这个目录下建立个文本文件(如XX.txt)写入个汇编程序,保存,将后缀名改为XX.asm。

3、进入命令提示行(开始--运行--输入cmd)4、进入程序所在文件夹(用dos的cd命令),以2中的为例,键入“d:”,回车,键入“cd masm”,回车,键入“masm XX”,回车3下,键入“link XX”,再回车3下,再键入“XX”,就运行完了。

补充:1、若程序有问题,在4步骤中会提示,这时就要返回修改2、如果程序本身并不显示输出结果,则4步骤运行完后也不会看到什么反应,初学者建议找个有显示输出结果的程序做试验3、第二个步骤中,试验程序xx.asm应当和masm.exe link.exe放在一起,若不再一起,则需要添加masm环境变量。

我的电脑——>属性——>高级——>环境变量——>找到Path项——>双击——>在变量值一栏中的最末尾添加——>;C:\Masm\这里假设你的Masm.exe是在C盘的Masm目录下。

2、MASM这个SUM.ASM建议,这个MASM呢还是放在根目录下,不然每次一堆一堆的路径很烦的。

假设放在D:\MASM里。

把写好的SUM.ASM放过来在这个文件夹下,同时这里面还有一个EDIT.EXE EXE2BIN.EXE MASM.EXE LINK.EXE,不用管。

准备工作:打开很像DOS的cmd——打开方式:开始->运行->cmd(WIN+R也可)1 输入d:,目录路径从默认的C盘改变为D盘。

2 然后输入cd MASM 就进入到了MASM目录下。

MASM的汇编链接和调试的脚本

MASM的汇编链接和调试的脚本

下面我们以1个简单的例子来说明源程序的汇编、链接与调试编程计算Y=a*b+c-3其中a=1;b=-1;c=4;常数为3,显然Y为0步骤1:编写源文件我们打开已编好的源文件simple.txt(用记事本打开simple.txt)定义常数为3,(光标指向常数定义)第一段是256字的堆栈段,(光标指向堆栈段)第二段是数据段,(光标指向数据段)在数据段定义变量如下:DA T1对应a(光标指向DA T1); DA T2对应b(光标指向DAT2), 其中FFH为-1的补码; DAT3对应c(光标指向DAT3);DA TY单元存放结果Y(光标指向DATY)第三段是代码段,(光标指向代码段)步骤2:汇编源程序首先,用cmd命令进入DOS环境;(开始->cmd)然后,路径要切换到MASM所在的盘符D;(D:)接着,进入MASM50文件夹;(cd masm50)显示文件夹下的内容;(dir/w)汇编程序是MASM.EXE;(光标指向MASM.EXE)链接程序是LINK.EXE; (光标指向LINK.EXE)源程序是simple.asm; (光标指向simple.asm)下面对源程序simple.asm进行汇编(1)输入masm simple.asm,(输入masm simple.asm)注意一是源文件名不能以数字开头且字符长度不要超过8个;二是源文件如果不在当前路径下时,要指明其存放路径;输入好后,回车(回车)(2)指定目标文件名,直接回车默认是simple.obj,(光标指向simple.obj)这里我们直接回车(回车)(3)指定源程序列表文件名,直接回车默认是不产生,输入simple,回车(输入simple,回车),过会儿我们可以用记事本查看simple.lst(4)指定交叉索引文件名,交叉索引文件列出了程序中所定义的所有标识符和标号及其引用情况输入simple,回车(输入simple,回车)提示31行有错误,未定义标识符CO(光标指向错误处)下面我们要修改源程序,使源程序无语法错误用记事本打开simple.lst(相应操作)源程序列表列出行号,代码偏移地址,二进制指令码,源代码,(光标指向相应位置)下面是段名,标识符信息及其属性(光标指向相应位置)在第34行,第35行之间是错误提示信息,(用拖曳蓝色反标提示信息),发现前面定义了Con,而这里漏掉了n,(拖曳蓝色反标Co),我们找到了语法错误(关闭Simple.lst窗口)输入edit simple.asm(输入edit simple.asm),打开源文件simple.asm找到错误行(滚动条下拉),在Co后添加n(添加n)保存文件,(File->Save)退出edit(exit)重新汇编源程序,(重新汇编源程序,用up键调出以前指令)可见,无警告无错误,汇编成功(光标指向0 waring Errors和0 severe Errors)。

masm9.0宏汇编ml.exe完整命令行参数解释

masm9.0宏汇编ml.exe完整命令行参数解释

masm9.0宏汇编ml.exe完整命令行参数解释masm9.0是微软VC2008里附带的最新版的宏汇编器,现列出全部命令行参数解释,希望对大家学习WIN32汇编有用./AT Enable tiny model (.COM file)/AT 允许微型内存模式。

对与.COM文件格式的要求互相冲突的代码给出错误信息。

注意该选项和.MODEL TINY伪指令并不完全相同/Bl<linker> Use alternate linker/Bl filename 选择其他的连接器/c Assemble without linking/c 只编译,不连接/coff generate COFF format object file/coff 生成Microsoft公共目标文件格式(common object file format)的目标文件/Cp Preserve case of user identifiers/Cp 保留所有用户定义标识符的大小写/Cu Map all identifiers to upper case/Cu 映射所有标识符的大小写/Cx Preserve case in publics, externs/Cx 保留公共和外部符号的大小写(默认)/D<name>[=text] Define text macro/D sysmbol[=value] 定义给定名字的文本宏。

如果没有value部分,文本宏为空。

定义中以空格隔开的多个符号必须以引号引起来。

/EP Output preprocessed listing to stdout/EP 输出预处理列表到标准输出/errorReport 发送编译器内部错误给微软(这个新增)/F <hex> Set stack size (bytes)/F hexnum 设置堆栈大水(字节),(这与/link /STACK:number是相同的)。

MASM使用方法与设置

MASM使用方法与设置

主题:[07计应(3)班] | | 浏览数(1568) | 评论数(0) | 2008-12-16 1 实验目的⒈ 实验MASM 6.11的安装方法。

⒉ 实验MASM 6.11的启动方法。

⒊ 实验MASM 6.11的设置方法。

2 预习要求⒈认真阅读实验指导中实验1的内容。

⒉了解本次实验的各项要求。

⒊认真阅读教材中的附录。

3 实验内容⒈ MASM 6.11的安装⒉ MASM 6.11的启动⒊ MASM 6.11的设置4 实验环境⒈ 硬件:PC计算机。

⒉ 软件:Windows 98操作系统。

5 实验过程5.1 MASM6.11的安装5.1.1 安装前的准备工作1. 安装MASM 6.11的操作系统要求为Windows 98。

2. 在D∶\盘或别的硬盘上建一个文件夹。

今假设在D∶\盘上建立一个如下的文件夹:“D∶\xxxxxyyyyyy”,其中“xxxxx”是班级名,“yyyyyy”是本人姓名。

3. 从教师机上下载文件夹“MASM611SETUP”及其内容,并放入文件夹“D∶\xxxxxyyyyyy”。

4. 在文件夹“D∶\xxxxxyyyyyy”下建立一个如下的工作目录:“D∶\xxxxxyyyyyy \mymasm”,以备将来在工作的时候存放MASM 6.11汇编语言源文件、目标文件、可执行文件。

5.1.2 安装过程1. 打开MASM611SETUP文件夹,运行“Setup”。

2. 在出现“Microsoft MASM 6.11 Setup”屏幕之后,按“ENTER”键。

3. 在出现的“Microsoft MASM 6.11 Setup Main Menu”屏幕上,选中“Install the Microsoft Macro Assembler” ,按“ENTER”键。

4. 在出现的“Microsoft MASM 6.11 Setup System Configuration”屏幕上,选中“MS-DOS/Microsoft WINDOWS”,按“ENTER”键。

masm指导书

masm指导书

第一部分汇编指令学习在教材第三章学习8088的指令系统(指令说明详见教材附录1),掌握指令是用汇编语言编程的基础,这要求我们熟练掌握80X86的每条指令。

学习汇编指令一方面要深刻理解指令的寻址方式,另一方面重在从以下四点来学习识记指令。

1.指令符号识记2.指令格式和操作数3.指令功能4.指令执行对外界的影响例如:加法指令助记符是:ADD指令格式是:ADD OPRD1 , OPRD2OPRD1是任一寄存器操作数或存储器操作数OPRD2是任一寄存器操作数或存储器操作数或是立即数指令影响:影响CF , SF , OF, PF, ZF , AF 标志位指令功能:完成无符号数或有符号数的加法运算,操作数可以是8位(字节)或16位(字)如果我们象上面所述那样熟悉汇编语言指令系统中的每一条常用指令的助记符、指令格式、指令的功能和执行结果对外界的影响,那么,我们应用汇编语言编程时就不存在工具带给我们的困难。

阅读下面两道程序/程序段,建议按上面所述来理解每条指令和程序功能。

程序1code segmentassume cs:codestart: mov ah , 1int 21hcmp al , '0'jb lab1cmp al , '9'ja lab2mov dl , 'n'jmp lab3lab2: cmp al , 'a'jb lab1cmp al , 'z'ja lab4mov dl , 'u'jmp lab3lab4: cmp al , 'a'jb lab1cmp al , 'z'ja lab1mov dl , 'l'jmp lab3lab1: mov dl , '*'lab3: mov ah , 2int 21hmov ah , 4chint 21hcode endsend start —————————————————————————————————程序2code segmentassume cs:codestart: mov cx , 26mov dl , 'a'l ab1: mov ah , 2int 21hadd dl , 1loop lab1mov ax , 4c00hint 21hcode endsend start第二部分汇编程序的建立、执行与调试一、汇编程序建立、调试的软件环境用汇编语言书写程序,从源程序的编辑、编译到调试,我们使用以下工具: 编辑程序一个编辑环境,用于建立源程序masm.exe 编译程序检查源程序的句、语法,生成OBJ文件link.exe 链接程序将OBJ文件转换成EXE文件 调试程序一个帮助检查程序中设计错误的工具将上述工具拷贝到包含DOS系统的软盘上,就在软盘上建立了编辑、汇编、连接和调试汇编程序的环境。

MASM调试步骤

MASM调试步骤
6.在命令行中输入TD addrmode.exe,按回车,会出现如下图的高度界面:
7.
3.选择“开始”——运行(windows+r),在弹出的对话框中输入cmd按回车——输入D:(此冒号不能少),按回车——输入cd masm,按回车,此时就进入了D:\masm\目录,
4.输入masm addr.obj文件。
5.输入link addrmode,按4下回车,如图,此时D盘目录下会生成.exe文件,如下图:
用masmeditor或文本编辑器编辑程序注意要以asm为后缀编好后放到d盘masm文件中
1.把masm(群共享中的那个)放到D盘,说明一下,masm不用安装。
2.用masmeditor或文本编辑器编辑程序,注意,要以asm为后缀,编好后放到D盘masm文件中。(本文档以调试咱们课本P45页程序为例)

masm使用说明

masm使用说明

1.首相在索老师建的群里下载masm(群里的名字是32 位微机软件),然后解压到自己的
D盘,不要放在其他子目录下;
2.然后在开始菜单下点击运行输入cmd 命令打开doc命令对话框
如图所是
3.然后在当前doc的命令对话框中输入“D :”然后回车进入D盘目录下,然后再输入“cd masm ”回车就入“D:\MASM>”下,再输入“cd bin ”回车进入“D:\MASM\bin>”下
4.然后输入“edit [文件名].asm ”进入编译器,书写自己要调试的程序;
5.书写完程序之后,按下alt+f 键在下拉菜单中利用save 或save as 保存,然后退出exit
6.退出后输入命令“ml [文件名];”进行汇编,然后用“link32 [文件名];”(如果你是32 位的微机的话16 位则是link 16)进行连接;
7.在上述命令执行通过后运行“dubeg [文件名].exe ”开始相关命令的执行。

magma参数设置

magma参数设置

1.2.5参数设置一般流程:模型、过程计算选择—材料设置—传热系数定义—特殊工艺设置—充型定义—凝固定义—应力定义—准备仿真内容。

具体操作如下:1.模型与场的选择金属模(permanent)和砂模(sand mold)。

金属模只有批次执行(循环)和应力计算,砂模有充型计算、凝固计算、应力计算。

2. 材料设置1)选择材料类型;2)点击select data;3)选择具体材料。

[+]材料丛集(material class)是可展开和收合的(expand、hide);[-]材料群组(material group) 是不可展开和收合的。

若要定义材料:[+]是对整个材料组定义相同材料;[-]对个别材料定义。

图 1.2.5-2材料设置4)举例:对Cast Alloy定义材料,先点选[+] Cast Alloy在点select data ,出现database对话框。

如:图 1.2.5-3 材料选择Cast Alloy材料定义完ok后,下列材料参数自动显示在视窗内:Liquidus temperature (液态温度)Solidus tempeature (固态温度)Initial temperature (初始温度)根据需要,点下面parameter按钮,改变初始温度。

3. 传热系数定义1)选择材料组接触对;2)点击select data;3)选择具体传热系数。

图 1.2.5-4传热系数定义方法:鼠标左键点选材料群组接触对,按住shift键可多选材料对,然后指定HTC。

可以按鼠标中键跳出HTC视窗或点选select data,内定的database是MAGMA。

4. 特殊工艺设置1)弄清各项含义;2)选择需要定义的选项;3)选择该项的parameters ;4)在parameters 中出现的界面中进行设置;5)点击YES。

以下是各项含义:图 1.2.5-5铸造方法、工艺cosworth process 设置界面如下:图 1.2.5-6 cosworth process 设置界面5. 充型定义图 1.2.5-7充型设置1)use solver(求解器)选择:solver 1 ─采用的热能方程式不允许热通过自由表面,所以不适合有喷射效应的流动,比较适合简单的底注方式。

汇编软件MASM和调试

汇编软件MASM和调试

汇编软件MASM和调试工具软件DEBUG使用汇编语言是唯一能够充分利用计算机硬件特性并直接控制硬件设备的语言。

对于诸如实时控制、软件加密解密、病毒分析、软件调试等领域,汇编语言是最有效的程序设计语言。

在学习汇编语言的过程中,只有通过大量的上机实验才能更好地掌握汇编语言程序设计的技能。

1.1 实验目的(1)掌握汇编软件MASM的使用,熟悉汇编语言的上机过程。

(2)掌握调试工具软件DEBUG的应用,掌握汇编语言程序的调试技能。

1.2相关基础知识1.2.1汇编语言程序上机步骤1.汇编语言程序设计上机步骤汇编语言源程序的上机步骤包括编辑、汇编、链接、调试等几个过程,如图1-1所示。

图1.1 汇编语言源程序上机步骤源程序文件的编辑就是编写一个汇编语言源程序,它可以使用任何一个文件编辑器实现。

例如,Windows2000操作系统附件中的记事本。

编辑形成的文件最后一定要以.ASM 后缀保存。

在编辑源程序的时候一定要将输入法切换到英文环境下,否则会出错。

2.汇编汇编是把用汇编语言编写的源代码程序翻译成计算机能够识别的二进制机器语言程序。

目前常用的汇编程序是MASM,称为宏汇编程序。

宏汇编程序当前主要有两个版本:MASM5.0和MASM6.0。

其中,MASM5.0的可执行文件是MASM.EXE,MASM5.0用于DOS环境下。

初学者首先学习使用MASM5.0。

而MASM6.0的可执行文件是ML.EXE。

汇编过程是将源程序翻译为等价的二进制机器语言的过程。

所产生的文件称为目标程序,其后缀为.OBJ。

在这个阶段中,将对源程序的语法进行检验,如果发现错误将给予提示。

错误提示分为严重错误和警告错误两种。

严重错误指示某些指令存在语法错误,不能形成对应的二进制机器指令。

而警告错误指示某些指令含义不够明确,需要提醒程序员注意。

程序员可以根据提示对源程序进行修改,直到得到正确的结果为止。

在汇编过程中还会产生列表文件和交叉引用文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.首先要设置好include、path、lib的路径,可以写成bat文件,如masm安装在D盘,则内容如下
@echo off
set include=d:\masm32\Include
set lib=d:\masm32\lib
set path=d:\masm32\bin;%path%
echo on
运行bat文件以后,在dos shell窗口用path命令检查一下。

2.ML问题,对于如下代码,
MOV AX, @data
MOV DS, AX
编译的时候用ml /c /coff *****.asm
总是出现error A2006: undefined symbol : DGROUP错误信息。

原因在于这种古老的进入程序的代码段的方法在coff格式中已经不用了,因为“/coff ”参数,这是生成32位Windows程序的模块格式,并不适合编译dos程序。

至于用什么方法,还得参考PE格式。

COFF –通用对象文件格式(Common Object File Format),是一种很流行的对象文件格式(注意:这里不说它是“目标”文件,是为了和编译器产生的目标文件(*.o/*.obj)相区别,因为这种格式不只用于目标文件,库文件、可执行文件也经常是这种格式)。

大家可能会经常使用VC吧?它所产生的目标文件(*.obj)就是这种格式。

其它的编译器,如GCC(GNU Compiler Collection)、ICL(Intel C/C++ Compiler)、VectorC,也使用这种格式的目标文件。

不仅仅是C/C++,很多其它语言也使用这种格式的对象文件。

统一格式的目标文件为混合语言编程带来了极大的方便。

当然,并不是只有这一种对象文件格式。

常用格式的还有OMF-对象模型文件(Object Module File)以及ELF-可执行及连接文件格式(Executable and Linking Format)。

OMF是一大群IT巨头在n年制定的一种格式,在Windows平台上很常见。

大家喜欢的Borland公司现在使用的目标文件就是这种格式。

MS和Intel在n年前用的也是这种格式,现在都改投异侧,用COFF格式了。

ELF格式在非Windows平台上使用得比较多,在Windows平台基本上没见过。

3.LINK问题
如果用Link /subsystem:(随便哪种系统) *****.obj链接,出现以下提示:
LINK : error : Segment reference in fixup record
hello.obj : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
问题就出在Linker上,注意两个Linker的不同
Microsoft (R) Segmented Executable Linker
Microsoft (R) Incremental Linker
解释一下, Windows平台下, 源代码编译出来的obj主要有两种格式:OMF和COFF, 其中, OMF格式是原来IBM(好像是吧, 不记得了)使用的格式, 而COFF格式则是从微软从UNIX移植过来的, 因为微软公司开发Windows的软件工程师大多对UNIX很熟, 所以自然而然的采用了类似UNIX COFF的这种Win32 COFF格式(和UNIX的"纯种"COFF 是有区别的, 但仍然叫COFF格式)
DOS程序编译的obj文件都是omf格式的, omf格式的obj要用Segmented Linker链接, 生成的是DOS可执行文件或者NE文件, 而Win32程序编译的obj必须是COFF格式
的, 要用Incremental Linker链接, 生成的是32位的PE或16/32位混合的LE文件(主要是VXD, 现在已经淘汰)
masm编译器ml.exe有两个选项
/coff

/omf
其中, /coff控制生成的obj为coff格式, /omf类似
在ml的第6版中, 默认选项为omf, 如果编译win32程序忘了指定/coff会出错,但是在ml的第7和第8版,默认选项为coff,这个时候如果编译Dos程序忘了指定/omf会出错的. 补充一下, 常见汇编编译器产生的obj文件格式和常见链接器需要的obj文件格式表名称格式备注
MASM coff, omf 由选项控制
TASM omf 不论是DOS还是Win32程序都是omf
NASM 多种格式由选项控制
Segmented Linker omf 只能链接DOS程序Incremental linker coff 只能链接Win32程序或者16/32混合的VXD
tlink, tlink32 omf TASM系列无论编译器还是链接器使用的都是omf
只要下载masm6.15,link就是Microsoft (R)Segmented Executable Linker,就可以解决问题。

4.ML和LINK命令参数详解
命令行编写调试DOS及WIN32汇编程序
ml /c /coff /Zi /Cp /Zd 文件名.asm
link /subsystem:console /debug /debugtype:cv /libpath:d:\masm32\lib文件名.obj
上面两句可以写成bat文件,或者做成make文件。

Ml参数
感觉最常用得就是/c 仅自动编译,不链接
/coff 必用的,产生obj的文件为coff格式(写win32程序的时候)
/Cp 基本上必用,源代码区分大小写
/Gz函数调用类型为stdcall形式,常用的
/Zi调试的时候用,一般不用
LINK的参数N多,不过绝大部分默认都可以了,/subsystem选项是必须的
/subsystem:windows 普通pe文件
/subsystem:console 控制台文件
ml /coff /Zi [...]
其中,/COFF选项用于生成softice使用的正确的目标文件格式。

/Zi选项告诉编译器需要向目标文件添加符号调试信息。

link /subsystem:windows /debug /debugtype:cv [...]
/sybsystem:windows表示生成一个windows gui程序,对于控制台应用程序应采用console选项。

/debug选项告诉链接器要在可执行代码中包含调试信息。

/debugtype:cv选项将告诉链接器产生codeview格式的调试信息。

这种格式是softice调试需要的。

相关文档
最新文档