汇编语言实验指导教程及例示
汇编语言实验指导书
目录第一部分汇编语言程序的上机过程 (1)一、建立汇编语言的工作环境 (1)二、在计算机上运行汇编语言的步骤 (1)三、建立ASM文件 (1)四、用MASM程序产生OBJ文件 (3)五、用LINK程序产生EXE文件 (3)六、程序的执行 (3)七、举例 (3)第二部分汇编语言上机调试 (4)一、为何需要调试? (4)二、如何进行调试? (5)第三部分汇编语言上机内容 (8)实验一输出字符串 (8)实验二算术指令综合编程 (8)实验三查找子字符串 (9)实验四字符串正向、反向输出 (9)实验五信息检索 (9)实验六格式化输出 (9)实验七数组合并 (10)实验八字符统计 (10)实验九数制转换 (10)第四部分汇编语言实验参考代码 (11)实验一输出字符串 (11)实验二算术指令综合编程 (11)实验三查找子字符串 (12)实验四字符串正向、反向输出 (13)实验五信息检索 (14)实验六格式化输出 (17)实验七数组合并 (18)实验八字符统计 (20)实验九数制转换 (22)第一部分汇编语言程序的上机过程一、建立汇编语言的工作环境为运行汇编语言程序至少要在磁盘上建立以下文件:1、编辑程序,如EDIT.EXE2、汇编程序,如MASM.EXE3、连接程序,如LINK.EXE4、调试程序,如必要时,还可建立如CREF.EXE,EXE2BIN.EXE等文件。
二、在计算机上运行汇编语言的步骤1、用编辑程序建立ASM源文件,以ASM作为扩展名2、用汇编程序把ASM文件转换成OBJ文件3、用连接程序把OBJ文件转换成可执行文件4、在DOS提示符下直接键入可执行文件名即可执行该程序三、建立ASM文件建立ASM文件的编辑程序可以是DOS自身带的编辑程序EDIT.EXE,在DOS提示符下键入EDIT命令即可出现EDIT界面,其操作如下:D:\>edit源程序输入完后,以ASM作为扩展名进行保存,假设所保存的文件名为:ex.asm。
汇编语言实验一 指导书
实验一:汇编上机指导及例示一、实验目的●了解汇编语言程序的运行环境和所需的系统程序;二、实验要求●掌握如何编辑、汇编、连接和运行汇编程序;●掌握常用的DEBUG命令。
三、实验原理题:在屏幕上显示一条'THIS IS A SAMPLE PROGRAM OF KEYBOARD AND DISPLAY'提示信息,如从键盘上输入ESC键,则结束程序,如输入的不是大写字母,则在显示器上显示出来,如输入的是大写字母,则转换为小写字母输出。
四、实验设备计算机五、实验步骤1、用用文字编辑工具(常用EDIT或记事本)将源程序输入,其扩展名为.ASM。
2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。
若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。
3、用TYPE命令显示产生的.LST文件。
4、用LINK将.OBJ文件连接成可执行的.EXE文件。
5、在DOS状态下运行LINK产生的.EXE文件。
用于调试程序时的输入格式:DEBUG FILENAME.??? 回车其中FILENAME是主文件名,???是扩展文件名,例如我们在此前已编译好了一个文件,它的名字为:djx.exe 要对它进行调试时就在DOS提示符下打:DEBUG djx.exe 回车,便可见到 '-' 提示符,如无任何提示说明正确,可进行调试按ESC键可返回DOS。
若未出现预期结果,用DEBUG检查程序。
附: 基本debug操作1、显示内存单元的内容:-d [地址] 或 [范围]2、修改内存单元的内容:-e 地址内容表或-e 地址3、显示CPU内部寄存器和标志位状态:-r4、显示和修改某个寄存器的内容:-r 寄存器名5、汇编命令:-a 地址6、逐条指令追踪:-t [=地址] (无地址则执行IP所指示的指令)7、退出debug:-g8、多条指令追踪:-t [=地址] [n]注:该指令从指定地址起执行n条命令后停下来9、运行命令:-g [=地址1] [地址2 [地址3...]]地址1规定了运行起始地址,后面的地址均为若干断点地址10、反汇编命令:(1)-u [地址]该命令从指定地址开始,反汇编32个字节,若省略地址,则从上一个u命令的最后一条指令的下一单元开始显示32个字节(2)-u 范围该命令对指定范围的内存单元进行反汇编如:-u 04ba:0100 0108等价于:-u 04ba:0100 L9下面给出一些常见出错信息,以便查对:1、Register already defined 汇编内部出现逻辑错误2、Unknown symbol type 在符号语句的类型中,有些不能识别的东西3、Symbol is multi-defined 重复定义一个符号4、Symbol not defined 符号没有定义5、Syntax error 语句的语法与任何可识别的语法不匹配6、Symbol is reserved word 企图非法使用一个汇编程序的保留字(例:定义add为一变量)7、Not proper align/combine type SEGMENT参数不正确8、One operand must be const 这是加法指令的非法使用9、Operands must be same or 1 abs 这是减法指令的非法使用10、Already have base register 试图重复基地址11、Illegal size for item 引用的项的长度是非法的,(如:双字移位)12、Illegal register value 指定的寄存器值不能放入“reg”字段13、Must be AX or AL 某些指令只能用AX或AL14、Improper use of segment reg 段寄存器使用不合法(如:mov ds,0)15、Division by 0 or overflow 给出一个用0作除数的表达式16、Value is out of range 数值大于需要使用的17、CS register illeal usage 试图非法使用CS寄存器18、DUP is too large for linker DUP嵌套太长,以至于从连接程序不能得到所要的记录。
汇编语言实验指导书(第1组)
实验一、Debug调试实验指导书一、实验目的1.进一步学习汇编语言基本指令使用方法;2.学习DEBUG调试工具的基本使用方法;掌握debug调试命令a、u、r、d、t、g等3.逐条观察程序指令的执行过程,理解指令的功能,理解程序自动、顺序地执行的概念,实践其过程(重点)。
二、实验题目1.编写、输入一个32位二进制数相加程序,逐条执行指令,观察指令执行情况。
2.使用已经过汇编和连接的小程序(t3-2.exe),将其装入内存,逐条执行指令,观察执行过程和结果。
在实验过程中,使用D命令修改XXX和YYY单元中的数据,再重新计算其结果。
三、编程提示1.启动计算机的WINDOWS操作系统,运行DEBUG程序。
2.方法1:在开始菜单中找到“运行”,输入“cmd”后回车,启动ms-dos command程序,再在该程序内输入“DEBUG”并按回车,即启动DEBUG调试程序。
3.方法2:在开始菜单中找到“运行”,输入“DEBUG”后确定,即启动DEBUG调试程序。
4.开始编程方法1:在debug中输入a命令,并回车。
显示出的地址是当前指令代码所存放的地址。
接着,逐条有序地输入汇编指令,直接回车即可结束程序指令的输入过程。
如需修改程序,则先确定错误指令的地址,再使用“a 地址号”命令修改。
注意,修改前后指令长度如发生改变,会对该指令以后的指令码的存储造成影响,使程序不能正确执行。
(为什么?)方法2:将事先已经准备好的可执行程序(.exe文件)装入存储器,使用如下命令:debug 文件名.exe。
(.exe必须写全,否则找不到程序文件,为什么?)5.程序调试过程(1)使用u命令将程序反汇编,观察其汇编指令的与源程序的对应关系,观察每一条指令的代码、存放地址、指令代码长度等;(重要)(2)使用r命令读出各寄存器中的数值,从CS:IP寄存器中的数值确定程序当前应执行的指令;(结合计算机硬件知识加以理解)(3)察看当前指令的长度、指令代码、指令功能、操作数的寻址方式、所涉及的寄存器和存储器中的数值;(4)使用d命令读出所关注的存储器中的数值,并计算其地址顺序;(5)使用t命令执行单条指令,察看指令执行后相关存储器和存储器中的数值变化情况,察看标志位寄存器的变化情况,判断指令执行后的计算结果是否正确?如遇到条件转移指令时要判断是否转移,转移或不转移时下一条指令的地址是什么?(重要)(6)使用e命令读出、修改存储器中的相关数据,可重新执行相关计算指令,再观察结果。
《汇编语言》实验指导书
(1)输入程序并汇编
_A100
0B03:0100 MOV DL,33
0B03:0102 MOV AH,2
0B03:0104 INT 2l
“0B03:0100”类似这样的地址是系统自动提供的,不需用户输入。至此程序已输入完毕,并汇编成机器指令。现在用G命令运行程序如下:
(2)运行程序
_G
3
Program terminated normally
编程思路(仅供参考):
该题目要求掌握运算中带符号数和无符号数运算的区别。本题目只考虑有符号数情况
参考程序清单:ABC.ASM
DATA SEGMENT
X DB1;x 单元存放数字1,以下类推
Y DB4
Z DB3
WDB?,? ;预留2个单元,存放运算结果
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
INT 21H
:
当要执行INT 21H这条指令时,若用T命令进行跟踪,则进入INT 21H程序(DOS功能调用)后,需要数十次T命令才能返回当前程序;若采用P命令进行调试,则只执行INT 21H一条指令,执行完立即返回,给调试者的感觉好象是执行了一条普通指令一样。因此,当读者以后遇到CALL、INT n指令或带重复前缀的数据串操作指令时,若不想观察相应过程的详细执行过程,就可以用P命令。
若是0则为偶数若为2则为奇数可以采用test指令和条件转移指令jz来实现在内存中以buf单元开始缓冲区中连续存放着10个学生的分数试编制程序统计英中90100分8089分6079分及60分以下少人并把结果分别存放在s9s8s7和s6试编制程序从键盘输入学生成绩abcd自动汇总并显示各类分数的人数假定各类分数的总人数在0止输入
新版汇编语言程序设计实验指导书(精)
新版汇编语言程序设计实验指导书(精)汇编语言实验指导书目录实验一debug的启动及其基本命令的使用(2实验二内存操作数及寻址方法(6实验三汇编语言程序的调试与运行(8实验四查表程序设计(10实验五系统功能调用(12实验六循环程序设计(13实验七分支程序设计(15实验八子程序设计(18实验九综合程序设计(20附录实验报告(21实验一debug的启动及其基本命令的采用一.实验目的:掌握debug的基本命令及其功能二.实验内容:debug就是专门为汇编语言设计的一种调试工具,它通过STM,设置断点等方式为汇编语言程序员提供更多了非常有效率的调试手段。
1、debug程序的启动在dos提示符下,可以键入命令:c>debug[d:][path][文件名][参数1][参数2]其中文件名就是被调试文件的名称,它须就是继续执行文件(exe,两个参数就是运转被调试文件时所须要的命令参数,在debug程序调到后,发生提示符“-”,此时,可以键入所需的debug命令。
在启动debug时,如果输入了文件名,则debug程序把指定文件装入内存。
用户可以通过debug的命令对指定文件进行修改、显示和执行。
如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用debug的命令进行修改、显示和执行。
2、debug的主要命令(1编订命令a,格式为:-a[地址]该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。
(2反汇编命令u,有两种格式:1-u[地址]该命令从选定地址已经开始,反汇编32个字节,若地址省略,则从上一个u命令的最后一条指令的之下一个单元已经开始表明32个字节。
2-u范围该命令对指定范围的内存单元进行反汇编,例如:-u04ba:01000108或cu04ba:0100l9此二命令就是耦合的。
(3运转命令g,格式为:-g[=地址1][地址2[地址3。
《汇编 语言》实验 指导书
孝感学院计算机科学系本科《汇编语言程序设计》实验指导书目录实验一:汇编环境与DEBUG调试 (2)实验二:8086汇编语言分支程序设计 (8)实验三:8086汇编语言循环程序设计 (10)实验四:8086汇编语言子程序程序设计 (13)实验五:8086汇编语言中断与磁盘程序设计 (17)相关说明:《汇编语言程序设计》实验的主要目的是掌握汇编程序调试的方法与一般的程序设计能力,为今后的硬件应用打下基础。
因此本实验指导书重在强调实验调试的环节,有关程序设计的具体方法及相关算法请参见教材。
此文件中用黑体字加粗的内容一般为重要信息或实验的步骤与要求,未使用黑体加粗或有下划线的内容是提示信息或问题的答案。
实验一:汇编环境与DEBUG调试目的与要求熟悉汇编环境与汇编源程序的调试,重点掌握汇编的过程与常用DEBUG命令的用法实验内容一、熟悉汇编的编程环境1.汇编语言源程序的建立:可以使用任何文本编辑器建立汇编源程序文件,如:TC、EDIT等。
但建立的文件扩展名建议为.asm,下面的源程序功能用于在屏幕上输出字符串“hello,world!”,我们通过此源程序的运行过程了解汇编的编程环境。
DATA SEGMENTBUF DB“hello,world!$”DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AX,9INT21HMOV AH,4CHINT21HCODE ENDSEND START在DOS提示符下键入以下编辑器命令,如:C:\MASM>EDIT或TC然后在编辑器的窗口中通过键盘输入以上源程序。
并保存为文件abc.asm.后返回到DOS提示符下。
2.将源程序文件汇编成目标程序文件:汇编功能可以使用Microsoft的MASM进行,微软的汇编程序有多个版本,但使用方法大致相同,本实验将使用MASM 5.0进行汇编。
汇编语言实验指导书 (3)
实验报告实验课程:汇编语言学生姓名:李斯超学号:6100409010专业班级:电三091班2010年12月20日目录实验1 利用DEBUG调试汇编语言程序段实验2 初级程序的编写与调试实验(一)实验3 初级程序的编写与调试实验(二)实验4 汇编语言程序上机过程实验5 分支程序实验实验6 循环程序实验实验7 子程序实验实验1 利用DEBUG调试汇编语言程序段一.实验目的1.熟悉DEBUG有关命令的使用方法;2.利用DEBUG掌握有关指令的功能;3.利用DEBUG运行简单的程序段。
二.实验内容1.进入和退出DEBUG程序;2.学会DEBUG中的1)D命令(显示内存数据D 段地址:偏移地址)例1:-D1002)E命令(修改指定内存)例1:-E100 41 42 43 44 48 47 46 45-D 100,L08结果:08F1:0100 41 42 43 44 48 47 46 45例2:-E 100:08F1:0100 76 42 :42是操作员键入此命令是将原100号内存内容76修改为42,用D命令可察看。
3)R命令(显示当前寄存器的内容)4)T命令(设置陷井,单步执行)5)A命令(将指令直接汇编成机器码输入到内存中。
)6)G命令等的使用(执行A命中输入的汇编指令)3.用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。
四.实验环境PC微机DOS操作系统或Windows 操作系统MASM.EXE,LINK.EXE,或宏汇编集成环境五.实验步骤1.在DOS提示符下,进入DEBUG程序;在运行中输入cmd命令调出DOS窗口,在其中输入debug命令进入程序。
2.详细记录每一步所用的命令,以及查看结果的方法和具体结果。
(1)在debug中输入D查看当前数据数据段的断地址:偏移地址中的内容。
如输入-d100,接着操作输入e命令,e命令可以修改指定的内存中的数据,如输入-e10041,42,43,44,48,47,46,45。
汇编语言实验指导书
MOV AX,13C3
(5) 显示内存单元内容的命令 D,格式为:
-D[地址]或-D[范围]
-d ds:0
13C3:0000 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa
13C3:0010 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa
第 1页
该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存
放在从指定地址开始的存储器中。
例如:
-a
136B:0100 mov ax,100
136B:0103 mov bx,200
136B:0106 mov cx,300
136B:0109 mov dx,400
136B:010C
-
(2) 反汇编命令 U,有两种格式:
第 I页
实验一 DEBUG 命令实验
一.实验目的: 掌握 DEBUG 的基本命令及其功能
二.实验内容: DEBUG 是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语
言程序员提供了非常有效的调试手段。 1、DEBUG 程序的启动 DEBUG 的命令格式: [drive:][path] DEBUG [d:][p][filename][.ext][param...] 其中: drive: 是指定 DEBUG 文件的磁盘驱动器标识符,DEBUG 是外部 DOS 命令,所以必须把
其余通用寄存器均置为 0,标志寄存器置为下述状态。
NV
UP
EI
PL
NE
NA
PO
NC
汇编语言实验指导
汇编语言实验指导一、实验目的本实验旨在通过学习汇编语言的基本知识和实践操作,让学生掌握汇编语言程序的编写和调试方法,培养分析问题和解决问题的能力。
二、实验环境准备1. 操作系统:Windows或Linux2. 开发工具:MASM、TASM、NASM等汇编语言编译器3. 可执行文件调试工具:如Debug、OllyDbg等4. 相关资料:《x86汇编语言》、《汇编语言程序设计》等教材或参考书籍三、实验内容1. 实验一:程序的编译和链接1.1 编写一个简单的汇编语言程序,如计算两个数之和,并保存为.asm文件。
1.2 使用汇编语言编译器进行编译,生成目标文件。
1.3 进行链接操作,生成可执行文件。
2. 实验二:汇编语言程序的调试2.1 使用可执行文件调试工具打开生成的可执行文件。
2.2 通过调试工具逐行执行程序,观察寄存器和内存的变化情况,帮助理解程序的执行过程。
2.3 使用调试工具提供的断点功能,在程序中设置断点,以便暂停程序的执行,便于查看和分析程序状态。
3. 实验三:实现简单的输入输出操作3.1 编写一个汇编语言程序,实现从键盘读取一个字符,并将其显示在屏幕上。
3.2 通过使用适当的系统调用,实现输入和输出的功能。
四、实验步骤1. 配置好实验环境,确保所需软件和资料齐全。
2. 根据实验要求,编写相应的汇编语言程序。
3. 使用汇编语言编译器将程序编译成目标文件。
4. 进行链接操作,生成可执行文件。
5. 使用可执行文件调试工具打开生成的可执行文件,进行调试操作。
6. 完成实验报告,整理实验过程和结果。
五、实验总结通过本次汇编语言实验,我对汇编语言的基本概念和编程方法有了更深入的理解,掌握了程序的编写、编译和调试技巧。
实践操作中,我遇到了一些问题,但通过查找资料和自我探索,逐步解决了这些问题。
通过调试和运行程序,我对汇编语言程序的执行过程和寄存器内存的变化有了更好的认识。
本次实验对我的学习和成长有着重要的意义,我将继续深入学习汇编语言,并在今后的学习和工作中应用所学知识。
余敦辉《汇编语言》实验指导书实验1-实验3
《汇编语言》实验指导书目录实验一Debug命令的使用 (3)实验二基本汇编指令的使用 (9)实验三汇编语言程序的调试与运行 (13)实验四系统功能调用程序的调试与运行………………错误!未定义书签。
实验五分支程序设计……………………………………错误!未定义书签。
实验六循环程序设计……………………………………错误!未定义书签。
实验七子程序设计………………………………………错误!未定义书签。
实验八高级汇编语言程序设计…………………………错误!未定义书签。
实验九I/O程序设计……………………………………错误!未定义书签。
实验十中断程序设计……………………………………错误!未定义书签。
实验十一综合程序设计 (38)实验一Debug命令的使用一、知识点1、DEBUG简介DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。
在汇编语言程序调试中很常用。
DEBUG的提示符是“-”,所有DEBUG调试命令军在此提示符下输入。
DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。
DEBUG命令的使用注意问题:(1)字母不分大小写(2)只使用十六进制数,但没有带后缀字母“H”(3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。
(4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。
2、Debug的调入和退出以WIN7环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态:C:\Documents and Settings\lfy>然后输入命令:>Debug进入Debug调试状态,出现Debug命令提示府“-”,在此提示符下可运行所需要的Debug 命令了。
退出Debug的命令:Q3、Debug常用命令(1)汇编命令A,格式为:- A [地址]功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。
汇编语言实验指导(柯栋梁)
《汇编语言》实验报告书专业班级学号姓名指导教师安徽工业大学计算机学院实验一汇编运行环境及方法、简单程序设计一、实验目的:1、熟练汇编语言运行环境和方法。
2、了解如何使用汇编语言编制程序。
3、熟悉DEBUG常用的命令的使用方法。
4、会使用DEBUG命令调试程序。
二、实验内容:1、比较两个字符串STRING1和STRING2所含的字符是否相同,若相同,则输出MATCH,不相同则输出NOMATCH。
2、学会对汇编语言程序进行汇编、连接和运行。
3、学会用DEBUG中的D命令,E命令,R命令,G命令,F命令,U命令,A命令以及T命令。
1.功能:两个字符串STRING1和STRING2所含的字符是否相同,若相同,则输出MATCH,不相同则输出NOMATCH。
在数据段定义二个字符串string1 和string2,另外还有二个提示信息mess1和mess2,通过字符串比较LEA SI,string1LEA DI,string2CLDMOV CX,25REPZ cmpsb如果相等利用9号功能调用输出match,否则输出no match 2.调试步骤:3.程序代码和执行结果;dataseg SEGMENTstring1 DB 'Move the cursor backward.'string2 DB 'Move the cursor backward.'mess1 DB 'Match.',13,10,'$'mess2 DB 'No match.',13,10,'$' dataseg ENDScode SEGMENTmain PROC FARASSUME CS:code,DS:dataseg,ES:dataseg start:PUSH DSSUB AX,AXPUSH AXMOV AX,datasegMOV DS,AXMOV ES,AXLEA SI,string1LEA DI,string2CLDMOV CX,25REPZ cmpsbJZ matchLEA DX,mess2JMP SHORT dispmatch:LEA DX,mess1disp:MOV AH,09INT 21hRETmain ENDPcode ENDSEND start运行结果:实验二循环程序设计-已知学生成绩,求每个学生的名次一、实验目的:1、熟悉循环、DOS功能调用等基本的程序结构。
汇编语言实验指导书--智能15教材
目录第一部分汇编语言程序设计实验 (2)实验一输出字符‘A’ (2)实验二数据的显示实验 (5)实验三从键盘上输入数据实验 (12)实验四字符串的显示实验 (16)第一部分汇编语言程序设计实验实验一输出字符‘A’一、实验目的1.通过这个简单的例子熟悉在微机上建立、汇编、链接和运行8086/8088汇编语言程序的过程。
2.掌握字符的显示方法。
3.学习DOS系统功能调用。
二、实验内容输出字符‘A’,程序流程图如图1-1所示。
图1-1输出字符‘A’程序流程图源程序如下:PROG SEGMENTASSUME CS:PROGMOV DL, 'A'MOV AH, 2INT 21HMOV AH, 4CHINT 21HPROG ENDSEND三、实验设备PC机一台,MASM汇编程序四、实验原理DOS功能调用的两个子程序,调用方法如下:(1)设置入口参数(2)子程序编号送人AH(3)INT 21H,子程序请求中断指令有的子程序不需要入口参数,但大多数需要将参数送入指定地方。
MOV DL,'A'MOV AH,2INT 21H上面用的程序是DOS系统功能调用的2号子程序,功能是将字符送入屏幕显示。
其入口参数是把待输出字符的ASCII码送到DL寄存器中。
例如:ASCII码若是0DH,2号子程序处理成回车;ASCII码若是0AH,处理成换行。
MOV AH, 4CHINT 21H这是DOS系统功能调用的4CH号子程序,功能是返回操作系统,没有入口参数。
五、实验步骤1.用编辑软件(EDIT或记事本)将源程序输入,并存盘。
注意:源程序是用汇编语言语句编写的程序,并不能为机器所识别。
源程序的扩展名为ASM。
2.用宏汇编程序将.ASM源程序汇编成机器码的目标文件(OBJ文件)命令格式是:C:/>MASM 文件名↙此时,汇编程序会在屏幕上给出提示,一般选择回车键作为回答。
Object filename [文件名.OBJ]:↙Source listing [NUL.LST]:↙Cross-reference [NUL.CRF]:↙如果源程序没有错误,则在屏幕上会显示如下信息:0 Warning Errors0 Severe Errors在汇编过程中,如果源程序有错误,要在编辑状态下进行修改,然后重新汇编,直到没有语法错误,才能生成.OBJ文件。
汇编语言程序设计实验教程
式。 ❖ 如:MOV AX,300;将数据300送入AX
寄存器 ❖ MOV AX,[300];将数据段中的
300单元的内容送入AX寄存器。
14
❖ 2、使用 寄存器间接寻址时应注意和寄存 器寻址方式的区别。
❖ 如:MOV AX,BX;BX中的内容传送 到AX
1
❖ 问题:系统中含有MASM.EXE,LINK.EXE和 DEBUG.EXE程序,试说明如何汇编,连接和 调试一个名为F1.ASM的程序。(8分)—— 2001年考研题
❖ 答案: ❖ 汇编:MASM F1.ASM↙;以形成二进制目标文件 ❖ 连接:LINK F1.OBJ ↙;以形成可执行文件 ❖ 调试:DEBUG F1.EXE ↙ ❖ 调试命令:显示寄存器的内容r,检查内存d,
结果保存在DX寄存器中,SUM单元中也有。用R 或D命令看结果,结果为045FH。 1、TD:在*****处设置断点,观察结果。 2、DEBUG:G1B↙,观察结果。
12
作业题
❖ 要求在全面掌握课堂示例程序的基础上,完成以下程 序设计:
❖ 1、用减奇数法开平方。(算法:N个自然数中的奇数 之和等于N的平方。)
9
❖ 命令接受状态,CPU将不断地到内存取指令、执行指令, 使用户失去对系统的控制,出现死机。为避免这种情况, 可在用户程序段结束前加上一小段返回DEBUG功能的 程序段,或用断点方式运行,以避免出现死机。
❖ 4、8086/8088CPU在开机后执行的第一条指令在内存 FFFF:0H开始处。
❖ 5、可读写内存RAM的内容可修改,而只读内存ROM 的内容不能修改,故命令E未能将数字01H填入F000: 200H~22FH的内存中,内存F000:200H~22FH的内 容填写前后保持不变。
汇编实验指导
参考数据段定义:
data
segment
str
db ‘… …’,0dh,0ah, ‘$’
len
equ $-str-3
mess1 db ‘char:$’
mess2 db 0dh,0ah, ‘count:$’
data
ends
;字符串 ;串长度 ;提示信息1 ;提示信息2
显示字符串str 显示提示信息mess1,从键盘输入待查字符 调用子程序coun,查找字符并统计次数存bl
IBM-PC汇编语言程序设计 上机实验
实验一 DEBUG调试程序的使用
实验目的
熟悉DEBUG调试程序的调用及常用命令的使用方法
实验内容
DEBUG程序的调用 汇编及反汇编命令 A、U 的使用练习 显示及修改内存单元命令 D、E 的使用练习 显示或修改寄存器命令 R 的使用练习 单步及连续执行命令 T、G 的使用练习 退出命令 Q 的使用练习
INT 21H
从键盘输入1位十进制数
MOV AH,01H
INT 21H
SUB AL,30H
;把ASCII码转换为数字
显示十进制结果
ADD AL,30H
;把结果转换为ASCII码
MOV DL,AL
MOV AH,02H
INT 21H
源程序框架
DATA SEGMENT INFOR1 DB “INPUT THE FIRST DATA (<=4): $” INFOR2 DB 0DH,0AH,“INPUT THE SECOD DATA (<=4): $” INFOR3 DB 0DH,0AH,“THE SUM IS: $” DATA ENDS
实验报告
实验目的、一个ASCII码10H → BL
汇编语言标准教程+实验指导(最全765页)
• 它们为处理器提供各种操作所需要的数据 或地址等信息 • 汇编语言程序采用它们各自的符号名
– 16位Intel 8086/80286 CPU中有
AX SIDI EAX ESI BX BP EBX EDI CX SP ECX EBP DX
– 32位80386/80486/Pentium系列 CPU中有
BCD码(Binary Coded Decimal)
• 二进制编码的十进制数
– 一个十进制数位0~9用4位二进制编码来表示 – 常用8421 BCD码:低10个4位二进制编码表示 – 压缩BCD码:一个字节表达两位BCD码 – 非压缩BCD码:一个字节表达一位BCD码(低4 位表达数值,001 0111 1000.0001 0100 1001 十进制真值: 4978.149 BCD码便于输入输出,表达数值准确
ASCII码(美国标准信息交换码)
• 标准ASCII码用7位二进制编码,有128个 • 不可显示的控制字符
前32个和最后一个编码 回车CR:0DH 换行LF:0AH 响铃BEL:07H
100+256
• 以助记符形式表示计算机指令
什么是汇编语言
– 助记符(mnemonic)是便于人们记忆、并能描 述指令功能和指令操作数的符号 – 助记符是表明指令功能的英语单词或其缩写
• 汇编格式指令以及使用它们编写程序的规则 就形成汇编语言(Assembly Language) • 汇编语言程序:用汇编语言书写的程序 • 汇编程序:将汇编语言程序“汇编”成机器 代码目标模块的程序
– 分别乘以各自的基数,记录整数部分,直到小 数部分为0为止
0.8125=0.1101B 0.8125=0.DH • 小数转换会发生总是无法乘到为0的情况
汇编语言实验指导书
实验 1 DEBUG的使用一、实验目的1.通过实验了解和熟悉微机系统的配置。
2.学习在DEBUG状态下输入汇编源程序的方法。
3.初步掌握调试(在DEBUG状态下)的过程。
二、实验任务1. 本实验要求在DEBUG状态下输入汇编源程序,并用DEBUG命令进行调试。
用单步跟踪的方法验证指令的功能。
2. 以下是给定的参考程序,并在实验时在每条指令的“;”符号右边按要求填写指令的执行结果。
三、实验仪器微机一台.四、实验步骤1. 用DEBUG的Register命令检查所有寄存器内容,并作记录。
命令格式:R [寄存器名]该命令的功能是显示寄存器的内容,或修改某一指定寄存器内容,若[寄存器名]缺省,则显示所有寄存器内容。
例如:-R2. 用DEBUG的Assemble命令输入汇编源程序。
格式:A [内存地址]注:用“[ ]”符号括起来的部分表示可以省略。
该命令的功能是从指定的内存地址开始(括号不要输入)逐条输入汇编语言源程序并汇编成机器码存入内存。
若地址缺省,则接上一个A命令最后一条指令之后输入汇编语句,若没有用过A命令,则从CS:0100H地址开始输入。
例如:-A0CD3:0100-在输入A命令之后,或每输入一条指令之后,显示器的左端给出了内存的段地址和偏移地址。
每条指令均用回车(↙)结束。
若输入的指令有语法错误,DEBUG拒绝接收,并给出提示,此时可以重新输入。
程序的最后一条指令输入完之后,再按一次回车键(↙),即可结束汇编命令,回到DEBUG提示符“-”状态。
3. 用DEBUG的Unassemble命令反汇编。
命令格式:U [起始地址[终止地址]]该命令的功能是从起始地址到终止地址反汇编目标码,缺省值是接上一个U命令或从CS:0100H地址开始。
例如:-U显示器上将显示程序的内存地址、指令机器码的汇编源程序三列对照清单。
4. 用DEBUG的Trace命令单步跟踪程序。
命令格式:T [ =起始地址] [指令条数]该命令的功能是从指定的起始地址开始逐条执行指令,每执行完一条指令,屏幕显示所有寄存器内容和下一条指令地址和指令。
《汇编语言》实验指导书
《汇编语言》实验指导书计算机学院硬件实验室目录第1部分实验预备知识1.1汇编语言程序的上机操作过程1.2常用DEBUG命令的功能第2部分汇编语言实验实验1 DEBUG基本命令使用 (8)实验2 汇编语言程序的调试与运行 (9)实验3 顺序结构程序设计 (10)实验4分支程序设计 (11)实验5循环程序设计 (12)实验6子程序设计 (15)实验7中断服务程序设计 (16)实验8综合程序设计 (17)实验932位80x86程序设计 (20)第1部分实验预备知识汇编语言程序设计是一门实践性很强的课程。
编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。
建立程序、调试程序需要一些应用程序的帮助。
下面先介绍一些与上机操作有关的应用程序,以为第二部分的实验做出必要的准备。
1.1汇编语言程序的上机操作过程一、所需文件为运行汇编语言程序至少要在磁盘上建立以下文件:(编辑程序)或其他编辑软件MASM.EXE (汇编程序)LINK.EXE(连接程序)DEBUG.EXE(调试程序,DOS外部命令文件)二、运行汇编语言程序的操作步骤1.用编辑程序建立.ASM源文件;2.用汇编程序把ASM文件转换成.OBJ文件;3.用连接程序把OBJ文件转换成.EXE文件;4.用DOS命令直接输入文件名就可执行该程序。
三、汇编语言源程序上机操作过程第一步:建立汇编源程序(即:建立文件名.asm)这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。
将源程序代码录入计算机的方法很多,下面将介绍具体方法。
(1)通过windows自带的EDIT.EXE文本编辑器进行输入。
双击图标或在DOS提示符下键入:EDIT回车,这时如果你系统内可调用时,EDIT的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename为你起的文件名,由1-8个字符组成),asm 是为汇编程序识别而必须加上去的,不可更改。
汇编语言实验指导手册(附个人编译答案)
汇编语言程序设计实验指导手册班级:_______________学号:_______________姓名:杨天啸电子与信息工程学院计算机科学系写在最前面的话这个文档在网上到处都是,这也体现了我们工大人大公无私的精神~\(≧▽≦)/~ 但是!答案是没有滴~~~因此老杨我作为一个伪学霸,特地整理了一下我自己编的程序,有些加以极其详细备注,这要特地感谢我的→_→战友←_← 啊,没有她的鸡蛋里挑骨头的询问,我也不会打得如此详细,我发表这个文档的目的不是让大家大肆抄袭,而是仅仅为大家提供一个汇编上的编程思路,当然我的程序肯定有不足之处啦,毕竟是伪学霸╮(╯▽╰)╭,所以大家一定要小心哦,不要踩雷,祝大家学习进步,心想事成,成为学霸,走上人生巅峰,抱得美人归*^_^*第一部分上机实验的目的和要求一、课程性质、目的与任务“汇编语言程序设计实验”课程是计算机科学与技术及其他相关专业学生的一门核心必修课程。
通过本课程的学习与实验,可以加深学生对汇编语言的理解,进一步掌握CPU、存储器及外设的性能和他们的基本使用方法,提高学生运用所学知识,独立分析问题与解决问题的能力。
二、教学基本要求本课为设计性实验课,学生试验前应按实验内容要求编制程序,学生在实验期间输入和调试程序,观察程序运行结果,课后写出试验报告。
指导教师在实验前概述实验程序算法,在实验期间做针对性的指导、检查实验结果,实验后批改实验报告。
三、上机实验前的准备工作在上机实验前应事先做好准备工作,以提高上机实验的效率,准备工作至少应包括:(1)了解所用的计算机系统的性能和使用方法;(2)复习和掌握与本实验有关的教学内容;(3)准备好上机所需的程序。
由于计算机实验室给每个学生安排的时间是有限的,要珍惜时间,充分利用。
应当在上机前按指定的题目编写好程序。
手编程序应书写整齐,并经人工检查无误后才能上机,以提高上机效率。
初学者切忌不编程序或抄别人程序去上机,应从一开始就养成严谨的科学作风;(4)对运行中可能出现的问题事先作出估计,对程序中自己有疑问的地方,应作出记号,以便在上机时给予注意;(5)准备好调试和运行时所需的数据。
汇编语言实验指导书
汇编语⾔实验指导书《汇编语⾔》实验指导书/实验报告2011年4⽉编制专业:班号:学号:姓名:哈尔滨华德学院计算机应⽤技术系实验⼀DEBUG调试程序和汇编程序的上机操作A DEBUG调试程序的使⽤⼀、实验⽬的学会在DOS环境下使⽤DEBUG调试程序⼆、DEBUG调试程序1.DEBUG调试程序的启动在运⾏菜单下单击DEBUG选项。
2.退出DEBUG—Q↙(回车)3.DEBUG的命令清单(1)显⽰内存单元内容的命令—D格式: D 地址显⽰从指定地址开始的128个字节的内容。
D 范围显⽰指定范围的内存内容。
D 从上次D命令结束位置接着显⽰。
例1:从数据段偏移地址FF40H单元开始,显⽰40H个字节的内容。
D FF40 L 40↙(回车)(2)修改内存单元内容的命令—E格式: E 地址表⽤表中内容替代指定地址开始的内存块内容。
E 地址显⽰指定地址的1个字节的内容,输⼊新值按空格键进⼊到下⼀字节位置;按“—”键返回到上⼀字节;按回车键则结束E命令。
(3)填充命令—F格式: F 范围表⽤表中内容反复赋值以填充指定范围的内存块。
(4)显⽰修改寄存器—R格式:R 显⽰并可修改指定寄存器的内容。
R 寄存器名显⽰并可修改标志寄存器的内容。
RF 显⽰并可修改标志寄存器的内容。
(5)汇编命令—A格式: A 地址从指定地址开始汇编,结果写⼊内存。
A 若不指定地址则从上次A命令结束位置开始汇编。
⾸次则从CS:100H开始汇编。
注:汇编语句中不能使⽤名字。
A命令只识别指令和DB,DW伪指令。
(6)反汇编命令—U格式:U [地址] 从指定地址或上次U命令结束位置开始把内存16字节(40列显⽰格式)或32字节(80列显⽰格式)内容反汇编。
U 范围把指定地址范围的内存块全部进⾏反汇编。
(7)跟踪命令—T格式:T [=地址] 从指定地址(缺省为当前CS:IP地址)执⾏⼀条指令,并显⽰寄存器内容,标志位的状态和下⼀条指令。
T [=地址] 条数单步⽅式指定⾏指定条数的各条指令。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言实验指导教程及例示一、上机前的软件准备:MS-DOS操作系统(如:MSDOS6.22 , MSDOS7.0 等)文本编辑器 (如: , TURBO.EXE , TC.EXE , C.EXE 等)汇编程序 (如:MASM.EXE , ASM.EXE 等)连接程序 (如:LINK.EXE 等)调试程序 (如:DEBUG.EXE 等)二、汇编程序建立过程:a.建立汇编源程序─通过───→b.编译为目标文件─ ↓┬─→d.连接为可执行文件↑│ c.不通过,重新修改(语句错误) ↓ ├──────────────────────┘ ↓ ↑ f.不正确,用调试工具调试,重新修改(逻辑错误) ↓ └────────────────────────────←e运行↓正确g.完成三、现在对(二)的每一个标有字母的过程(PROCEDURE)进行详细说明 PROCEDURE a:建立汇编源程序(即:建立 文件名.asm)这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。
将源程序代码录入计算机的方法很多,下面将介绍具体方法。
1.通过MD-DOS自带的ED99v.EXE文本编辑器进行输入,在DOS提示符下键入:ED99v回车,这时如果你系统内可调用时,ED99v的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename为你起的文件名,由1-8个字符组成),asm 是为汇编程序识别而必须加上去的,不可更改。
存盘后在DOS下可用DOS命令DIR来查看,如果看到了所存的文件存在,就可以进行进程b。
2.如果你的系统中没有ED99v,也可用你所熟悉的文本编辑器进行录入、编辑,如可用c语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。
PROCEDURE b:编译目标文件(即:编译为.obj .lst .crf文件)这个过程计算机将把你编的正确的源代码编译为机器语言、程序清单及交叉引用表的目标文件。
如果此时你的程序有语句错误,系统将报错,并指出在第几行,什么类型的错误,你可根据提示去逐一修改。
现介绍具体过程:在DOS提示符下键入MASM filename回车(注:你系统内的汇编程序为MASM.EXE,如果你系统的汇编程序为ASM.EXE时,便将命令变为ASM filename回车。
其中filename为你刚才在PROCEDURE a 中建立的文件名)这时汇编程序的输出文件可以有三个(分别:.obj .lst .crf),便会出现三次提问,在这可以一路回车即可。
下面显示的信息是源程序中的错误个数,如果为0则表示顺利通过,就可进行进程c。
但如果不为0就说明有错误,并指出错误出现的行,可依据这个提示去进行修改。
但如果错误太多还未等看清就显示过去了,可用如下命令形将错误信息存于一个你指定的文件,再用文本编辑器去查看。
MASM filename >filen (filen为你起的一个没用过的文件名,用以存放出错信息)以后可查看filen来得到出错信息。
PROCEDURE c:编译不通过,重新修改(错误类型:源程序语句不合法)在执行过PROCEDURE b后,如有出错信息时,就要我们自己按PROCEDURE c去做,而不能跳跃到PROCEDURE d去,如果强行执行PROCEDURE d将无任何有效结果。
现在就开现找错吧!首先要清楚,在PROCEDURE b中检测出的错误均为每一条语句的语法或用法错误,它并不能检测出程序的逻辑设计(语句按排位置)错误,所以就要记好出错的行号。
在记录行号后,就应再次执行PROCEDURE a,这时和操作应是打开已编好的源程序(以ED99v为例:在DOS提示符下键入:ED99v filename.asm回车),依据行号进行修改并存盘,再次进行汇编,直至PROCEDURE b通过为止。
便可继续向下执行PROCEDURE d。
下面给出一些常见出错信息,以便查对:1、Register already defined 汇编内部出现逻辑错误2、Unknown symbol type 在符号语句的类型中,有些不能识别的东西3、Symbol is multi-defined 重复定义一个符号4、Symbol not defined 符号没有定义5、Syntax error 语句的语法与任何可识别的语法不匹配6、Symbol is reserved word企图非法使用一个汇编程序的保留字(例:定义add为一变量)7、Not proper align/combine type SEGMENT参数不正确8、One operand must be const 这是加法指令的非法使用9、Operands must be same or 1 abs 这是减法指令的非法使用10、Already have base register 试图重复基地址11、Illegal size for item 引用的项的长度是非法的,(如:双字移位)12、Illegal register value 指定的寄存器值不能放入“reg” 字段13、Must be AX or AL 某些指令只能用AX或AL14、Improper use of segment reg 段寄存器使用不合法(如:mov ds,0)15、Division by 0 or overflow 给出一个用0作除数的表达式16、value is out of range 数值大于需要使用的17、CS register illeal usage 试图非法使用CS寄存器18、DUP is too large for linkerDUP嵌套太长,以至于从连接程序不能得到所要的记录PROCEDURE d:连接为可执行文件(即:连接为.exe 或.com文件)在这个过程中一般没有意外,如果有也就是文件名打错了。
形式:在DOS提示符下: LINK filename 回车PROCEDURE e:运行编译好的可执行文件当PROCEDURE d通过后,会产生一个可执行文件,这时只需运行这个程序,看它是否按你所想象那样得出结果。
在试运行期间,要尽量试一些临界状态,看 程序是否运行稳定、结果是否正确。
如一切正常,便可进入PROCEDURE g了。
可最怕的是不OK,程序产生一些莫名其妙的结果(你可不要以为是你的计算机不听你的指挥,其实它是在一丝不苟地按照你编的程序执行。
我以前总以为我的计算机出了毛病),如果是在考场上这时千万不要慌,稳住自己的情绪,先不要看计算机,静几分钟(反正时间多得是)。
这时就要用到最关键、最常用的一步了,进行PROCEDURE f 。
PROCEDURE f:用调试工具调试,重新修改(逻辑错误)在这我将介绍用DOS中自带的调试程序DEBUG.EXE来进行程序调试、检查错误. 首先我们要了解DEBUG的基本用法:1、用于调试程序时的输入格式:DEBUG FILENAME.??? 回车其中FILENAME是主文件名,???是扩展文件名,例如我们在此前已编译好了一个文件,它的名子为:djx.exe 要对它进行调试时就在DOS提示符下打:DEBUG djx.exe 回车,便可见到 '-' 提示符,如无任何提示说明正确,可进行调试。
2、DEBUG调试过程中用到的DEBUG命令介绍:(注:在指令中用 [] 括起来的内容可缺省)1)D(Dump)显示指定内存单元内容(一般用来看数据数的内容,即DS段):格式:d[地址] 从[地址]指定的内存单元显示128个字节的内容[地址]缺省时,显示上一个DUMP命令后面的内容d 地址范围 显示指定范围内的内存内容。
示例:-d100 显示从DS段100H开始的内容(以十六进制显示)[NextPage]2)E(Enter)修改存储单元内容(一般在DS段)格式:e 地址 [数据] 用给定的[数据]代替指定范围的存储单元内容e 地址 修改一个指定内存单元的内容示例:-e ds:200 'djx'FF00AA 就可将DS段从200开始至205的内容替换为64 6A 78 FF 00 AA3)G(GO)运行命令格式:-g [=地址][断点地址1 [断点地址2 ...[断点地址10]]]从指定[地址]开始执行程序(如地址缺省从当前CS:IP开始),运行至[断点地址1]停止,显示所有寄存器及标志位内容与下一条指令,如后面还有断点,可键入g,继续执行。
示例:-g001a 则执行从当前cs:ip至001a的指令注意:地址设置必须从指令的第一字节设起。
4)T(Trace)执行一条语句格式: -t [=地址] 从指定[地址]起执行一条语句后停下来,显示所有寄存器内容及标志位的值与下一条指令。
如[地址]缺省则从当前CS:IP开始执行-t [=地址][value] 从指定地址起执行value条指令后停止。
5)P(proceed)执行一个循环;一个软中断或call子过程格式:-p [=地址][n]示例: mov ah,02hmov dl,41hint 21h此时用: -p 回车后系统将显示一个字符A,如果在这不用P,而改用T,那么系统将进入INT 21H的中断调用中,出不来,这时你会误以为你的程序编错了,一定注意!!6)R(register)显示并可修改寄存器内容格式:-r 显示所有寄存器内容-r 寄存器名 修改指定寄存器内容(可改:AX,BX,CX,DX,SP,BP,SI,DI,CS,DS,ES,SS,PC,IP,F)7)U(Unassemble)反汇编格式:-u [地址] 从指定[地址]反汇编32个字节,若[地址]缺省则从当前地址汇编32个字节。
-u 地址范围 对指定范围内的存储单元进行反汇编以上是在调试程序中可能用到的DEBUG命令解释,DEBUG中还有其它命令,在检查程序中不会用到,就不再介绍了。
PROCEDURE g:程序编好,那就一切OK!!!下面给出一个有病句的程序,希望大家和我一起调试、修改并通过:先执行PROCEDURE a编辑源程序实现功能:在屏幕上显示:Hello worldMy name is DJX文件名:error.asm行号: 源程序代码:1 data segment2 out1 db 'Hello world'3 ax db 'My name is DJX'4 data ens56 code segment7 assume cs:code;ds:data8 lea dx,out19 mov ah,210 int 21h1112 mov dl,0ah13 mov ah,214 int 21h15 mov dl,0dh16 moo ah,217 int 21h1819 lea dx,ax20 mov ah,21 int 21h22 code ends在编辑完执行PROCEDURE b用masm进行编译:masm error回车后显示如下: Microsoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.Object filename [error.OBJ]:Source listing [NUL.LST]:Cross-reference [NUL.CRF]:End of file encountered on input fileerror.ASM(23): warning A4085: End of file, no END directiveOpen segments: DATAerror.ASM(3): warning A4016: Reserved word used as symbol: AX error.ASM(4): error A2105: Expected: instruction or directive error.ASM(16): error A2105: Expected: instruction or directive error.ASM(19): error A2049: Illegal use of registerEnd of file encountered on input fileerror.ASM(23): warning A4085: End of file, no END directive51566 + 406450 Bytes symbol space free2 Warning Errors4 Severe Errors说明这个程序有错误,并在第3,4,16,19,23行有错,我们再执行PROCEDURE c去逐一检查第三行:3 ax db 'My name is DJX'它的错误在于AX不能作为变量名,更正:3 out2 db 'My name is DJX'注意刚才我们定义AX为变量时在后面的程序中用过'变量AX'在第19行19 lea dx,ax在出错报告中也报第19行错,因为不能将AX的有效地址赋给DX,更正:19 lea dx,out2这样一下就解决了两个错误第四行:4 data ens这行为一个段的结束,但语句漏打了字母,更正:4 data ends第十六行:16 moo ah,2这行也是语句打错,更正:16 mov ah,2第二十三行:出错信息:error.ASM(23): warning A4085: End of file, no END directive 说明本程序没有结束伪操作,更正:加入:在第七、八行加入地址标志: start:原23 end start执行PROCEDURE a将源程序修改如下:data segmentout1 db 'Hello world'out2 db 'My name is DJX'data ends[NextPage]code segmentassume cs:code;ds:datastart:lea dx,out1mov ah,2int 21hmov dl,0ahmov ah,2int 21hmov dl,0dhmov ah,2int 21hlea dx,out2mov ah,9int 21hcode endsend start再次进行PROCEDURE b进行编译,屏幕显示:Microsoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.Object filename [error.OBJ]:Source listing [NUL.LST]:Cross-reference [NUL.CRF]:51524 + 406492 Bytes symbol space free0 Warning Errors0 Severe Errors本程序在语句上已无错误。