精品实验二汇编语言基础实验应用优秀
- 格式:pdf
- 大小:154.20 KB
- 文档页数:8
汇编语言-实验二循环与子程序程序设计汇编语言-实验二循环与子程序程序设计引言在汇编语言中,循环与子程序是常用的程序设计技术。
循环结构能够使程序重复执行一段代码,而子程序则能够将一段代码封装成一个可重用的模块。
本文将介绍如何使用汇编语言进行循环和子程序的程序设计。
循环结构在汇编语言中,循环结构可以使用`LOOP`指令或者`JMP`指令来实现。
`LOOP`指令会根据`CX`寄存器的值进行循环,每次循环都会将`CX`寄存器的值减一。
程序员可以通过设置`CX`寄存器的初始值来控制循环次数。
下面是一个简单的示例演示如何使用`LOOP`指令实现循环结构:asmMOV CX, 5 ; 设置循环次数为5L1:; 这里是循环体的代码LOOP L1 ; 循环除了`LOOP`指令,我们还可以使用`JMP`指令来实现循环结构。
`JMP`指令会无条件地跳转到指定的标签处,从而实现循环。
在循环体的末尾,程序员需要通过`JMP`指令将控制流程跳转到循环的开始处。
下面是一个使用`JMP`指令实现循环结构的示例:asmMOV CX, 5 ; 设置循环次数为5L1:; 这里是循环体的代码DEC CX ; 循环次数减一JNZ L1 ; 如果循环次数非零,跳转到L1处子程序子程序是一段独立的代码块,可以在程序中被多次调用。
通过使用子程序,可以将重复的代码封装为一个可重用的模块,提高程序的可维护性和可读性。
在汇编语言中,子程序的定义和调用可以使用`PROC`和`CALL`指令来实现。
`PROC`指令定义一个子程序,而`CALL`指令用于调用一个子程序。
在子程序内部,使用`RET`指令返回到调用它的地方。
下面是一个简单的示例演示如何定义和调用一个子程序:asmPROC MySubroutine; 这里是子程序的代码RET ; 返回ENDPCALL MySubroutine ; 调用子程序在子程序内部,可以使用栈来传递参数和保存返回地质。
例如,可以使用`PUSH`指令将参数压入栈中,然后在子程序内部使用`POP`指令来取出参数值。
3.2 实验二汇编语言程序设计3.2.1 实验目的1)进一步熟悉汇编语言程序的编辑、宏汇编、链接、运行基本概念;2)熟练掌握动态调试程序TD/DEBUG的常用命令或窗口功能,学会用TD/DEBUG调试程序,修改数据和寄存器等环境;3)熟悉掌握汇编语言程序的典型数据结构设计、典型程序流控制方法,了解DOS/BIOS功能调用的基本方法。
3.2.2 实验环境实验环境同实验一。
3.2.3 基本实验内容1)基本实验内容和要求(1)编写程序实现如下功能;①从键盘输入任意字符串后,存入自定义存储单元,判断处理后将字符串中小写字母转换为大写字母(其他字符不变)并按原顺序将这些字符在屏幕上显示出来。
②从键盘输入在0-65535之间的十进制数,将其转换为16进制数并在屏幕中显示出来,要求判断输入字符串是否为在0-65535之间的十进制数。
(2)复习功各种操作,并用DEBUG调试程序,学会基本命令操作,并通过单步、设置断点等方法观察中间结果,完成正常运行。
命令行方式下直接键入debug myfile.exe回车(myfile为待调试可执行程序),进入调试方式(显示—),键入H回车显示全部命令、格式和功能。
常用命令有;U(反汇编)、A(汇编输入指令程序)、R(寄存器显示/修改)、I(端口输入)、0(端口输出)、D(显示数据)、E(修改数据)。
除资源修改管理功能外,重点应用T(单步)、Tn(执行n步)、P(过程/指令)、G××××(从当前器:IP执行到断点××××)或G=××××l ××××2(从××××l执行到××××2断点)调试实驴程序。
2)编程提示(1)小写字母的ASCII码比其所对应的大写字母的ASCII码值大20H,如字符“a”的ASCII 码为61H,而字符“A”的ASCII码为41H,因此字符变换时将小写字母的ASCII码减去20H即为大写字母的ASCII码。
实验二汇编伪指令及简单程序设计汇编语言程序结构一、实验目的1.学习汇编语言的伪操作,数据定义,内存分配,段定义,子程序等。
2.熟悉汇编语言程序设计的步骤方法。
3.编写简单的汇编语言程序。
二、实验任务1、伪操作学习编辑下列源文件:data SEGMENTdat0 DB 10101010B,‘ tjpu ’dat1 DB ‘ 12345’dat2 DB 10h dup(2 dup(‘ sd ’data ENDScode SEGMENTASSUME CS:code , DS:datastart: MOV AX,dataMOV DS,AXMOV CL,dat0+1CALL my_procMOV AH,4CHEnd_start: INT 21HMy_proc procPUSH AXPUSH DXMOV DL,CLMOV AH,02HINT 21HPOP DXPOP AXRETMy_proc endpcode ENDSEND start汇编该文件,使用 TDEBUG 的 F7功能跟踪指令的运行,观察运行期间寄存器的变化和输出。
注意数据段内容的定义。
1. 2、编写完整的汇编语言程序(1 定义一个数组,数组的内容为 1~3,求出数组元素的和,放入变量 sum 中。
并将其结果在屏幕上输出。
(2 任意定义一个数组,求出其中奇数的个数,并输出。
(用 and 指令,二进制最后一位为 1的为奇数(3 输入两个数,求其减法结果,并在屏幕上输出。
以上个程序的结果需要在屏幕输出(需要自己编写输出函数。
编写完成的程序最后放在一个文件夹中,文件夹的名字为自己的班级姓名,文件夹中各程序的名字为程序 1、程序 2、程序 3。
四、问题思考1、 dat2 DB 10h dup(2 dup(‘ sd ’ 的作用?2、 CALL 与 jmp 指令的区别。
五、实验报告1、实验目的2、实验内容3、实验步骤3、实验结论(实验总结、实验收获。
汇编语言程序设计实验报告实验名称循环结构与子程序设计实验班级学号姓名日期成绩评阅人软件学院一、实验目的与意义1、掌握循环结构程序的设计、子程序的设计及调试技巧与方法。
2、加深对循环结构的理解。
3、熟练掌握DEBUG的常用指令,学会用DEBUG调试程序。
4、掌握子程序的结构和使用方法。
5、加深对于循环指令的使用和理解。
二、实验环境操作系统:Windows XP软件名称:Editplus3.0,MASM5.0实验地点:综合楼311三、实验的预习内容实验四:单重循环程序设计实验预习内容:在实验前要了解循环程序的组成结构,要着重了解循环控制指令、串操作指令和操作功能,以及在循环控制过程中寄存器的使用,这样便于在程序中操作寄存器,为我们的编程提供了巨大的便利。
我们还需要掌握分支跳转的指令,虽然本实验是单重循环的实验,但仍然需要分支结构来实现跳转。
我们还需要掌握编制循环控制结构的技巧。
实验五:多重循环程序设计实验预习内容:在实验前应该了解多重循环结构的特点,掌握单重循环和多重循环的汇编指令的使用方法,以及各指令中寄存器的使用情况,这样在编写程序时可以更加灵活的使用寄存器。
我们还应该了解编制多重循环结构的技巧。
实验六:子程序及宏指令设计实验预习内容:在实验前要了解子程序和宏指令的定义,了解有关子程序和宏指令的使用方法,以及子程序和宏指令的调用方法。
四、实验的步骤与调试方法(1)单重循环程序设计实验实验步骤:首先,我将5个数字存储到DATA1的连续单元里,将数字的个数存储到CNT当中。
之后,我在代码段当中,取出DATA1中的数据,将其与100相比,如果两个数相等就输出Y,如果没有,则继续取出下一个数据,直到将所有的数据都比较完,如果都不相等的话则输出N。
对于使用字符串指令来实现该功能,大体原理相同,主要区别为使用了搜索字符SCASB。
异常与调试方法:1、在实验中,发现每次的结果都不正确,部分代码如下:DSEG SEGMENT ;定义数据段DATA1 DW 1,2,3,100CNT DW 4DSEG ENDS经过分析发现,单个数据定义为了字类型,数的大小和性质不对,在声明一组数放在一个地址空间中,我们应该将其定义为字节类型的数据。
汇编语言程序设计实验教程第二章实验报告实验2.1用表格形式显示字符1.题目:用表格形式显示ASCII字符SMASCII2.实验要求:按15行*16列的表格形式显示ASCII码为10H-100H的所有字符,即以行为主的顺序及ASCII码递增的次序依次显示对应的字符。
每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCII为0)隔开。
3.提示:(1)显示每个字符可使用功能号为02的显示输出功能调用,使用方法如下:mov ah,02hmov dl,输出字符的ASCII码int 21h(2)显示空白符时,用其ASCII码0置入dl寄存器。
每行结束时,用显示回车(ASCII 为0dh)和换行符(ASCII为0ah)来结束本行并开始下一行。
(3)由于逐个显示相继的ASCII字符时,需要保存并不断修改dl寄存器的内容,而显示空白、回车、换行符时也需要使用dl寄存器,为此可使用堆栈来保存相继的ASCII字符。
具体做法是:在显示空白或回车、换行符前用指令push dx把dl的内容保存到堆栈中去。
在显示空白或回车、换行符后用指令pop dx恢复dl寄存器的原始内容。
4.程序清单:code segmentassume cs:codestart:mov dx,0010hnext:mov cx,10hloop1:mov ah,02hint 21hinc dxpush dxint 21hpop dxloop loop1push dxmov dl,0ahint 21hmov dl,0dhint 21hpop dxcmp dx,100hjb nextmov ah,4chint 21hcode endsend start5.运行结果如下:6.实验总结:通过本次实验我深刻的知道用汇编语言编译程序的方法,掌握了如何合理的利用各个寄存器进行程序的控制操作,初步了解到循环程序的控制方法,以及dos中断调用的基本要领对学习汇编语言有了非常好的帮助作用!汇编语言实验二查找匹配字符串一、目的查找匹配字符串SEARCH程序接收用户键入的一个关键字以及一个句子。
实验二 汇编语言程序设计综合实验班级:电气类06 姓名:吴静 学号:1304200624说明:本实验所用软件和源程序均在路径:E:\Assembly 下,源程序名为ME2.asm,可执行文件名ME2.exe,源代码见文档末,运行的平台为dosbox 。
上机实验过程如下1. 编辑源程序2. 汇编源程序,连接目标程序(路径E:\Assembly 挂载在C 盘下)编译链接程序无错误,一次通过3. 运行可执行程序程序的基本功能已经完成,将十进制数转化为十六进制数4.添加按Esc键退出程序的功能从程序的运行结果可以看到,无论从什么时候按下Esc键,程序都会退出。
它的实现原理是:每次从键盘输入一个字时,就立即检测是否为1BH(Esc的Ascll码)。
如下如果是就跳到标号ESCEXIT(如下,具体见源代码)结束程序的运行。
5. 添加检查错误的功能(错误就是从键盘输入的数不是0~9或者13(Enter键的十进制Ascll码),检测到错误后就另起一行输出’Input Error’字符,显示可以重新输入十进制数)。
先观察一下程序执行的结果:接下来,就解释这个功能是如何实现的(重点,也是心血!)。
①添加一个可以显Input Error 的名为IERROR 的子程序(右图),它的数据在程序的开始段。
②当输入的字符不是0~9时,这里就修改一下,不是跳到EXIT,而是跳到INPUTE(右图),从而执行IERROR 子程序。
③在执行这个程序之前,已经判断输入的不为0~9,但是还要判断输入的是否为Enter 键(即13)。
所以加入一个判断的语句(左图),NEXT 就是继续运行程序。
这里我将SUB AL,30H 放在了后面,是为方便判断AL 是否为13。
从程序的运行结果可以看到,如果我们输入的是Enter(图中1234后面输入的就是Enter),那么程序正常执行,输出04D2;在我们输入数的过程中如果出现除0~9和13以外的数,那么程序就会输出Input Error,并且在另一行要求重新输入,并不会退出程序。
实验二算术运算类操作实验姓名:***学号:**********班级:05211101专业:通信工程一、实验要求和目的1、了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式;2、掌握各类运算类指令对各状态标志位的影响及测试方法;3、熟悉汇编语言二进制多字节加减法基本指令的使用方法;4、熟悉无符号数和有符号数乘法和除法指令的使用;5、掌握符号位扩展指令的使用。
6、掌握BCD 码调整指令的使用方法二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验思想本实验主要进行算术运算程序设计和调试,涉及到的知识点包括:1.加减法处理指令主要有加法指令ADD,带进位加法ADC,减法指令SUB,带进位减法指令SBB。
2.乘除法指令和符号位扩展指令主要有无符号数乘法指令MUL,带符号数乘法指令IMUL,无符号数除法指令DIV,带符号数除法指令IDIV,以及符号位从字节扩展到字的指令CBW 和从字扩展到双字的指令CWD。
3.BCD 码的调整指令主要有非压缩的BCD 码加法调整指令DAA,压缩的BCD 码减法调整指令DAS,非压缩的BCD 码加法调整指令AAA,非压缩的BCD 码减法调整指令AAS,乘法的非压缩BCD 码调整指令AAM,除法的非压缩BCD 码调整指令AAD。
8088/8086 指令系统提供了实现加、减、乘、除运算的上述基本指令,可对表1 所示的数据类型进行数据运算。
四、实验内容与步骤1、对于两组无符号数,087H 和034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响。
2、在数据段定义了两个多精度的有符号16 进制数,FIRST 和SECOND ,1)求两数的和与差,并将结果存放在THIRD 为首地址的缓冲区中;2)如果把两组数据当作十进制数据来处理,再次求两数的和与差,并将结果存放在FORTH 为首地址的缓冲区中。
实验二汇编语言程序设计2.1 实验目的(1)掌握汇编语言程序的基本格式。
(2)学会汇编语言的编辑、汇编、连接及调试的方法。
(3)在MASM 6.11中完成第一个程序。
2.2 实验设备及软件环境装有DOS系统及MASM6.15的微机一台。
2.3 汇编程序设计及调试过程1 编辑汇编语言源程序利用EDIT、记事本等文本编辑器,用汇编语言编写汇编源程序(扩展名为.ASM)。
2 汇编调用宏汇编程序MASM把源程序汇编成目标程序(扩展名为.OBJ)。
在汇编过程中将对源程序进行语法检查。
如果源程序有语法错误,屏幕上将出现提示信息。
此时,需要返回到编辑程序,对有语法错误的语句进行修改。
然后重新汇编,直到程序无语法错误为止。
3 连接由汇编后产生的目标程序通过连接程序LINK,转换为一个可执行文件(扩展名为.EXE)。
4 调试运行利用DEBUG程序,对可执行文件进行调试,查看程序运行是否正确。
2.4 实验内容编写第1个完整的简单的汇编程序。
汇编语言源程序为:ASSUME CS:CODESGCOSESG SEGMENTSTART: MOV AX,0123HMOV BX,0456HADD AX,BXADD AX,AXMOV AX,4C00HINT 21HCODESG ENDSEND2.5 实验步骤1 编辑源程序(以EDIT为例)(1)定义一个段,名称为ABC:ABC SEGMENT..ABC ENDS(2)在这个段中写入汇编指令,来实现要处理的任务: ABC SEGMENTMOV AX,0123HMOV BX,0456HADD AX,BXADD AX,AXABC ENDS(3)指出程序在何处结束:ABC SEGMENTMOV AX,0123HMOV BX,0456HADD AX,BXADD AX,AXABC ENDSEND(4)ABC被当作代码段来用,所以应该将ABC和CS联系起来:ASSUME CS:ABCABC SEGMENTMOV AX,0123HMOV BX,0456HADD AX,BXADD AX,AXABC ENDSEND(5)最终写成的程序为:ASSUME CS:ABCABC SEGMENTMOV AX,0123HMOV BX,0456HADD AX,BXADD AX,AXABC ENDSEND(6)程序返回实现程序返回功能的两条指令:MOV AX,4C00HINT 21H(7)最终写成的汇编源程序为:ASSUME CS:ABCABC SEGMENTMOV AX,0123HMOV BX,0456HADD AX,BXADD AX,AXMOV AX,4C00HINT 21HABC ENDSEND(8)与结束有关的几个概念①进入DOS方式,运行EDIT;②在EDIT中编辑程序;③将程序保存为文件C:\1.asm后,退出EDIT,结束对源程序的编辑。
实验二、汇编语言程序的汇编与调试一、实验目的掌握汇编语言程序的汇编与调试过程,熟悉MASM、LINK、DEBUG等程序的使用。
了解列表文件与交叉参考文件的基本内容。
二、实验原理编制好汇编语言的源程序后,若要在机器上运行,必须经过如图1- 1所示的几个步骤:1、编辑源程序图1- 1 汇编语言程序的上机过程可以使用任何一种文本编辑程序编辑汇编语言源程序,通常使用DOS提供的文本编辑程序EDIT,具体使用方法为:从Windows进入MS-DOS方式,在DOS提示符后键入:EDIT [文件名]进入EDIT后,对源程序进行全屏幕编辑。
编辑完成后选择File菜单的Save命令保存文件,选择File菜单的Exit命令退出EDIT。
对于汇编语言源程序,其文件的扩展名约定使用ASM。
2、汇编汇编程序的基本功能是把用汇编语言编写的源程序翻译成机器语言目标代码,同时生成列表文件及交叉参考文件。
汇编程序的操作步骤为:在DOS提示符后键入:MASM 源程序文件名或MASM 源程序文件名,列表文件名,交叉参考文件名其中文件名不必给出扩展名,汇编程序会按照默认情况处理或产生。
若汇编后出现警告错误或严重错误,应调用EDIT对源程序进行修改,再重新汇编,直至无错误为止。
列表文件[.LST]和交叉参考文件[.XRF]有助于程序的分析和错误的查找,根据需要可以生成这两个文件(缺省时无)。
其中列表文件是文本文件,可用EDIT打开。
交叉参考文件是二进制文件,通过执行程序CREF.EXE,将二进制交叉参考文件转换为索引列表文件[.REF],具体方法为在DOS提示符后键入:CREF 交叉参考文件名3、连接汇编以后的目标代码的地址还是可浮动的相对地址,需要经过连接才能生成可执行程序。
连接程序的功能是连接多个目标代码模块(如果有的话),确定每个程序段的地址,形成可执行程序文件[.EXE]。
连接程序的操作步骤为:在DOS提示符后键入:LINK 目标代码文件名当目标代码文件不止一个时,各个目标代码文件名之间用+(加号)连接;也可以用命令行方式运行LINK程序,其格式为:LINK 目标文件名,可执行程序文件名,内存映象文件名,库文件名4、调试程序通过汇编和连接,排除了语法错误,并不一定能正确执行,这就需要使用动态排错程序。
实验二汇编语言基础实验应用实验二汇编语言基础实验应用DOS功能调用练习实验目的:1.介绍常用DOS功能调用2.熟悉DOS功能调用的使用实验要求:根据要求编写程序。实验内容:常用DOS功能调用介绍:DOS功能调用格式:(1)将调用参数装入制定的寄存器;(2)如需功能号,把它装入AH;(3)如需子功能号,把它装入AL;(4)INT21H1.从键盘输入一个字符并回显在屏幕上MOVAH,1INT21H返回值AL=输入字符的ASCII码支持Ctrl_C或Ctrl_Break的中断处理(即结束程序)。2.从键盘输入一个字符,不回显MOVAH,7INT21H返回值AL=输入字符的ASCII码不支持Ctrl_C或Ctrl_Break的中断处理(即结束程序)。3.从键盘输入一个字符,不回显MOVAH,8INT21H返回值AL=输入字符的ASCII码支持Ctrl_C或Ctrl_Break的中断处理(即结束程序)。4.输入字符串到缓冲区MOVDS,缓冲区所在段的段地址MOVDX,缓冲区首偏移地址MOVAH,10;或写为0AHINT21H输入字符串以回车结束,如果输入的字符数超过缓冲区容量,多余的字符无法输入。缓冲区定义格式:BUFFERDB最大字符数,实际输入字符数(不包括回车字符),字符串(包括回车字符)例如:BUFFERdb20,?,20dup(?)6.显示一个字符MOVDL,要显示字符的ASCII码MOVAH,2INT21H7.显示字符串MOVDS,字符串所在段的段地址MOVDX,字符串首偏移地址MOVAH,9INT21H字符串定义格式:STRINGDB‘……$’字符串必须以字符$结束。例1:输入一个字符,将其存入字节变量CHAR中,并在第二行显示其后继字符。用到了1号和2号功能,其中1号功能可以用7号或8号功能代替,其区别详见功能介绍。DATASEGMENTCHARDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX
MOVAH,1INT21H;输入一个字符
MOVCHAR,AL;存入变量CHAR中MOVDL,0AHMOVAH,2INT21H;显示换行符(换行符的功能为将光标移至下一行的当前位置)
MOVDL,0DHMOVAH,2INT21H;显示回车符(回车符的功能为将光标移至本行行首)
MOVAL,CHARINCAL;取得后继字符的ASCII码
MOVDL,ALMOVAH,2INT21H;显示字符
MOVAH,4CHINT21H;退出程序CODEENDSENDSTART例2:输入姓名并存入MYNAME缓冲区中。用到了0A号功能和9号功能。DATASEGMENTMESSAGEDB‘PleaseenteryourEnglishname:$’MYNAMEDB21,?,21DUP(?);缓冲区最多容纳21个字符(包括回车)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX
LEADX,MESSAGEMOVAH,9INT21H;输出字符串
LEADX,MYNAMEMOVAH,0AHINT21H;输入字符串
MOVAH,4CHINT21HCODEENDSENDSTART
实验题目:编写程序实现:编写程序实现输入1个学生的学号,姓名,性别,年龄,并保存在变量中,然后再将这1个学生的信息以一行的形式显示出来。要求:输入信息利用1号或0Ah号功能,输出信息利用2号或9号功能。数据段定义示例:(也可以自己根据需要定义变量的结构)注意程序粘贴到记事本后引号需要改写为英文输入法的引号。DATASEGMENTMESSAGE1DB‘Justknockthekeyboard:’,0AH,0DH,’$’;输入提示语MESSAGE2DB‘Oh,seethemagain!’,0AH,0DH,’$’;输出提示语STUDENT_NUMBERDB11,?,11DUP(?);假设学号为10个字符STUDENT_NAMEDB21,?,21DUP(?);假设姓名不超过20个字符STUDENT_SEXDB?;性别F/MSTUDENT_AGEDB3,?,3DUP(?);年龄为2个字符00~99DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;EnteryourcodehereMOVAH,4CHINT21HCODEENDSENDSTART
汇编语言上机环境及基本步骤一、实验目的:1.掌握编写汇编源程序的基本格式。2.熟悉汇编语言上机环境。3.掌握汇编源程序的编辑和修改,熟悉EDIT或记事本的使用方法。4.掌握汇编源程序编译、连接成可执行文件的过程,熟悉MASM,LINK的使用方法。二、实验内容:在屏幕上显示并打印字符串“Thisisasampleprogram.”三、实验仪器微机一台四、实验步骤:1.在E盘以自己的名字的汉语拼音建立一个工作目录(文件夹,名称不要太长,不超过8个字符比如zhangsan),将文件MASM.EXE,LINK.EXE复制到该目录下,编辑的源文件也保存到该目录下。从WINDOWS进入DOS环境:C:\>
2.用EDIT编辑SW1.ASM源文件。(1).从当前目录进入自己的目录下,C:\>E:回车E:\>CDzhangsan↙回车键入EDIT并回车:E:\zhangsan>EDIT根据菜单提示进行各种操作。(2)进入EDIT编辑------EDIT是一种全屏幕编辑软件,可输入、编辑、修改、保存、另存源程序非常方便。说明:也可在WIDNDOWS环境下用记事本编辑源文件,在保存时,保存类型应选择所有文件,不能选择文本文件(*.txt),否则在编译时会找不到源文件的。(3).编辑新文件:a、在EDIT编辑器中输入汇编源程序。b、检查输入有无错误。c、打开文件菜单FILE选择另存为SAVEAS┅输入文件名为:SW1.ASM保存。注意:保存到你自己的文件夹中d、若需要修改此文件,用FILE菜单选择打开OPEN输入文件名SW1.ASM,即可修改。修改后注意重新再存盘。(4).编辑汇编源程序a、在EDIT(或记事本)中输入源程序。b、检查。c、存盘。可保存为SW1.ASM
3.用汇编程序MASM将SW1.ASM文件汇编,生成SW1.OBJ目标文件。(1).一般简单程序只需生成.OBJ文件,可键入简化命令:E:\zhangsan>MASMSW1;↙若有错误,则显示错误行号及错误性质,如:SW1.ASM(5):errorA2006:undefinedsymbor:xxxx(2).若有错重新进入EDIT进行修改。修改后并再存盘,退出编辑,回到DOS,再汇编。E:\zhangsan>MASMSW1;↙(3).没有任何错误时,显示:Assembling:SW1.asm表示汇编成功,生成SW1.OBJ文件。(4).用DIR命令查看应有SW1.OBJ:E:\zhangsan>DIRSW1.*
4.用连接程序LINK将SW1.OBJ文件连接,生成SW1.EXE可执行文件。(1).一般仅生成SW1.EXE文件,可键入简化命令:E:\zhangsan>LINKSW1;↙若有错误,则显示错误信息,则应返回编辑、修改、存盘,再汇编、连接直到连接成功,生成SW1.EXE可执行文件。(2).用DIR命令查看应有SW1.EXE:E:\zhangsan>DIRSW1.*↙
5.运行SW1.EXE文件E:\zhangsan>SW1↙执行SW1.EXE文件,屏幕应显示:“Thisisasampleprogram.”。由连接程序生成的.EXE,在DOS下,直接键入文件名(不要扩展名.EXE)就可以把文件装入内存,并立即执行。但有的程序没有直接显示结果;对于较复杂程序难免会出现错误,直接观察很难找到错误所在,这样就要借用调试程序进行调试。实验现象记录:记录调试过程中出现的问题及修改措施,并记录程序执行结果。
五、实验源程序;********定义数据段*********DATASEGMENTDA1DB‘Thisisasampleprogram.’DB0DH,0AH,’$’
DATAENDS;********定义堆栈段*********STACKSEGMENTST1DB100DUP(?)STACKENDS;********定义代码段*********CODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATA,SS:STACK