汇编编译工具MASM的安装和使用
汇编编译工具MASM的使用
实验二汇编编译工具MASM的使用2.1. 实验目的1、学习如何安装MASM;2、学习如何使用和使用编译和链接汇编语言程序。
2.2. 基础知识2、DOS汇编与WIN32汇编在DOS下编写汇编程序,程序员可以管理系统的所有资源,访问和改动系统中所有的内存,修改内存控制块,修改中断向量表截获中断,直接对I/O端口进行读写。
DOS是个单任务操作系统,只有一个运行级别,任何进程和DOS操作系统都是同等级别的。
因此,DOS系统中各个进程会互相影响,如果某个进程死机的话,整个系统都会垮掉。
DOS工作在实模式下,程序员可以寻址1M的内存,通过段寄存器来指定段的初始地址,每个段的大小为64K。
超过1M的部分,就只能把他作为XMS使用。
1M以上的内存空间只能用作数据存放而无法在其中执行程序。
Win32是指32位的Windows操作系统,进程有多种运行级别,操作系统工作在最高级别——0级,而应用程序工作在3级。
在第三级别,进程无法直接访问I/O端口,无法访问其它进程运行的内存,连向自己的运行代码写入数据都是非法的。
只有对于最高级别的进程,系统才是全开放的。
Windows工作在保护模式下,所有的资源对进程来说都是被“保护”的。
在内存方面,Windows使用了处理器的分页机制,程序员不必用一个段寄存器去指定段的地址,因为在保护模式下,段寄存器的含义是不同的(参见80386手册方面的书籍)。
程序员可以直接指定一个32位的地址来寻址4GB的内存。
在程序结构方面,Windows程序也有很大的不同,它是“基于消息”的。
在上面列举的汇编工具中,一些是DOS汇编工具,一些是Win32汇编工具。
初学者可以从DOS汇编入手,先掌握汇编编程的思路、基本语法和编程技巧,待入门后再学习Win32汇编。
当然,学习DOS汇编并不一定需要安装和使用DOS操作系统。
程序员可以在Win32环境中安装MASM 6.0或其它16位汇编工具,在命令提示符状态下编译和链接DOS汇编程序。
Masm6.11的使用方法汇编语言程序设计最终版
实验一 Masm6.11的使用方法一、实验目的1、创建一个新的汇编语言程序,熟练掌握汇编语言开发工具的使用方法,并对开发环境中一些坏境变量进行设置。
2、创建一个工程文件,对该工程文件进行编译,连接,并运行;3、对建立的工程文件进行调试,在运行过程中查看各个寄存器的值,内存单元的值等。
二、实验环境该试验包括的硬件和软件条件如下:1、硬件环境(1)Intel Core Duo CPU P8700(2)内存4G2、软件环境(1)Window XP Professor(2)MASM6.11开发软件三、实验步骤1、将Masm6.11安装程序拷贝到D盘根目录下,并执行d:\Masm611目录下Setup.exe文件,按照安装提示将程序安装到C盘根目录。
2、将C:\masm611\Bin目录下的所有文件拷贝到C:\Masm611\binr目录下,将C:\Masm611\help目录下的所有文件拷贝到c:\Masm61\binr目录下。
3、执行C:\Masm611\Binr目录下的pwb.exe文件,打开开发环境。
4、在PWB编辑窗口中输入实验1.1中的程序,并保存为test.asm文件。
5、执行Project菜单下New Project子菜单创建一个新的工程文件,并命名为test.mak,将test.asm文件加入到该工程文件中。
6、执行Project下Build子菜单编译连接该工程文件,并运行该可执行程序,观察程序执行的结果。
7、执行Run菜单下Debug子菜单,进入调试环境。
8、在程序的如下位置设置断点,并按要求观察寄存器堆栈或者内存单元的值。
Data segmentMsgl db "please input the number of student:$"Num db 0EnMsg db 0ah,0dh,'$'Msg2 db "please input the grade of each student:$"Msg3 db "the average grade of these student is:$"avg db 0ascavg db 0,0,'$'Data endsStack segment para stackdb 20h dup(0)Stack endscode segmentAssume Cs:code,Ss:stack,ds:DataStart: mov ax,datamov ds,axlea dx,Msgl ;1此行设置断点,观察DS所指示的数据段的情况mov ah, 09hint 21hCall Numproc ;2此行设置断点,观察屏幕输出,并观察堆栈的变化mov num,bl ;3此行设置断点,观察bl的值,并观察堆栈的变化lea dx,EnMsgmov ah,09hint 21hlea dx,Msg2mov ah,09hint 21hcall Avgproc ;4此行设置断点,观察屏幕输出信息lea dx,EnMsg ;5此行设置断点,观察avg所对应的存储单元的值mov ah,09hint 21hlea dx, Msg3mov ah,09hint 21hcall bta ;6此行设置断点,观察屏幕输出信息mov ah,4ch ;7此行设置断点,观察ascavg所对应的存储单元的值及屏幕输出信息int 21hNumproc procpush axpush cxpush dxlea dx,EnMsgmov ah,09hint 21hmov bl,0lop1: mov ah,01hint 21h ;8设置断点观察al寄存器的值cmp al,0dhjz lop2cmp al,'0'jl lop1cmp al, '9'ja lop1sub al,30hmov cl,almov al,blmov ch,10mul chmov bl,al ;9设置断点观察al寄存器的值add bl,cl ;10设置断点观察bl寄存器的值jmp lop1lop2: pop dxpop cxpop axretNumproc endpAvgproc procpush axpush cxxor dx,dx ;11设置断点观察堆栈值的变化mov cl,num ;12设置断点观察cl寄存器的值lop3: call Numprocxor ax,axmov al,bladd ax,dxDiv numadd avg,al ;13设置断点观察avg存储单元的值xor dx,dxmov dl,ahsub cl,1jnz lop3pop ax ;14设置断点观察avg存储单元的值pop cxret ;15设置断点观察堆栈值的变化Avgproc endpbta procpush ax ;16设置断点观察堆栈值的变化push bxxor ax,axmov al,avgmov bl,10div bladd ah,30h ;17设置断点观察ax寄存器的值add al,30hmov ascavg ,al ;18设置断点观察ascavg存储单元的值mov ascavg+1,ahlea dx,EnMsgmov ah,09hint 21hlea dx,ascavg ;19设置断点观察dx寄存器的值mov ah,09hint 21hpop bxpop axretbta endpcode endsend start9、按照程序的执行过程绘制出程序流程图。
如何使用宏汇编程序MASM
如何使用宏汇编程序MASM.EXE和连接程序LINK.EXE1、首先在硬盘上建立一个文件夹,例如:D:\MASM.2、下载MASM.EXE和LINK.EXE到D:\MASM文件夹里.3、经过以上两步,我们已经做好了准备工作,接下来书写程序。
我们的程序要求为,计算 y = a × b + c - 18,a、b、c 均为带符号的8位二进制数据,为了实验观看实验结果,我们假设 a = 34H、b = 56H、c = E7H。
程序原代码如下(分号后面内容为注释内容,可以不输入):CC EQU 18 ;伪指令定义CCSTACK SEGMENT ;堆栈段起始DW 256 DUP(?) ;在堆栈段中预留了256个字的内容TOP LABEL WORD ;TOP为栈顶偏移地址STACK ENDS ;堆栈段结束DATA SEGMENT ;数据段起始DAT1 DB 34H ;DAT1即为题中操作数a,为字节,存于数据段中DAT2 DB 56H ;DAT2即为题中操作数b,为字节,存于数据段中DAT3 DB 0E7H ;DAT3即为题中操作数c,为字节,存于数据段中DATY DW ? ;DATY即为题中计算结果的预留空间为字,存于数据段中DATA ENDS ;数据段结束CODE SEGMENT ;代码段起始ASSUME CS:CODE,DS:DATA,SS:STACK ;分配段地址对应关系START: MOV AX,DATA ;START为标号,MOV语句完成DATA数据段地址送入AXMOV DS,AX ;将AX内容送入DS,即赋予DS数据段DATA的段地址MOV AX,STACK ;将STACK堆栈段地址送入AXMOV SS,AX ;将AX内容送入SS,即赋予SS堆栈段STACK的段地址MOV SP,OFFSET TOP ;SP设初值MOV AL,DAT1 ;取a,直接寻址方式MOV BL,DAT2 ;取b,直接寻址方式IMUL BL ;AX <- AL * BL,即将a * b的值存入AXMOV BX,AX ;将AX内容保存至BXMOV AL,DAT3 ;取c,直接寻址方式CBW ;由于c是8位有符号数,所以做符号扩展至AHADD AX,BX ;AX <- AX + BX,即完成的操作为将a*b+c结果存入AXSUB AX,CC ;AX <- AX - 18MOV DATY,AX ;将a*b+c-18的内容存放至数据段中偏移地址DATY的内存中MOV AH,4CH ;将4CH存入AH,为了下句调用DOS 21号中断INT 21H ;调用DOS 21中断,由AH=4CH决定返回DOS操作系统CODE ENDS ;代码段结束END START ;程序结束在D:\MASM目录下新建文件名为“Sample.asm”(一定要注意扩展名必须为.asm或.ASM,大小写无所谓)的文件,将以上代码输入后保存。
Masm for Windows 集成实验环境快速入门
Masm for Windows 集成实验环境快速入门1.打开Masm for Windows 集成实验环境依次点击“开始/程序/汇编语言集成实验环境/Masm for Windows集成实验环境”菜单进入“Masm for Windows集成实验环境”。
2.输入汇编程序在图2的“程序输入区”中的输入一个在屏幕上显示”Hello World!”的汇编程序,如图3所示,红方框内是需要输入的汇编程序代码,而其它的汇编程序代码该软件自动生成汇编程序框架。
3.保存汇编程序点击“工具栏”中的“保存”按钮(或“文件/另存为”或“文件/保存”),弹出“另存为”对话框,键入文件名,如“第一个汇编程序”,然后点击“保存”即可。
4.运行程序点击“工具栏”中的“运行”按钮,即可出现程序的运行结果。
提示:程序的运行结果的下面的“Press any key to exit”表示按任意键退出DOS窗口。
5.修改程序语法错误当运行程序发生语法错误时,Masm for Windows集成实验环境会自动定位源程序中错误所在行的位置并高亮显示该行,修改好第一条发生错误行后,双击任一条错误信息,该软件定位源程序中与之相对应错误所在行的位置并高亮显示该行,以便改正错误。
提示:汇编程序的语法错误信息的形式:(下面的例子是图6中的错误信息)文件名行号冒号错误编号冒号错误内容↓↓↓↓↓↓C:\汇编程序文件夹\第(9) :Error A2008 :Syntax error:CODES一个程序.asm小技巧:一条语句错误可能会产生若干条错误信息,例如下面图6中就是因为第9行SEGMENT多输入一个S,导致很多错误,只要在第9行SEGMENTS改为SEGMENT即可调试通过。
特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。
Win32汇编--使用MASM
Win32汇编--使⽤MASM经过上⼀讲的准备⼯作,相信⼤家已经搭建好了 Win32 汇编的⼯作环境,并已经知道编译、链接⼀个程序的过程和原理了。
现在,我们让例⼦回归到经典:include <stdio.h>int main(void){Printf(“Hello, world\n”);} // 事实上想想,这不正是初⽣的婴⼉?!⿇雀虽⼩,五脏俱全。
刚刚那个C语⾔的”Hello, world”程序包含了C语⾔中的最基本的格式。
在C语⾔的源程序中,我们不需要为堆栈段、数据段和代码段的定义⽽烦恼,编译器会⾃⼰解决。
回顾⼀下,在DOS 下的汇编这段代码会变成什么样? Follow me!;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>; 堆栈段;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>stack segmentdb 100 dup (?) ;定义100个字节的内存存储单元空间,默认值为?stack ends ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>; 数据段;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>data segmentszHello db ‘Hello, world’,0dh,0ah,’$’data ends ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>; 代码段;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>code segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axmov ah,9mov dx,offset szHelloint 21hmov ah,4chint 21hcode endsend start在例⼦中我们看到,stack、data、code都找到了⾃⼰的⼩窝。
Masm for Windows 集成实验环境使用说明
Masm for Windows集成实验环境使用说明
一、下载安装
Masm for Windows 集成实验环境 2015软件可从如下网址下载:
二、基本操作
打开Masm for Windows 集成实验环境 2015,出现图1所示界面。
图1 程序界面
可以看到这里整个伪指令的框架已经给好,就像emu8086中的EXE template一样。
编写程序时,只需将需要的代码填写到相应的位置即可,左侧还提供了很多的帮助和范例什么的,使用非常方便。
三、实例说明
下面通过编写一个简单的小程序来对该软件的使用进行说明。
编写程序实现屏幕打印:I will finish my undergraduate education in bjut!
汇编语言程序编写如图2所示。
写好之后,直接点击运行按钮。
蹦出对话框提示要先保存,那么进行保存,如上图3所示。
命名为example再次进行运行,蹦出DOSBOX如下图4所示,显示运行结果。
图4 程序运行DOS窗口
如果运行时有错误,则会出现错误描述,指出是什么错误在哪行,如图2.5所示。
图5 错误提示
进行程序调试时,点击调试按钮,弹出dos对话框。
这里可以使用各种汇编调试时使用的指令,比如-T :单步执行指令,或者-P:跟踪执行并跳过子程序命令。
图2.6所示的是-p指令使用。
图6 调试程序DOS对话框
每次p指令之后都会显示寄存器内的数值和FR的状态,以及下一条指令是什么。
对调试程序来讲,只要熟悉汇编程序的各种调试指令以及它们的使用方法,就可以非常方便地进行程序调试了。
DOSBox+MASM搭建汇编语言运行环境图文教程
DOSBox+MASM搭建汇编语⾔运⾏环境图⽂教程⼀、前期准备1、安装DOSBox-0.74;2、MASM⼯具包将Masm⽂件夹放⼊某个磁盘根⽬录下下载⽂件打包MASM多个版本打包(附dosbox与教程)类型:编程⼯具⼤⼩:21MB语⾔:简体中⽂时间:2020-01-11查看详情⼆、安装dosbox与masm1、下载的dosbox解压;运⾏exe,⼀直下⼀步即可;2、masm⽤来编译汇编程序;到⽹上搜索下载即可;解压⽬录如下:将解压masm,将⽂件放在特定的⽬录下;例如:D:\GongJu\masm3、挂载dosbox⽬的是将dosbox的c盘挂载到masm的⽬录下;简单点说就是挂载完后,dosbox的c盘相当于是D:\GongJu\masm具体执⾏:打开dosbox解压⽬录,运⾏ xxxOption.bat会弹出⼀个记事本,找到[autoexec],组下⾯添加两⾏命令:MOUNT C D:\GongJu\masmset PATH=$PATH$;D:\GongJu\masm4、完成后,打开dosbox,输⼊命令 c: 切换到c盘,然后输⼊命令 dir,如果显⽰的是masm⽬录下的内容则挂载正确;5、创建汇编程序可以在masm的⽬录下新建⼀个 xxx.asm,然后编写代码即可;汇编的helloworld1、新建⼀个⽂本⽂件编写代码DSEG SEGMENTMESS DB 'Hello,World!' ,0DH,0AH,24HDSEG ENDSSSEG SEGMENT PARA STACKDW 256 DUP(?)SSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGBEGIN: MOV AX,DSEGMOV DS,AXMOV DX,OFFSET MESSMOV AH,9INT 21HMOV AH,4CHINT 21HCSEG ENDSEND BEGIN或者DATAS SEGMENTSTRING DB 'Hello World!',13,10,'$'DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA DX,STRINGMOV AH,9INT 21HMOV AH,4CHINT 21HCODES ENDSEND START将⽂件保存为hello.asm;2、编译运⾏将hello.asm移动到masm⽬录下;打开dosbox;编译:将 hello.asm编译成 hello.obj输⼊命令masm hello.asm连接:编译会⽣成⼀个 hello.obj⽂件,连接该⽂件⽣成可执⾏⽂件hello.exe 输⼊命令link hello运⾏:这时已经编译连接完成,⽣成了⼀个hello.exe;运⾏hello.exe命令:hello可以看到成功输出了 hello world下⾯是其他⽹友的补充搭建配置如下(放⼤看效果更好):masm.exe:汇编程序,⽤于汇编源程序(.asm),得到⽬标程序(.obj) link.exe:连接程序,⽤于连接⽬标程序,得到可执⾏程序(.exe) debug.exe:调试程序,⽤于调试可执⾏程序如果烦上⾯⼏个命令,可以写⼀个批处理⽂件(如下):@echo offmasm %1;if errorlevel 1 pause & edit %1.asmlink %1;debug %1.exe说明:%1是输⼊⼀个参数的意思,这个⼤家可以学⼀下window的批处理。
使用MASM运行第一个汇编程序全过程
初次使用MASM编译器编写汇编程序的完整过程1.运行 cmd 命令2.输入edit3.进入汇编源码编辑框4.在源码输入框中输入汇编源码并将源程序保存,并拷贝到MASM和LINKER所在的盘符或文件夹下5.在 Dos 环境下进入到 MASM 5.0 汇编编译器所在的目录6.然后运行 masm.exe可以从上面的截图中看到 [. ASM] 的标记,这个标记代表的是需要在这里输入要编译的源程序文件名,这里有一点特别的是,由于默认的文件扩展名为 .asm ,所以在编译 .asm 的汇编源程序时可以不用指定源程序所在文件的扩展名。
7.我们将一开始编辑好的汇编源程序所在的文件输入以进行编译(1)此时可以看到编译器提示需要输入要编译出的目标文件的名称,由于在一开始已经指定了 js.asm,所以编译器自动指定了目标文件的名称为 js. obj 的名称,如果在这里不做修改的话,则编译器会以默认目标文件名称 js. obj 进行输出,在这里我并不改变名称,所以直接按 Enter 键即可;(2)提示需要输入列表文件的名称,其实是完全可以不要让编译器生成这个 LST 文件的,所以也不需要进行输入,直接按 Enter 键即可;(3)提示需要输入交叉引用文件的名称,这里也完全可以不要让编译器生成这个 CRF 文件,所以也不需要进行输入,直接按 Enter 键即可。
至此,汇编源程序编译成功编译得到的结果就是在我的 D:\ 目录下生成了一个 JS.obj 文件8.下面就是要实现对目标文件的连接经过编译操作后,我们得到了一个 .obj 的目标文件,但很显然,这还并不是一个可执行文件,下面就需要对目标文件进行连接,从而得到一个可执行文件。
一般来说,需要准备一个连接器,这里我使用的是微软提供的 Linker 连接器,即LINK.EXE。
9.进入 LINK.EXE 文件所在目录,直接运行 LINK.EXE此时提示需要输入被连接的目标文件的名称,这里也就是JS.obj ,由于我的 JS.obj 和 Link.exe 在同一目录下,所以不需要指定路径,直接给出.obj的名称即可,按Enter 键。
宏汇编软件MASM51的使用
宏汇编软件MASM51的使用第一 节 概 述单片机开发可以用手工汇编和机器汇编两种方法。
采用手工汇编就是先编写出汇编程序,然后对照单片机汇编表手工将汇编程序翻译成机器码,最后将机器码一个一个地送入开发仿真器的RAM中去进行调试。
由于采用手工汇编的机器码是相对于存储器的绝对地址进行定位的,因此在调试时,若要在程序中增加或删除一条指令,就会造成指令的绝对地址发生变化。
这样除修改那条指令外,几乎所有转移、调用指令的操作数都要作相应的修改,稍有疏忽程序就会出错。
而采用机器汇编,在很大程度上可以避免上述麻烦。
只要通过键盘输入源程序后,其余作工作都由计算机来进行,即查出相应的机器码,对地址进行定位,建立能被开发装置接收的机器码文件、建立能打印出清单的列表文件等等。
机器码不需要再一个一个地从仿真器的键盘上键入,只要从PC机的通讯口直接传送到开发装置中去。
因此使用机器汇编大大提高了单片机开发的速度。
源程序被输入到机器中后,以一个文件的形式保存起来,然后就可以对这个文件进行处理了,要对这个文件进行汇编,必须有相应的汇编程序。
在PC机上进行汇编的程序有多种,以下介绍的MASM51软件就是其中的一种,它的主要特点有:1.对用户编写的源程序格式要求不太严格,例如,英文字母的大、小写不受限制,变量名或标号名没有长度限制,对源程序中的空格数也没有严格的要求等等。
这些给用户编写程序带来很大的方便。
2.具有较强的功能,例如支持宏语句,使同一程序中类似的程序结构,只要输入一次,在使用时可用宏语句调用。
此外还允许用条件汇编语句以及完善的伪指令系统等。
减少了编写、输入源程序的工作量。
3.不管用户的源程序有多少错误,它都能全部汇编完,并能形成列表文件及目标文件,以供用户修改错误。
4.可以接收汉字注释,并能完整的将汉字注释复制到列表文件,而其它一些汇编软件则不能处理汉字,或会使列表文件中的汉字注释混乱。
运行MASM51软件的条件很低,现在的PC机都能达到。
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 ”开始相关命令的执行。
MASM的使用
MASM 的使用1、将C盘的MASM文件夹COPY到D盘根目录下面。
2、选用一个文本编辑软件(如记事本、TC等)编写一个汇编源程序(例3.10)3、编写完以后保存为XXX.ASM文件,保存路径:D盘的MSAM文件中(一定要保证路径的正确)。
4、保存完以后,点开始→运行→cmd→确定进入到DOS界面。
5、输入“D:”进入D盘根目录。
6、输入CD MASM进入到MASM文件目录当中。
7、用MASM软件对汇编源程序进行汇编,即输入MASM XXX回车出现如下情况:Microsoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.Object filename [XXX.OBJ]: ↙Source listing [NUL.LST]: ↙Cross reference [NUL.CRF]:EXAMPLE↙50848+450352 Bytes symbol space free0 Warning Errors0 Severe ErrorsD:\masm>汇编程序MASM 需要和用户进行上述相关信息交互,以便进行汇编、生成相应的文件。
(a) 提示用户输入要建立的目标文件名,若默认括弧内的目标文件名,则可直接按回车;(b) 询问用户是否要建立汇编列表文件,若要,则打入文件名,否则按回车;(c) 询问用户是否要建立交叉索引文件,若要,则打入文件名,否则按回车。
注意:仅当屏幕上显示无错误时(警告错误为“0”,严重错误为“0”),才可进行下一步骤连接,否则要根据提供源程序的错误行号和错误性质,重新对源程序进行修改、编辑和汇编。
8、如果没有报错的话,观察masm文件夹当中没有没生成XXX.OBJ文件;如果报错就以源程序里修改程序,直到没有错为止。
9、生成XXX.OBJ文件之后,就开始对XXX.OBJ文件进行连接,用LINK软件,在D:\masm>后面直接敲入LINK XXX回车,出现如下情况:Microsoft (R) Overlay Linker Version 3.60Copyright (C) Microsoft Corp 1983-1987. All rights reserved.Run File [XXX.EXE]: ↙List File [NUL.MAP]: ↙Libraries [.LIB]: ↙Warning: No STACK segment There was 1 error detected.D:\masm>连接程序Link 需要和用户进行上述相关信息交互,以便连接和生成相应的文件。
如何安装和使用MASM6
一路回车,连接成功
把连接好的文件移动到原来的目录下(可选)
进入源文件所在的目录
输入“hello“,并回车,运行汇编好的程序
完成!
如何安装和使用
首先,复制“MASM611”至硬盘分区根目录。
运行“cmd”进入命令行
进入该文件夹。
进入“DISK1”目录,运行“setup”
显示如图所示的画面,按回车进入下一步
选第二项!!!
以默认方式安装
选择在哪个盘安装
按回车进入下一步
正在安装
安装完毕,可以关闭窗口
打开记事本,输入汇编语言源程序,保存。
重新打开一个命令行窗口
转到MASM6.11安装目录的BIN文件夹下
(重要!!!)
运行“masm d:\doc\hello.asm”编译源文件(根据你的源文件目录和文件名修改参数)
编译成功
把编译好的文件移动到原来的目录下(可选)
转到MASM6.11安装目录的BINR文
实验一如何用MASM5
实验一如何用MASM5实验一如何用MASM5MASM(Microsoft Macro Assembler)是一种汇编语言开发工具,由微软公司开发并用于MS-DOS和Windows操作系统。
以下是一些使用MASM5的步骤和注意事项:2.配置环境变量:MASM5安装后,需要配置系统的环境变量,以便在命令行中访问MASM5的可执行文件。
将MASM5的安装目录添加到系统的PATH环境变量中。
4. 编写汇编代码: MASM5使用8086汇编语言,编写代码时需要遵循特定的语法规则。
在.asm文件中,您可以使用各种指令和汇编器指令来编写代码。
例如,您可以使用MOV指令将一个数据从一个位置复制到另一个位置。
5. 汇编和链接: 打开命令提示符,导航到包含您的.asm文件的目录。
运行以下命令来汇编和链接您的代码:```masm filename.asm;link filename.obj;```这将生成一个可执行文件,可以在DOS或Windows命令行下运行。
6.运行程序:运行生成的可执行文件,您将看到您的汇编程序在屏幕上输出结果。
请注意,MASM5是一个古老的工具,可能不再在最新的Windows操作系统上正常工作。
如果您遇到问题,您可以尝试使用最新的版本,如MASM32或MASM64总结:在实验一中,我们学习了如何使用MASM5进行汇编编程。
我们了解了如何安装MASM5,配置环境变量,并编写汇编代码。
我们还学习了如何通过汇编和链接命令来生成可执行文件,并在命令行中运行它。
尽管MASM5是一个古老的工具,但它仍然是学习汇编语言和了解低级计算机原理的好选择。
masm编译汇编程序
masm编译汇编程序masm编译汇编程序⽹上的教程都不是很管⽤,我下载下来是masm32然后⾥⾯并没有masm.exe⽂件,我下载了masm.exe⽂件,提⽰我不能运⾏不过有这个东西,打开这个界⾯,新建⽂件可以写汇编程序project->assemble asm file 可以编译出.obj⽂件会弹出两个框1.创建新⽂件:File->New,编辑代码,保存成***.asm的⽂件即可。
2.编译源⽂件:Project->Assemble Asm File,汇编结束后会出现⼀个txt的结果⽂档,如果有错,可以根据相应的结果进⾏调试然后在进⾏汇编,此步会产⽣***.obj⽂件。
3.连接:Project->Link Obj File,链接2步骤中产⽣的Obj⽂件,产⽣exe⽂件。
4.运⾏:Project->Run Program,运⾏程序。
不过masm32写⼊的汇编程序需要有⼀定的格式.486.model flat, stdcalloption casemap:noneincludelib \masm32\lib\kernel32.libincludelib \masm32\lib\user32.libincludelib \masm32\lib\gdi32.libinclude \masm32\include\kernel32.incinclude \masm32\include\user32.incinclude \masm32\include\gdi32.incinclude \masm32\include\windows.inc.data// 变量.codestart:// 代码end start不按格式写会报错。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
老师给的实验内容,在此和大家分享。
1、常用汇编语言工具
2、DOS汇编与WIN32汇编
在DOS下编写汇编程序,程序员可以管理系统的所有资源,访问和改动系统中所有的内存,修改内存控制块,修改中断向量表截获中断,直接对I/O 端口进行读写。
DOS是个单任务操作系统,只有一个运行级别,任何进程和DOS操作系统都是同等级别的。
因此,DOS系统中各个进程会互相影响,如果某个进程死机的话,整个系统都会垮掉。
DOS工作在实模式下,程序员可以寻址1M的内存,通过段寄存器来指定段的初始地址,每个段的大小为64K。
超过1M的部分,就只能把他作为XMS使用。
1M以上的内存空间只能用作数据存放而无法在其中执行程序。
Win32是指32位的Windows操作系统,进程有多种运行级别,操作系统工作在最高级别——0级,而应用程序工作在3级。
在第三级别,进程无法直接访问I/O端口,无法访问其它进程运行的内存,连向自己的运行代码写入数据都是非法的。
只有对于最高级别的进程,系统才是全开放的。
Windows 工作在保护模式下,所有的资源对进程来说都是被“保护”的。
在内存方面,Windows使用了处理器的分页机制,程序员不必用一个段寄存器去指定段的地址,因为在保护模式下,段寄存器的含义是不同的(参见80386手册方面的书籍)。
程序员可以直接指定一个32位的地址来寻址4GB的内存。
在程序结构方面,Windows程序也有很大的不同,它是“基于消息”的。
在上面列举的汇编工具中,一些是DOS汇编工具,一些是Win32汇编工具。
初学者可以从DOS汇编入手,先掌握汇编编程的思路、基本语法和编程技巧,待入门后再学习Win32汇编。
当然,学习DOS汇编并不一定需要安装和使用DOS操作系统。
程序员可以在Win32环境中安装MASM 6.0或其它16位汇编工具,在命令提示符状态下编译和链接DOS汇编程序。
DOS汇编程序在Win32环境中运行时,操作系统会模拟实模式运行16位进程。
对于一些可能会影响整个操作系统工作的指令,Win32操作系统会拒绝执行。