实验一-8086汇编语言上机调试及基本操作.
- 格式:doc
- 大小:331.50 KB
- 文档页数:12
汇编语⾔上机操作及程序调试的⽅法汇编语⾔上机操作及程序调试的⽅法第⼀节在IBM-PC机上运⾏汇编源程序所必备的软件为了在IBM-PC机上运⾏汇编源程序,机器上必须有DOS操作系统环境,DOS系统盘上应有下列⽂件:EDIT ⽂件编辑程序MASM 宏汇编程序LINK 链接程序DEBUG 调试程序第⼆节在IBM-PC机上运⾏汇编源程序的步骤当⽤户编制好汇编语⾔源程序之后,要在机器上运⾏,必须经过以下⼏个步骤:1.⽤EDIT命令建⽴与修改汇编源程序⽂件(ASM⽂件)源程序就是⽤汇编语⾔的语句编写的程序,必须以ASM为附加⽂件名。
2.⽤MASM命令汇编源⽂件以产⽣相应的⽬标⽂件(OBJ⽂件)3.⽤LINK命令连接⽬标⽂件以产⽣可执⾏⽂件(EXE⽂件)4.调试、运⾏可执⾏⽂件上机过程⽰意图如下:汇编语⾔程序编辑程序汇编程序连接程序调试程序有错吗?运⾏程序Y N图2-1 汇编语⾔程序上机过程流程第三节 DEBUG 程序调⽤及汇编语⾔程序调试⽅法调试程序DEBUG 是DOS ⽀持的⼜⼀种系统软件,主要⽤于汇编语⾔程序的调试。
汇编和连接过程只能查出源程序的语法错误,不能查出功能上的错误和程序不完善的地⽅。
⼀、DEBUG 程序的启动DEBUG 程序有两种启动⽅法。
第⼀种启动⽅法:只要打⼊DEBUG 和回车键,就可以把它装⼊内存。
但是这样启动只把DEBUG 程序本⾝装⼊内存并进⼊等待DEBUG 命令状态,还没有把要调试的程序装⼊内存。
第⼆种启动DEBUG 的程序的⽅法是⼀次相继装⼊DEBUG 程序和要调试的程序。
打⼊的命令格式如下:DEBUG[d :][path]filename[.ext][parml]Lparm2]其中的Filename 是要调试程序的⽂件名,可选项[d:][path]和[.ext]分别是要调试程序的所在盘符、路径和扩展名。
可选项[parml]和[parm2]是DEBUG 程序为要调试程序准备的参数(⼀般不⽤)。
实验一 MASM for Windows 环境下的汇编语言编程环境使用一、实验目的(1)掌握MASM for Windows 环境下的汇编语言编程环境使用;(2) 掌握汇编语言程序设计的基本流程;(3) 掌握8086/8088基本指令的使用方法和功能;(4) 熟练掌握DEBUG的使用方法。
二、实验基本原理运行“调试”命令,在提示符“-”下才能输入命令,在按“回车”后该命令才开始执行;命令是单个字母,命令和参数的大小写可混合输入:(1) DEBUG 使用的数以十六进制来表示;(2) DEBUG 中的命令不区分大小写。
1、R命令格式1:R功能1:显示所有寄存器中的内容。
格式2:R 寄存器名功能2:显示修改寄存器的内容。
2、D命令用 DEBUG 的 D 命令查看内存的内容;功能: 显示内存单元内容。
格式一:D起始位置DEBUG从起始位置显示128个字节的内容。
输入命令D 0C0B:100格式二:D 起始位置结束位置DEBUG 从起始位置一直显示到结束位置格式三: D 起始位置 L 长度DEBUG 从起始位置开始显示指定长度的内容3、E命令用 DEBUG 的 E 命令改写内存的内容。
格式一:E 起始地址字节值表功能:用字节值表中的值替换从“起始地址”开始的内存单元内容。
格式二:E 起始地址功能:采用提问的方式一个一个地改写内存单元的内容4、A命令功能:输入汇编指令。
格式:A 起始地址首先用A命令以汇编语言的形式输入程序,以D命令显示内存,输入的是汇编指令,DEBUG 把它们翻译成机器指令,以机器码写入内存。
5、U命令功能:反汇编,显示机器码所对应的汇编指令。
格式1:U[地址]功能1:从指定地址开始反汇编格式2:U 地址范围功能2:对指定的地址范围进行反汇编。
6、T命令格式:T[=地址]功能:从指定地址起执行一条语句后停下来,显示所有寄存器的内容及标志位的值与下一条将要执行的指令。
格式:T[=地址][x]功能:从指定的地址开始跟踪x 条指令。
1.汇编语言程序设计实验篇1.1.汇编系统软件简介Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug 的模拟器。
它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。
该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。
利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容。
1.1.1创建程序 TEMPLATE程序本章与指令相关的实验都是用COM TEMPLATE类型的程序完成的。
打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。
在“choose code template”对话框中,选择“COM template-simple and tiny executable , pure machine code.”后,单击按钮。
在如所示的编辑界面中,在“;add your code here”部分输入相应的指令,第一条指令默认的偏移地址为100h。
输入全部指令后,单击按钮,保存相应的程序段。
2.EXE TEMPLATE程序本章与DOS功能调用和汇编源程序相关的实验都是用EXE TEMPLATE程序完成的。
打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。
在“choose code template”对话框中,选择“EXE template-advanced executable : relocation, checksum.”后,单击按钮。
在如图所示的编辑界面中,已经可以给出了源程序的框架,包含数据段、堆栈段和代码段的定义以及必要的功能调用等,在“add your data here”和“;add your code here”部分可以分别输入相应的变量定义和指令。
输入全部指令后,单击按钮,保存相应的程序。
实验一汇编语言程序调试基础训练实验目的:1、学习、掌握汇编程序的编辑、编译、链接的方法2、学习常用的DEBUG命令,掌握汇编程序调试方法3、通过调试程序,弄清汇编指令和机器码的关系4、弄清代码段、数据段、堆栈段中的段地址和偏移量的形成实验内容:1、源程序的编辑2、源程序的编译、链接3、汇编程序调试,完成相关数据的记录和分析实验步骤:一、源程序的编辑、编译、链接1、在E盘建立L8086文件夹,将L8086文件全部拷入该目录2、用EDIT或写字板编辑器,将例程BBADD.ASM输入计算机,以BBADD.ASM文件名保存程序3、用MASM.EXE工具将源程序编译成BBADD.OBJ文件4、用LINK.EXE工具将目标文件链接成BBADD.EXE可执行文件二、程序载入和退出1、进入DOS命令提示符界面2、将路径切换至:E>L8086>3、输入DEBUG BBADD.EXE 回车,此时程序载入到DEBUG调试状态4、按Q回车,则退出调试状态返回到操作系统三、程序的调试1、在DEBUG调试状态,输入U回车,显示此时可以看到源程序经编译后,载入到计算机内存中每一条指令所对应的机器码;可以看到指令在代码段中所处的段地址和偏移量等信息。
对照源程序填写以下信息:程序起始地址:[ :]程序结尾地址:[ :]用户数据段地址:[ ]变量R0分得的地址:[ ]变量R2分得的地址:[ ]变量R3分得的地址:[ ]变量R4分得的地址:[ ]以上信息说明:U命令可以显示反汇编信息2、输入R回车,显示以下的信息:这是CPU内所有寄存器信息,注意观察和记录(1)段地址信息:CS=DS=SS=ES=(2)通用寄存器信息:AX= BX= CX= DX= SI= DI= BP=(3)观察IP 、SP指针和标志标志寄存器状态3、输入RAX 回车,接着输入55AA回车,再输入R命令回车,显示以下信息:此时发现AX=55AAH,说明R命令可以显示和修改寄存器的值输入D回车,显示以下信息这是操作系统当前的数据段,观察当前的段地址和你前面记录的用户段地址是不一样的,左边的信息是数据段的段地址和偏移量,右边是每一个单元和相对的值,用D命令可以查看数据段的信息。
实验一上机操作一、实验目的掌握汇编语言程序编辑、汇编、连接、运行以及利用DEBUG调试程序的方法。
二、实验设备PC机及相应的软件。
三、实验内容及步骤1、编辑一个指定的汇编语言源程序,并对其进行汇编、连接和运行。
2、利用DEBUG进行程序调试,掌握常用命令的使用方法,观察运行结果。
3、汇编语言上机操作,见图1-1 汇编语言上机操作流程。
上机操作过程:开始输入cmd 确认后显示:C:\Documents and setting\Administrator>-输入 cd c:\masm 后显示:c:\masm>-c:\masm>EDIT ABC.asmc:\masm>MASM ABC;若有语法错,回EDIT下改该程序c:\masm>LINK ABC;若有错,回EDIT下改程序c:\masm>ABC若运行结果错,回EDIT下改程序或在DEBUG下调试,找原因。
c:\masm>DEBUG ABC.exe手写源程序图 1-1 汇编语言上机操作流程汇编语言程序举例例1:将BL寄存器的内容按二进制形式显示出来。
设:(BL)=01010011B分析:采用2号功能调用,分别输出30 31 30 31 30 30 31 31显示:01010011参考程序:CODE SEGMENTASSUME CS: CODESTART:MOV CX ,8 ;显示字符个数为8MOV BL ,53HNEXT:SHL BL ,1 ;将显示位移至CF中JC ONE ;CF=1?MOV DL ,30H ;CF=0,将0的ASCII放在DL中JMP EXITONE:MOV DL ,31H ;CF=1,将1的ASCII放在DL中EXIT:MOV AH ,2INT 21H ;调用DOS功能显示DEC CX ;循环次数减1JNZ NEXT ;判断是否结束MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START上机操作:c:\masm>EDIT ShowBL.asm ;编辑源程序c:\masm>MASM ShowBL ;汇编成ShowBL.objMicrosoft (R) Macro Assembler Version 5.10Copyright (C) Microsoft Corp 1981,1988. All rights reserved.48912 + 447243 Bytes symbol space free0 Warning Errors0 Severe Errorsc:\masm>LINK ShowBL ;连接成ShowBL.exeMicrosoft (R) Overlay Linker Version 3.61Copyright (C) Microsoft Corp 1983-1987. All rights reserved.LINK : warning L4021: no stack segmentc:\masm>ShowBL ;装载并执行ShowBL.exe 01010011 ;屏幕显示c:\masm>-在DEBUG下查看ShowBL.exe的装入情况:c:\masm>DEBUG ShowBL.exe- R ;查看当前寄存器内容AX=0000 BX=0000 CX=001B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0B51 ES=0B51 SS=0B61 CS=0B61 IP=0000 NV UP EI PL NZ NA PO NC B353 MOV BL,53- U CS:0 ;查看程序0B61:0000 B353 MOV BL,530B61:0002 B90800 MOV CX,00080B61:0005 D0E3 SHL BL,10B61:0007 7205 JB 000E…….0B61:0017 B44C MOV AH,4C0B61:0019 CD21 INT 21…….-G ;执行程序01010011Program terminated normally-例2:将某段中的字符串“Hello!”传送到另一段中。
实验一汇编语言程序设计上机实验的基本过程〇、实验目的和要求:1.熟悉汇编语言程序设计上机实验的计算机软硬件平台。
2.熟悉汇编语言程序设计上机实验的过程。
3.熟练掌握汇编语言源程序的编辑及对其汇编、连接、运行的过程。
4.熟练掌握使用DEBUG调试和运行程序的方法(“工欲善其事,必先利其器!)。
一、实验提要注:以下内容基于初次使用DOS系统和初次上机进行汇编语言程序设计实验以及基本会使用Windows系统的状态,故可根据自己对相关知识得了解和掌握程度,选择性阅读相关内容。
此标注适用于本实验教程的全部内容。
㈠汇编语言程序设计上机实验所需的软硬件平台汇编语言程序设计上机实验需要的计算机软硬件:●装有DOS或Windows操作系统且能正常使用的通用计算机。
●在某个硬盘分区的根目录下创建一个文件夹(类同于DOS系统的目录)。
例如,在计算机的D盘创建一个名为MASM的文件夹(DOS系统对此的标识为“D:\MASM>”,此即所谓的“DOS系统提示符”的表示形式),且在该目录具有以下两个程序:汇编程序MASM.EXE连接程序LINK.EXE而DOS和Windows操作系统本身都提供有以下两个工具程序:文本编辑程序调试程序和两程序文件正常存放在Windows系统的system32文件中(DOS系统中这两文件就存放在于系统文件所在的目录),且默认可以使用于任何工作路径,故在DOS系统状态下,可直接运行EDIT和DEBUG。
其中:可用来编辑和保存汇编语言源程序。
当然,也可使用任何可以编辑纯文本格式的文字编辑软件,诸如Windows系统中自带的记事本等等。
是汇编语言程序设计的得力利器,可以用其完成汇编语言程序设计的几乎整个过程。
本实验教程将详述DEBUG用来调试程序的方法。
此外,据需可选用的软件还有LIB.EXE、CREF.EXE、EXE2BIN.EXE等。
本课程上机实验所用工作平台的建立,将根据所使用的计算机及其所属网络的情况而定。
熟悉emu8086汇编语言调试环境实验报告=======================1. 实验目的-------本次实验的主要目的是熟悉并掌握emu8086汇编语言调试环境的使用,了解汇编语言的基本原理和编程方法,提升对计算机硬件和程序运行的理解。
2. 实验原理-------emu8086是一款用于学习和实验的8086微处理器模拟器。
它提供了一个集成开发环境(IDE),可以在此环境中编写、编译、调试和运行8086汇编语言程序。
3. 实验步骤-------以下是我们进行实验的具体步骤:步骤一:安装emu8086模拟器。
从官方网站下载并安装emu8086模拟器,确保正确安装并能够正常运行。
步骤二:打开模拟器并创建一个新项目。
在模拟器的IDE中,选择“文件”->“新建”->“项目”,然后为项目命名并选择存储位置。
步骤三:编写汇编语言程序。
在项目中创建一个新的汇编文件,使用8086汇编语言编写一个简单的程序。
例如,可以编写一个程序来输出“Hello, World!”到屏幕上。
步骤四:编译程序。
在模拟器的IDE中,选择“编译”->“编译全部”,将汇编文件编译成机器码。
步骤五:运行程序。
在模拟器的IDE中,选择“运行”->“运行”,或者直接按下F9键,来运行程序。
步骤六:调试程序。
如果程序运行出现问题,可以使用emu8086的调试功能来查找和修复错误。
在模拟器的IDE中,选择“调试”->“开始调试”,然后使用调试工具来检查程序的状态、寄存器和内存。
4. 实验结果-------通过本次实验,我们成功地编写、编译、运行并调试了一个简单的8086汇编语言程序。
我们实现了在屏幕上输出“Hello, World!”的目标,并且深入了解了emu8086模拟器的使用方法和8086汇编语言的编程技巧。
5. 实验分析-------通过本次实验,我们深入了解了8086汇编语言的编程方法和计算机硬件的基本原理。
实验一汇编语言上机操作
14计机3班08 何晓畅
一、实验内容:练习常用的DOS命令,熟练掌握DEBUG的主要命令及其应用。
1、DOS命令用法
(1)用2种方法在WINDOWS系统中进入DOS环境;
(2)用DIR命令查看根目录下的文件;
(3)用CD命令进入Program Files子目录,并查看子目录中的文件。
2、DEBUG的命令用法:
(1)进入DEBUG,用D命令查看数据段0100H-0200H单元中的内容;
(2)用U命令查看代码段中0100H开始的程序;
(3)用R命令查看并修改IP寄存器的值为0;
(4)用E命令修改数据段5号、6号单元的内容为12、34;
(5)自我练习其他命令,如T/D/P/F/Q等命令。
二、实验过程
1.
以dosbox进入dos
用终端进入dos
用DIR查看根目录下的文件
用CD命令进入Program Files子目录,并查看子目录中的文件
2.
用dosbox进入debug,用D命令查看数据段中0100H—0200H单元的内容
用U命令查看代码段中0100H开始的程序
用R命令查看并修改IP寄存器的值为0.
用E命令修改数据段5号,6号单元的内容为12、34。
其他命令的练习
Hello world的实现。
实验一、寻址方式与基本指令实验一、实验目的1.熟悉8086寻址方式及基本指令功能,进一步理解和巩固课学习内容。
2.掌握汇编语言程序设计上机过程和汇编语言源程序结构。
3.熟悉Microsoft的DEBUG调试工具的使用方法。
二、实验预习要求1.认真阅读教科书第三章,了解并熟悉汇编语言程序的上机步骤及DEBUG调试工具的使用方法。
2.复习8086操作数寻址方式及基本指令功能(数据传送、算术运算和逻辑运算等)。
3.了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运行环境的问题外),以便在实验时进行验证。
三、实验内容1.读懂下列源程序,使用EDIT生成名为EX11.ASM的源程序,汇编生成EX11.OBJ文件和EX11.LST文件,连接生成EX11.EXE文件;用EDIT打开EX11.LST文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。
1)程序装入后,代码段寄存器CS的内容为H,代码段第一条可执行指令“MOV AX,DATA”对应的机器代码为H,它是一个字节指令,注意观察执行该指令时IP的变化情况,该指令源操作数DATA的寻址方式是,其值为。
2)执行完“MOV DS,DATA”指令后,数据段寄存器DS的内容为H,源程序在数据段中定义的数据库82H、68H和88H被装入的存储单元的物理地址分别为H,H和H。
3)程序中第一条“ADD AL,[BX]”指令对应的机器代码H,它是一个字节指令,注意观察执行该指令时IP的变化情况,该指令中源操作数的寻址方式为,该操作数所在存储单元的逻辑地址(DS):(BX)为,物理地址为H;执行完该指令后(AL)= H,CF= ,OF= ,ZF= ,SF= ,AF= ,PF= ;若两操作数为无符号数,计算结果是否正确?若两操作数为带符号数,计算结果是否正确?若计算结果正确,结果是正数还是负数?4)执行完第二条“ADD AL,[BX]”指令后,(AL)= H,CF= ,OF= ,ZF= ,SF= ,AF= ,PF= ;若两操作数为无符号数,计算结果是否正确?若两操作数为带符号数,计算结果是否正确?5)指令“MOV SUM,AL”中,目的操作数的寻址方式为,该指令执行完后,注意观察(DS):0003H单元中值的变化,该单元的值变为H。
实验一:8086汇编语言上机调试及基本操作(验证性)1、实验目的:(1)掌握常用DEBUG命令: G,D,R,T,U,Q。
(2)掌握工具软件EMU8086。
(3)掌握完整程序设计方法的格式,能正确书写数据段,代码段等。
(4)掌握简单的数值转换算法2、实验说明:计算机中的数值有各种表达方式,这是计算机的基础。
掌握各种数制之间的转换是一种基本功。
3、程序框图:对于0-999(即000H-3E7H)范围内的二进制数4、参考程序:; 将AX中的三位数拆为三个BCD码, 并存入Result 开始的三个单元DATA SEGMENT; 数据段RESULT_1 DB 1RESULT_2 DB 1RESULT_3 DB 1DATA ENDSSTACK SEGMENT STACK ; 堆栈段STA DB 64 DUP(0)STACK_TOP DB 0STACK ENDSCODE SEGMENT; 代码段ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACKSTART:MOV AX, DATAMOV DS, AX ; 设置数据段MOV AX, STACKMOV SS, AX ; 设置堆栈段LEA SP, STACK_TOP ; 设置栈顶指针MOV AX, 2afHMOV CL, 100DIV CLMOV RESULT_1, AL ; 除以100, 得百位数MOV AL, AHMOV AH, 0MOV CL, 10DIV CLMOV RESULT_2, AL ; 余数除以10, 得十位数MOV RESULT_3, AH ; 余数为个位数MOV AX,4C00H ; 返回DOSINT 21H ;CODE ENDSEND START ; 最后一行要按回车键5、实验及报告要求:1)用合适的编辑软件编辑以上源文件并存入合适目录;要求补充注释未注释的伪指令和指令;2)分别在DOS和Windows下编译、连接生成可执行文件,比较两个环境下生成的机器码的长度和内容;试指出第2、5、7、10、14条指令的IP和机器码。
3)分别在debug和emu8086下调试该可执行文件,给出程序运行时的各段地址(CS=?,DS=?SS=?ES=?)举例说明debug的t,d,g,u等命令操作方法并对寄存器的变化作出解释;试改变被转换的三位数,并解释转换过程中标志寄存器中各标志位的结果;如何观察转换结果的变化?4)写出完整的实验报告,特别是“实验结果”与“实验总结体会”部分,是评分的主要依据。
5)实验总结中要求结合实验中的经验、教训或体会对汇编语言格式、调试方法和微机原理学习方法作出总结。
6、思考题:1)用单步执行命令t运行程序,运行到mov ax, 4c00h,int 21h指令后,cs和IP寄存器内容前后有何变化?产生变化的原因是什么?2)试写出将BCD转换成二进制码的汇编程序。
【实验辅导资料】1 汇编语言程序的上机过程在计算机上运行汇编语言程序的步骤是:1.用编辑程序建立ASM源文件;2.用MASM程序把ASM文件转汇编成OBJ文件;3.用LINK程序把OBJ文件转连接成EXE文件;4.用DOS命令直接键入文件名就可执行该程序。
图1 汇编语言程序的建立及汇编过程1.检查源程序;2.测出源程序中的语法错误,并给出出错信息;3.产生目标文件(.OBJ),并可给出列表文件(同时列出汇编语言源程序和机器语言目标程序的文件,称之为.LST文件)和交叉索引文件(列出程序中使用的符号、变量和标号以及引用情况,称之为.CRF文件)。
4.展开宏指令。
1.1建立汇编语言的工作环境为运行汇编语言程序至少要在磁盘上提供以下文件:1.编辑程序,如EDIT.EXE2.汇编程序,如MASM.EXE3.连接程序,如LINK.EXE4.调试程序,如1.2 汇编语言源程序上机过程1.建立汇编源程序ASM文件2.汇编产生OBJ文件3. 链接产生EXE文件4. 程序的调试和执行5. 生成EXE或COM文件2 汇编语言程序格式存储器的物理地址由段基址和偏移地址组合而成,任何一个逻辑段,无论是代码段,数据段,堆栈段,附加段都必须进行段定义,以便连接程序把不同段和模块连接成一个可执行程序。
此外,还必须明确段和段寄存器之间的关系,这可使用段分配语句来完成。
1、段定义语句4个逻辑段不一定全部要定义,通常代码段和数据段是必须的,附加段可以省略。
但当代码段中使用了串指令,必须设置附加段作目标串基址用,附加段也可用来存放数据,增大数据段容量。
一般程序结构:(1)代码段:存放程序执行的指令(2)数据段:存放程序所需的数据(3)堆栈段:存放程序执行的临时信息数据段定义格式:DATA SEGMENT ; 数据段RESULT_1 DB 1RESULT_2 DB 1RESULT_3 DB 1DATA ENDS附加段的定义:EXTRA SEGMENTDEST_BUFFER DB 50 DUP (‘?’)EXTRA ENDS堆栈段的定义:STACK SEGMENT STACK ; 堆栈段STA DB 64 DUP(0)STACK_TOP DB 0STACK ENDS2、段分配语句在8086/8088系统中存储器采用分段结构,各段容量≦64K字节,用户可以设置多个逻辑段,但只允许4个逻辑段同时有效,段分配语句用来完成将逻辑段分别定义成代码段、数据段、堆栈段和附加段。
由于ASSUME伪指令只指定某个段分配给哪个段寄存器,并将代码段的段基址自动装入CS寄存器中,而不能自动把其它段基址装入相应的段寄存器中,所以在代码段的开始要有一段初始化程序完成这一工作。
对堆栈段来说除了将段基址送入SS寄存器外,还要将栈顶偏移地址置入堆栈指示器SP中。
ASSUME CS:段名, DS:段名, ES:段名, SS:段名(一)DOS下的汇编调试:步骤1 汇编调试所需的文件已拷贝在D:\MASM子目录下,它们是:(1)用文本编辑软件UltraEdit 、WINDOWS 中的记事本或其它的文本编辑器输入汇编语言程序, 注意在最后一行的 END输入完后要按一次回车键,保存的源文件的扩展各一定要是 ASM如: EXAMPLE.ASM(2)MASM.EXE 宏汇编工具,把 ASM源文件生成OBJ目标文件,(3)LINK.EXE 链接工具,把OBJ文件生成EXE文件(4) 调试工具,可对程序进行调试,跟踪2、进入 Windows XP 的命令行方式(在运行程序栏中输入command/cmd 并按回车键)或Windows ME 和 Windows 98 的 MS-DOS 方式 ( 在开始→程序→附件 MS-DOS 方式 )。
3、在 DOS 提示符下进行汇编、连接、动态调试等操作。
例如: 对源文件 EXAMPLE.ASM 进行的操作D:\MASM\MASM EXAMPLE; 汇编源程序操作D:\MASM\LINK EXAMPLE; 连接并生成扩展名为 .EXE 的可执行文件D:\MASM\DEBUG EXAMPLE.EXE 对可执行文件进行调试3、要求掌握的调试命令(在 DEBUG 中使用的命令)a: U - 反汇编命令用法: -U 代码段地址:起始偏移地址如:-U CS:100b: D - 显示内存中的数据命令用法: -D 数据段地址:存放数据的偏移地址如:-D DS:00 20c: T - 单步执行程序命令用法: -T 要执行的指令条数如:-T 3d: G - 连续执行程序命令用法: -G=代码段地址:指令的起始偏移地址指令的结束偏移地址如: -G=CS:100 106注意: 结束地址一定要是操作码的所在地址e: R - 查看和修改寄存器数据命令用法: -R 回车如:-R AXf: F - 对内存单元填充数据命令用法: -F 数据段地址:偏移首地址偏移未地址填入的数据如: -F DS:100 120 ffg: Q - 退出”DEBUG“应用程序命令4、应用例子及操作步骤将 AX 中的十六进制数拆为三个 BCD 码, 并存入 Result_1, Result_2, Result_3的三个单元中。
DATA SEGMENT ; 数据段RESULT_1 DB 1RESULT_2 DB 1RESULT_3 DB 1DATA ENDSSTACK SEGMENT STACK ; 堆栈段STA DB 64 DUP(0)STACK_TOP DB 0STACK ENDSCODE SEGMENT ; 代码段ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACKSTART:; 程序开头必须要有的五条指令MOV AX, DATAMOV DS, AX ; 设置数据段MOV AX, STACKMOV SS, AX ; 设置堆栈段LEA SP, STACK_TOP ; 设置栈顶指针;---------------------------------------; 程序的中间部分MOV AX, 587MOV CL, 100DIV CLMOV RESULT_1, AL ; 除以 100, 得百位数MOV AL, AHMOV AH, 0MOV CL, 10DIV CLMOV RESULT_2, AL ; 余数除以 10, 得十位数MOV RESULT_3, AH ; 余数为个位数;------------------------------------------ ; 程序结束必须要有的两条指令MOV AX, 4C00H ;INT 21H ;;------------------------------------------ CODE ENDSEND START ; 最后一行要按回车键⑴、对源程序进行汇编产生OBJ文件--编译过程D:\MASM>MASM EXAMPLE;Microsoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.51514 + 408822 Bytes symbol space free0 Warning Errors0 Severe Errors⑵、对目标文件进行连接产生EXE文件--连接过程D:\MASM>LINK EXAMPLE;Microsoft (R) 8086 Object Linker Version 3.05Copyright (C) Microsoft Corp 1983, 1984, 1985. All rights reserved.⑶、对可执行文件进行调试 --调试过程D:\MASM>DEBUG EXAMPLE.EXE-U CS:0000 用反汇编命令“U 代码段地址:起始偏移地址”显示出程序的标识符-U 0 2C160D:0000 B80716 MOV AX,1607 ; 程序的起始地址是 160DH:0000H160D:0003 8ED8 MOV DS,AX160D:0005 B80816 MOV AX,1608160D:0008 8ED0 MOV SS,AX160D:000A 8D264100 LEA SP,[0041]160D:000E B84B02 MOV AX,024B160D:0011 B164 MOV CL,64160D:0013 F6F1 DIV CL160D:0015 A20000 MOV [0000],AL160D:0018 8AC4 MOV AL,AH160D:001A B400 MOV AH,00160D:001C B10A MOV CL,0A160D:001E F6F1 DIV CL160D:0020 A20100 MOV [0001],AL160D:0023 88260200 MOV [0002],AH160D:0027 B8004C MOV AX,4C00 ; 程序的结束地址是 160DH:0027H160D:002A CD21 INT 21160D:002C 9E SAHF-执行程序前观察内存中的数据-D DS:0000 ; 显示内存中的数据命令,命令“D 数据段地址:存放数据的偏移地址”显示内存中的数据-D DS:0 3015F7:0000 CD 20 00 A0 00 9A F0 FE-1D F0 3C 03 5D 0F 77 03 . ........<.].w. 15F7:0010 5D 0F 04 03 5D 0F 4C 0F-01 01 01 00 02 FF FF FF ]...].L......... 15F7:0020 FF FF FF FF FF FF FF FF-FF FF FF FF E6 15 4C 01 ..............L. --G=CS:0000 0027 ;连续执行程序命令代码段地址:指令的起始偏移地址指令的结束偏移地址AX=0708 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000DS=1607 ES=15F7 SS=1608 CS=160D IP=0027 NV UP EI PL NZ NA PO NC160D:0027 B8004C MOV AX,4C00-执行程序后观察内存中的数据(结果)-D DS:0000 ; 用显示内存中的数据命令命令“D 数据段地址:存放数据的偏移地址”显示内存中的数据-D DS:00 ; 观察内存中的数据1607:0000 05 08 07 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 1607:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 1607:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ --R IP 修改IP寄存器中的数据IP 0027 显示修改前的数据:00 输入修改的数据--T ;单步执行程序命令(执行一条指令)AX=1607 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000DS=1607 ES=15F7 SS=1608 CS=160D IP=0003 NV UP EI PL NZ NA PO NC160D:0003 8ED8 MOV DS,AX--T3 ;执行3条指令AX=1607 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000DS=1607 ES=15F7 SS=1608 CS=160D IP=0005 NV UP EI PL NZ NA PO NC160D:0005 B80816 MOV AX,1608AX=1608 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000DS=1607 ES=15F7 SS=1608 CS=160D IP=0008 NV UP EI PL NZ NA PO NC160D:0008 8ED0 MOV SS,AXAX=1608 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000DS=1607 ES=15F7 SS=1608 CS=160D IP=000E NV UP EI PL NZ NA PO NC160D:000E B84B02 MOV AX,024B--R ; 查看寄存器数据命令AX=0302 BX=0000 CX=000A DX=0000 SP=0014 BP=0000 SI=0000 DI=0000DS=1607 ES=1607 SS=12A0 CS=129D IP=0028 NV UP EI PL NZ NA PO NC129D:0028 B8004C MOV AX,4C00-R AX ;查看和修改寄存器数据命令AX 0302:FFFF-R ; 查看寄存器数据命令AX=FFFF BX=0000 CX=000A DX=0000 SP=0014 BP=0000 SI=0000 DI=0000DS=1607 ES=1607 SS=12A0 CS=129D IP=0028 NV UP EI PL NZ NA PO NC129D:0028 B8004C MOV AX,4C00--F 数据段地址:偏移首地址偏移未地址填入的数据-F DS:0000 0030 DF ; 对内存单元填充数据-D DS:00 ; 观察内存中的数据1607:0000 DF DF DF DF DF DF DF DF-DF DF DF DF DF DF DF DF ................ 1607:0010 DF DF DF DF DF DF DF DF-DF DF DF DF DF DF DF DF ................ 1607:0020 DF DF DF DF DF DF DF DF-DF DF DF DF DF DF DF DF ................1607:0030 DF A2 01 00 88 26 02 00-B8 00 4C CD 21 0B A1 D6 .....&....L.!... 1607:0040 5D 48 50 E8 85 0C 83 C4-02 C6 14 00 00 00 28 00 ]HP...........(. --Q ; 退出“DEBUG”应用程序命令D:\MASM_8088\MASM>附标志位注解D7--OF(OV/NV):Overflow 溢出标志位D6-- DF(DN/UP):Direction Flag(Down/UP) 方向标志位D5--IF(EI/DI):Enable Interupt/Disable ~ 允许中断标志位D4--SF(NG/PL):Sign Flag (Negative/Positive) 符号标志位D3--ZF(ZR/NZ):Zero Flag 零标志位D2--AF(AC/NA):Auxiliary 辅助进位标志位D1--PF(PE/PO):Parity of Even/~ Odd 奇偶标志位D0--CF(CY/NC):Carry 进位标志位溢出OV(溢出)NV(未溢出)零位ZF(等于零)NZ(不等于零)方向DN(减少)UP(增加)辅助进位AC(进位)NA(无进位)中断EI(许可)DI(禁止)奇偶标志PE(偶)PO(奇)符号NG(负)PL(正)进位 CY(进位) NC(无进位)(二)Windows下的汇编调试1.使用 Emu8086 软仿真软件来调试 8086汇编语言程序(1)、点击Open 打开文件,装入Example.asm源程序;⑹、选择另存为 格式;⑺、选择run 进入程序的软仿真;⑻、点击View选择Variables 观察数据段的变量。