汇编语言编程步骤调试方法
- 格式:doc
- 大小:2.67 MB
- 文档页数:6
gdb调试汇编语言
GDB是一个功能强大的调试器,可以用来调试汇编语言程序。
在使用GDB调试汇编语言程序时,你需要首先确保程序已经被编译成可执行文件,并且包含了调试信息。
接下来,你可以通过以下步骤使用GDB来调试汇编语言程序:
1. 启动GDB,在命令行中输入`gdb`命令,然后在GDB提示符下输入可执行文件的名称。
2. 设置断点,你可以使用`break`命令在程序中设置断点,以便在特定的位置停止程序的执行。
例如,你可以输入`break main`来在程序的主函数处设置断点。
3. 运行程序,输入`run`命令来运行程序,程序会在设置的断点处停止执行。
4. 单步执行,使用`stepi`命令来逐条执行汇编指令,这样你可以逐步跟踪程序的执行过程。
5. 查看寄存器和内存,使用`info registers`命令可以查看寄
存器的值,而使用`x`命令可以查看内存中特定地址的内容。
6. 检查堆栈,使用`backtrace`命令可以查看当前的函数调用堆栈,而使用`frame`命令可以切换到不同的堆栈帧。
7. 观察变量,使用`print`命令可以查看特定变量的值,这对于检查程序状态非常有用。
8. 继续执行,当你想让程序继续执行时,可以使用`continue`命令来让程序一直执行到下一个断点或者程序结束。
以上是使用GDB调试汇编语言程序的基本步骤,当然,在实际调试过程中可能会有更复杂的情况需要处理,但是掌握了这些基本操作之后,你就可以更有效地使用GDB来调试汇编语言程序了。
希望这些信息对你有所帮助。
汇编语言的编程步骤与调试方法汇编语言是一种底层的程序设计语言,直接操作计算机硬件。
在编写汇编语言程序时,需要经过一系列的编程步骤和调试方法,以确保程序的正确性和可靠性。
下面是关于汇编语言的编程步骤和调试方法的一些详细介绍。
一、编程步骤:1.定义程序目标:明确程序的功能、输入和输出。
2.设计算法和逻辑:将目标转化为汇编语言指令,设计算法和逻辑流程。
3.选择寄存器和指令:根据算法和逻辑需求,选择合适的寄存器和指令。
4.编写指令:根据算法和逻辑需求,使用正确的指令来编写汇编语言程序。
5.汇编编译:使用汇编编译器将汇编代码翻译成机器代码。
6.汇编连接:使用链接程序将机器代码和其他必要的文件(如库文件)连接成可执行文件。
7.调试和测试:进行调试和测试,确保程序的正确性和可靠性。
8.优化和改进:根据测试结果,对程序进行优化和改进。
二、调试方法:1.插入调试指令:在程序中插入一些特定的调试指令,可以输出一些关键的变量或标志位,以便观察程序的执行路径和结果。
2.单步执行:逐条执行程序代码,并观察每条指令的执行结果和影响,以及寄存器和存储器的变化情况。
3.观察寄存器和存储器:利用调试器观察程序执行过程中的寄存器和存储器的变化情况,以确定代码逻辑是否正确。
4.打印和日志输出:通过在程序中插入打印和日志输出的语句,可以观察关键变量和代码的执行情况,以帮助调试。
5.内存和寄存器状态检查:检查程序执行过程中的内存和寄存器状态,特别是对一些关键变量和标志位进行监视,以便发现问题所在。
6.脱机调试:将程序转储至仿真器或虚拟机,并在其中进行无风险的调试,以排查错误。
三、汇编程序调试常见问题及解决方法:1.程序崩溃或死循环:检查程序中循环和分支语句的逻辑判断条件是否正确,以及循环内的寄存器和内存操作是否正确。
2.内存访问错误:查看程序访问的内存地址和存储器的范围是否正确,并检查程序中的指针操作是否正确。
3.寄存器使用错误:检查程序中使用的寄存器是否正确选择和使用,尤其是在多个函数调用的情况下,需要注意寄存器的保存和恢复。
实验一8086汇编语言的编程实践【实验目的】1.掌握8086汇编语言编程以及调试的过程。
2.学会使用masm.exe、debug.exe、td.exe等软件。
【实验内容】1.通过示范源程序熟悉从如何建立源文件到进行调试【实验步骤】1.确定源程序的存放目录建议源程序存放的目录名为ASM(或MASM),并放在C盘或D盘的根目录下。
如果没有创建过此目录,请用如下方法创建:通过Windows的资源管理器找到C盘的根目录,在C盘的根目录窗口中点击右键,在弹出的菜单中选择“新建”→“文件夹”,并把新建的文件夹命名为ASM。
请把MASM.EXE、LINK.EXE、DENUG.EXE和TD.EXE都拷贝到此目录中。
2.建立ASM源程序建立ASM源程序可以使用EDIT或NOTEPAD(记事本)文本编辑器。
下面的例子说明了用EDIT文本编辑器来建立ASM源程序的步骤(假定要建立的源程序名为HELLO.ASM),用NOTEPAD(记事本)建立ASM源程序的步骤与此类似。
在Windows中点击桌面左下角的“开始”按钮→选择“运行”→在弹出的窗口中输入“ C:\ASM\HELLO.ASM”,屏幕上出现EDIT的编辑窗口。
窗口标题行显示了EDIT程序的完整路径名。
紧接着标题行下面的是菜单行,窗口最下面一行是提示行。
菜单可以用Alt键激活,然后用方向键选择菜单项,也可以直接用Alt-F 打开File文件菜单,用Alt-E打开Edit编辑菜单,等等。
如果键入EDIT命令时已带上了源程序文件名(C:\ASM\HELLO.ASM),在编辑窗口上部就会显示该文件名。
如果在键入EDIT命令时未给出源程序文件名,则编辑窗口上会显示“UNTITLED1”,表示文件还没有名字,在这种情况下保存源程序文件时,EDIT会提示输入要保存的源程序的文件名。
编辑窗口用于输入源程序。
EDIT是一个全屏幕编辑程序,故可以使用方向键把光标定位到编辑窗口中的任何一个位置上。
汇编语言得编程步骤与调试方法一、汇编源程序得建立1、使用工具sm文件;(2)ASM,MASM汇编程序,对源程序进行汇编,生成、obj文件-目标文件,以及调试用、LST-列表文件与、CRF-交叉引用表;(3)Link连接程序,对使用得目标文件与库文件进行连接,生成、exe文件,同时调试用、map-地址映像文件;如果源程序无语法错误,上述三步将生成可运行得、exe文件,如果运行结果无误,则完成对汇编程序得编程,如果运行后结果存在错误,需要进行调试。
(4)Debug调试程序,对、exe文件进行调试,修改,直到程序正确。
图3目标程序生成步骤图2、编程过程(1)用文本编辑软件,编写扩展名为、asm得源文程序文件。
(2)用汇编程序对编好得源文件进行汇编。
命令行:masm[*、asm]↙如果源文件中存在语法错误,则汇编程序将指出错误类型及位置,可根据这些信息重新编辑源文件,直至无语法错误,汇编后,将生成指定名称得目标文件、obj。
使用MASM50汇编程序进行汇编,输入命令行masm或者masm *、asm 后,根据提示,输入文件名,在汇编没有错误得情况下,如屏幕所示:汇编程序可生成三个文件,*、obj,*、lst与*、crf。
*、obj-目标文件,用于连接生成可执行文件;*、lst-列表文件(可选),汇编语言汇编得机器语言与汇编语言对照表,可用于调试;*、crf-交叉引用文件(可选),给出了用户定义得所有符号与对每个符号定义、引用得行号。
(3)目标文件得连接命令行:link[*、obj][*、obj] [*、lib] ↙连接程序,将多个目标程序及库文件,连接生成可执行得*、exe文件,同时可选择生成*、map文件。
*、map-地址映像文件,给出内存地址分配得有关信息。
下图所示屏幕,为Link连接两个目标文件,没有错误得情况下,生成*、e xe文件。
(4)执行程序执行*、exe文件,观察程序运行结果,如果存在错误,需要进行调试。
8086汇编语言上机调试步骤1、在网络课堂-微机原理与接口技术-实验指导-汇编工具下载,下载汇编工具并解压,文件夹名为“masm”。
2、用鼠标点击“masm”文件夹。
进入该文件夹后将看到 MASM.EXE,LINK.EXE , DEBUG.EXE3个文件进行复制操作。
3、用鼠标点击“我的电脑”再点击D: 盘,并在 D: 盘上建立新的“ MASM”文件夹,最后将上面的3个文件全部复制到该文件夹中。
(注意实验所有的文件都放在该文件夹内4、用文本编辑软件UltraEdit-32、WINDOWS 中的记事本或其它的文本编辑器输入汇编语言程序, 注意在最后一行的 END输入完后要按一次回车键,保存的源文件的扩展各一定要是“.asm”如: example.asm 。
(建议用记事本输入源程序,另存时,保持类型选择“所有文件”如图所示5、进入MS-DOS方式 ( 从开始>程序>附件>命令提示符或者(从程序 > 运行输入“cmd”回车,进入MS-DOS环境。
6、进入D:>MASM文件夹7、显示MASM文件夹内所有文件“dir”命令8、在 DOS 提示符下进行汇编、连接、动态调试等操作。
例如: 对源文件 example.asm 进行的操作D:\MASM\MASM example.asm;汇编源程序操作D:\MASM\LINK example.dbj;连接并生成扩展名为 .EXE 的可执行文件D:\MASM\DEBUG example.exe;对可执行文件进行调试9、要求掌握的调试命令(在 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“应用程序命令10、应用例子;二进制到BCD转换(a.asm;将给定的一个二进制数,转换成二十进制(BCD码DATA SEGMENT RESULT DB 3 DUP(?DATA ENDS CODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV AX, 123MOV CL, 100DIV CLMOV RESULT, AL ; 除以 100, 得百位数MOV AL, AHMOV AH, 0MOV CL, 10DIV CLMOV RESULT+1, AL ; 余数除以 10, 得十位数MOV RESULT+2, AH ; 余数为个位数JMP $ CODE ENDSEND START汇编源程序操作:D:\MASM>MASM a.asm ;D:\MASM>LINK a.OBJ;对可执行文件进行调试的操作:D:\MASM>DEBUG A.EXE--U CS:0000 ;用反汇编命令”U 代码段地址:起始偏移地址“显示出程序的表示符执行程序前观察内存中的数据-D DS:0000 ;用显示内存中的数据命令命令“D 数据段地址:存放数据的偏移地址”显示内存中的数据-G=CS:0000 001E ;连续执行程序命令代码段地址:指令的起始偏移地址指令的结束偏移地址执行程序后观察内存中的数据(结果-D DS:0000 ; 用显示内存中的数据命令命令“D 数据段地址:存放数据的偏移地址”显示内存中的数据-R IP 修改IP寄存器中的数据IP 001E 显示修改前的数据:00 输入修改的数据-T ;单步执行程序命令(执行一条指令-T3 ;执行3条指令-R -R AX AX 007B :1111 -R ;查看寄存器数据命令;查看和修改寄存器数据命令;查看寄存器数据命令 -D DS:0000 ;用显示内存中的数据命令命令“D 数据段地址:存放数据的偏移地址” 显示内存中的数据 -F 数据段地址:偏移首地址偏移未地址填入的数据 -F DS:0000 0030 DF ;对内存单元填充数据 -D DS:00 ;观察内存中的数据-Q ;退出”DEBUG“ 应用程序命令。
实验一汇编语言程序上机过程以及调试(1)一、预习内容1.工具软件MASM、LINK的使用2.常用DEBUG命令的使用: G,D,R,T,U,Q3.完整程序设计方法的格式。
二、目的要求1.掌握常用工具软件MASM、LINK的使用2.掌握常用DEBUG命令: G,D,R,T,U,Q 能灵活使用这些命令调试程序3.掌握完整程序设计方法的格式,能正确书写数据段,代码段等。
三、实验内容比较两个字符串string1和string2所含的字符是否相同,如果相同则显示’Match'否则显示’No match’.请读程序,并将程序补充完整。
DSEG SEGMENTstring1 db 'Move the cursor backward.'string2 db 'Move the cursor backward.'mess1 db 'Match.',13,10,'$'mess2 db 'No match.',13,10,'$'DSEG ENDSCSEG SEGMENTassume cs:CSEG, ds:DSEG, es:DSEG,MAIN PROC FARstart: mov ax, dsegmov ds, axmov es, axlea si ,string1①cld②repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx,mess1disp: mov ah,09hint 21hmov ax, 4c00hint 21hMAIN ENDPCSEG ENDSend start实验步骤:1)用文字编辑工具(记事本或EDIT)将源程序输入完整后保存在d:\masm下,注意保存时将文件扩展名改为.asm(如test1.asm)。
2)屏幕左下角”开始”–“运行”输入cmd ,进入dos命令操作,先用d: 和cd mas m 命令改变路经,接着用”masm + 文件名” (如masm test1,这里文件名可以不带扩展名)对源文件进行汇编,产生.obj文件和.LST文件。
arm汇编语言编程实验报告实验二ARM汇编语言编程实验.doc班级计算机科学与技术(嵌入式)学号课程名称ARM体系结构姓名实验成绩日期指导教师冯灵霞实验报告院系信息工程学院一、实验目的1、掌握ADT IDEARM开发环境中基本的工程设置以及程序编译方法。
2、掌握ADT IDEARM开发环境中基本的程序调试方法。
3、掌握基本的ARM汇编语言编程方法。
二、实验内容用汇编语言编写一个程序实现如下目的:从源地址拷贝num个字(num*4个字节)的数据到目的地址dst中。
三、预备知识1、ARM汇编语言的基础知识。
2、程序调试的基础知识和方法。
四、实验设备1、硬件:JXARM9-2440教学实验箱、PC机。
2、软件:PC机操作系统Windows 98(2000、XP)+ADT IDE开发环境。
五、基础知识ADT IDE集成了GNU汇编器arm-elf-as、编译器arm-elf-gcc和链接器arm-elf-ld。
在ADT IDE中编写的程序必须符合GNU的语法规则。
下面介绍一些基本的GNU汇编知识以及本实验用到的ARM 汇编指令。
1、GUN汇编语言语法及规则1)_start_start为程序默认入口点,代码段默认起始地址为0x800,如果需要修改可以在链接脚本文件中指定。
2)标号语法:symbol:symbol为定义的符号。
说明:上述代码定义一个标号,它表示程序中当前的指令或数据地址。
如果在程序中出现两个相同的标号,汇编器将会产生一个警告,且只有第一个标号有效。
2、GNU汇编语言伪操作1).equ伪操作语法:.equ symbol,exprexpr为基于寄存器的地址值、程序中的标号、32位的地址常量或位的常量。
symbol为.equ伪操作为expr定义的字符名称。
说明:该操作符为数字常量、基于寄存器的值和程序中的标号定义一个字符名称,相当于C语言中的宏定义。
示例:.equ USERMODE,0x102).global伪操作符语法:.global symbolsymbol为声明的符号的名称。
AVR Studio使用入门本文档内容根据的教程和ATMEL公司的官方文档整理。
在这里,对ourdev表示感谢。
下面介绍如何使用AVR Studio实现汇编语言和C语言代码的编译和调试。
1. AVR Studio的准备和安装AVR Studio V4.12版本内嵌了WinAVR(AVRGCC)接口,因此可以在AVRStudio中直接创建AVRGCC工程,进而用AVR Studio调试C程序。
建议使用AVR JTAGICE的用户使用这种方法。
要安装的开发工具存放在光盘的/开发工具/目录内。
在安装AVR Studio的同时,如果需要使用C语言编程,需要安装GCC编译工具(也就是WINAVR)。
AVR Studio 4.12 的安装与删除:全部使用缺省安装即可,安装成功后重启电脑。
如果需要删除,进入控制面板,使用“添加/删除程序”即可。
WINAVR 的安装与删除:全部使用缺省安装即可。
如果需要删除,进入控制面板,使用“添加/删除程序”。
但WinAVR PN的配置参数,仍会保存在:C:\Documents and Settings\[UserName]\Application Data\Echo Software\PN2 中。
如果想将这些参数也删除,此上述目录删除即可。
2. 用AVR Studio编译汇编代码和C代码(1)创建一个新工程如果需要使用C语言编程,需要同时安装WinAVR(GCC编译器)。
使用AVR Studio 创建工程的步骤如下:第一步:新建工程。
打开AVR Studio,点击菜单Project->New Project后,会提示图1的对话框。
如果用汇编语言编程,则在Project Type中选择Atmel AVR Assembler;如果使用C语言编程,则选择AVR GCC。
在Project Name中填写自己要建立的工程名字,在Location中选择项目所在的目录,如果不清楚,请点击Help阅读帮助文件。
visual studio 汇编语法检查Visual Studio 是一种集成开发环境(IDE),支持多种编程语言,包括汇编语言。
在Visual Studio 中编写汇编代码时,可以通过一些内置的功能进行语法检查,以提高代码的质量和可维护性。
以下是关于Visual Studio 汇编语法检查的详细解释:Visual Studio 汇编语法检查的方法:1. 智能感知和自动完成Visual Studio 提供了智能感知和自动完成功能,能够在您键入代码的同时提供相关的建议和提示。
这包括寄存器、指令、标签等。
这样可以避免一些常见的语法错误,提高编写汇编代码的效率。
2. 语法高亮Visual Studio 在编辑器中通过语法高亮显示不同的汇编元素,如指令、寄存器、标签等。
语法高亮可以帮助您更清晰地看到代码结构,减少可能的语法错误。
3. 错误和警告提示Visual Studio 在编译汇编代码时会检测并显示可能的错误和警告。
错误和警告消息将显示在“错误列表”窗口中,以帮助您定位和修复代码中的问题。
通过双击错误列表中的错误,可以直接跳转到代码中出现错误的位置。
4. 集成调试器Visual Studio 提供了强大的集成调试器,可以用于调试汇编代码。
调试器不仅能够帮助您找出代码中的逻辑错误,还可以检查寄存器、内存和变量的值,帮助您理解程序执行过程中的状态。
通过调试器,您可以逐步执行代码并观察其行为,从而更容易发现语法错误。
5. 插件和扩展Visual Studio 支持许多插件和扩展,其中一些可能提供额外的语法检查功能。
这些插件和扩展可能会包括静态代码分析、代码规范检查等功能,有助于提高代码质量。
6. 编译器选项Visual Studio 具有丰富的编译器选项,您可以在项目设置中进行配置。
通过调整这些选项,您可以控制编译器的行为,包括严格的语法检查、警告级别、生成调试信息等。
7. 代码分析工具Visual Studio 中集成了一些代码分析工具,可以帮助您发现潜在的问题、改进代码质量。
汇编语言的编程步骤与调试方法一、汇编源程序的建立1.使用工具(1)EDIT,记事本等文本编辑软件,编辑源程序,保存为.asm文件;(2)ASM,MASM汇编程序,对源程序进行汇编,生成.obj文件-目标文件,以及调试用.LST-列表文件和.CRF-交叉引用表;(3)Link连接程序,对使用的目标文件和库文件进行连接,生成.exe文件,同时调试用.map-地址映像文件;如果源程序无语法错误,上述三步将生成可运行的.exe文件,如果运行结果无误,则完成对汇编程序的编程,如果运行后结果存在错误,需要进行调试。
(4)Debug调试程序,对.exe文件进行调试,修改,直到程序正确。
图3目标程序生成步骤图2.编程过程(1)用文本编辑软件,编写扩展名为.asm的源文程序文件。
(2)用汇编程序对编好的源文件进行汇编。
命令行:masm[*.asm]↙如果源文件中存在语法错误,则汇编程序将指出错误类型及位置,可根据这些信息重新编辑源文件,直至无语法错误,汇编后,将生成指定名称的目标文件.obj。
使用MASM50汇编程序进行汇编,输入命令行masm或者masm*.asm后,根据提示,输入文件名,在汇编没有错误的情况下,如屏幕所示:汇编程序可生成三个文件,*.obj,*.lst和*.crf。
*.obj-目标文件,用于连接生成可执行文件;*.lst-列表文件(可选),汇编语言汇编的机器语言与汇编语言对照表,可用于调试;*.crf-交叉引用文件(可选),给出了用户定义的所有符号和对每个符号定义、引用的行号。
(3)目标文件的连接命令行:link[*.obj][*.obj][*.lib]↙连接程序,将多个目标程序及库文件,连接生成可执行的*.exe文件,同时可选择生成*.map文件。
*.map-地址映像文件,给出内存地址分配的有关信息。
下图所示屏幕,为Link连接两个目标文件,没有错误的情况下,生成*.exe 文件。
(4)执行程序执行*.exe文件,观察程序运行结果,如果存在错误,需要进行调试。
汇编语言的编程步骤与调试方法汇编语言作为一种低级编程语言,具有高度的灵活性和效率,尤其适用于对计算机底层操作进行精确控制的应用。
本文将介绍汇编语言的编程步骤与调试方法。
一、编程步骤1. 设计算法:编程之前,首先需要明确编写代码的目的和功能。
根据需求,设计出合适的算法,确定程序的输入、输出等基本要素。
2. 选择汇编语言指令集:根据计算机的硬件平台和操作系统,选择合适的汇编语言指令集,如x86、ARM等。
3. 编写代码:根据算法,使用汇编语言指令集编写代码。
汇编语言使用助记符来表示指令和操作数,需要了解指令的语法和使用方法。
4. 组织程序结构:在编写代码时,需要按照一定的结构组织程序,包括定义数据段、代码段等,并进行正确的程序控制流程设计。
5. 完善程序功能:根据需求,完善程序的各项功能。
可以包括输入输出处理、数据操作、逻辑判断、循环处理等。
6. 调试和优化:编写完成后,进行程序的调试和优化。
可以通过调试工具、打印输出等方式,定位和解决程序中的错误和问题。
同时,优化程序的性能,提高代码的执行效率。
7. 文档记录:在编写代码的过程中,逐步记录代码的功能、变量定义、重要的注释等信息,便于他人阅读和维护。
二、调试方法1. 单步调试:单步调试是指逐条执行汇编语言程序,观察每条指令的执行情况。
通过单步调试可以查看寄存器的值、内存的状态等信息,以便定位错误。
2. 设置断点:在需要观察或调试的代码行上设置断点,运行程序时会在断点处停止执行,可以查看此时程序的状态,并逐步分析代码的执行流程。
3. 查看寄存器和内存:在调试过程中,可以查看寄存器和内存中的值,以判断程序是否按照预期的方式处理数据。
通过查看寄存器和内存的值,可以分析代码的执行过程和结果。
4. 打印输出:可以通过在程序中插入打印输出语句,输出关键变量的值,以便观察程序的执行过程和数据的变化。
5. 利用调试工具:使用专业的调试工具可以更加方便地进行汇编语言程序的调试。
..汇编语言源程序的运行过程一、概述二、具体操作过程1.编辑过程在计算机“附件”的“记事本”中,用word 编辑汇编语言源程序,比用编辑程序EDLIN 要方便得多。
因为使用后者,必须熟记它的各种命令及其功能。
使用前者的操作步骤如下:第一步:编辑并建立扩展名为ams 的文件开始→程序→附件→记事本→键入汇编语言源程序(也可用Ctrl+C 及Ctrl+V 拷贝已有程序)→文件→另存为→出现“另存为”窗口→在‘文件名:’处为该文件命名,并切记:将扩展名由.txt 改为.asm →在“另存为”窗口里的“我的电脑”中找到含有MASM.EXE 、LINK.EXE 以及DEBUG.EXE 这三个工具的文件夹(如,8086experi ),并双击之→该文件夹名便出现在“保存在:”处→保存(至此,该文件夹中将出现你所编辑的扩展名为asm 的汇编语言源程序。
此时的源程序以ASCII 码形式存盘,而非机器码)→关闭记事本。
注意:上述三个工具及用户程序必须在同一文件夹中。
此后,为显示,打印或修改该程序,双击该程序的图标即可。
第二步:在DOS 下运行EDLIN ,以便查找并排除源程序中可能存在的语法错误。
window 状态→开始→运行→打开:cmd ↙→确定→出现DOS 提示符:C:\……>→指定存有你的程序的文件夹所在盘(如D 盘)为当前盘 D: ↙→D:\>cd 文件夹名↙→在DOS 管理下键入源程序编辑程序 无语法错误的汇编语言调试过程D:\文件夹名>edlin 文件名.asm ↙End of input file* E ↙按结束编辑命令E 之前,生成了一个扩展名为$$$的文件;结束编辑状态之后,该文件的扩展名由$$$变为BAK 。
特别指出:即使不用EDLIN 进行编辑,也必须进行此步。
否则,若源程序中存在语法错误,下一步进行汇编后,不予提示,也不生成机器码文件,无法进行再下一步的连接,致使程序无法运行。
8086汇编语⾔学习(⼆)8086汇编开发环境搭建和Debug模式介绍1. 8086汇编开发环境搭建 在上篇博客中简单的介绍了8086汇编语⾔。
⼯欲善其事,必先利其器,在8086汇编语⾔正式开始学习之前,先介绍⼀下如何搭建8086汇编的开发环境。
汇编语⾔设计之初是⽤于在没有操作系统的裸机上直接操作硬件的,但对于⼤部分⼈来说,在8086裸机上直接进⾏编程将会⾯临各种困难。
好在我们可以使⽤软件模拟器来模拟硬件进⾏8086的学习实践。
在《汇编语⾔》中作者推荐通过windows环境下的masm和debug进⾏学习。
masm介绍: masm是⼀款DOS下的汇编⼯具包,在8086汇编的学习中我们需要其中的⼏个⽂件,分别是masm.exe,link.exe。
masm.exe 汇编器,⽤于将⽂本格式的汇编语⾔源⽂件编译为.obj结尾的⼆进制⽂件,其⽣成的.obj结尾的⼆进制⽬标⽂件是被编译的源⽂件的对应的机器码。
单独的源程序⽬标⽂件通常是⽆法直接运⾏的,还需要和互相依赖的其它同样编译完成的⼆进制⽂件链接在⼀起才能⽣成最终的可执⾏⽂件(⽐如所需要的静态库函数) 。
因此,obj⽂件通常也被叫做中间⽂件。
link.exe 链接器,obj⽂件需要通过链接才能转换成可执⾏程序,⽽链接器就是负责完成这⼀任务的。
链接器能将多个obj⽬标⽂件以及其所依赖的库程序进⾏统⼀处理(例如多个⽬标⽂件中指令、数据内存地址的偏移处理),并⽣成可执⾏⽂件。
debug介绍: debug.exe 调试器,windows提供了⼀个在dos中调试8086汇编程序的⼯具debug.exe,提供了展⽰程序运⾏时CPU中各寄存器、内存中数据,指令级的单步调试等功能。
debug程序的使⽤会在本篇博客的后半段进⾏详细介绍。
64位操作系统兼容性问题: 由于《汇编语⾔》⼀书出版较早,当时的windows系统还是32位的,32位windows系统都默认安装了masm与debug,能打开dos窗⼝直接使⽤。
汇编语言程序设计上机步骤与调试方法在汇编语言程序设计中,上机步骤与调试方法是非常重要的,它们能够帮助程序员更好地编写和调试程序。
本文将介绍汇编语言程序设计的上机步骤以及常用的调试方法,帮助读者更好地理解和应用这些知识。
一、上机步骤1. 准备工作在开始上机之前,我们需要做一些准备工作。
首先,确认计算机已经连接好必要的硬件设备,例如键盘、显示器等。
其次,确保操作系统和开发环境已经正确安装并能够正常运行。
最后,根据需要准备好所需的汇编语言文档和程序样例。
2. 创建新项目在开始编写汇编语言程序之前,我们需要创建一个新的项目。
在项目中,我们可以组织和管理相关的文件和代码。
通常,我们会选择一个合适的集成开发环境(IDE)来创建和管理项目。
3. 编写程序在创建项目之后,我们可以开始编写汇编语言程序。
首先,我们需要了解目标机器的指令集和寄存器,以便正确地编写程序。
然后,根据需求,我们可以使用不同的指令、寄存器和内存来实现所需的功能。
在编写程序的过程中,注意代码的可读性和易于维护性是非常重要的。
4. 调试程序编写完汇编语言程序后,我们需要进行调试,以确保程序的正确性和稳定性。
调试是一个迭代过程,通常包括以下步骤:- 设置断点:在程序中设置断点,以便在特定位置停止程序的执行。
- 单步执行:通过逐条执行程序的指令,我们可以观察程序的执行过程,并检查各寄存器和内存的值。
- 监视变量:在调试过程中,我们可以监视程序中的变量值,以验证其正确性。
- 查看输出:观察程序的输出结果,与预期结果进行比较,以确定程序是否按照预期执行。
- 修复错误:如果发现程序中存在错误,我们需要对程序进行修改和调整,直到问题解决为止。
5. 运行程序在完成程序的调试之后,我们可以运行程序并观察其运行效果。
在运行过程中,我们可以测试程序的各种功能,以确保其正常工作。
二、调试方法1. 打印输出在调试汇编语言程序时,打印输出是一种常用且简单有效的调试方法。
常熟理工学院
计算机科学与工程学院实验报告 2013-2014学年第 2 学期
课程名称汇编语言与微机原理
专业计算机科学与技术
班级计科121
学号090312115
姓名王海波
实验地点N6-106
指导老师张雪伍
实验报告要求
1.在实验课前要认真预习实验内容,熟习实验的原理、方法及算法等。
2.根据实验指导书要求,认真完成实验内容;实验结束后,按照实验报告的要求认真填写相关内容。
3.实验时要带好实验指导书、实验报告本。
4.实验时要严肃认真,不得互相抄袭。
5.实验课的成绩由实验预习、实验过程、实验结果和实验报告四部分构成。
用Debug进行实验的示例实验报告必须包含内容说明:。
汇编语⾔程序环境搭建masm+debug64位win107介绍:MASM是Microsoft Macro Assembler 的缩写,是微软公司为微处理器家族开发的,拥有可视化的开发界⾯,使开发⼈员不必再使⽤环境进⾏汇编的开发,编译速度快,⽀持80x86汇编以及,是下开发汇编的利器。
它与平台的磨合程度⾮常好,但是在其他平台上就有所限制,使⽤MASM的开发⼈员必须在windows下进⾏开发。
1. 在windows下搭建汇编编程环境:王爽《汇编程序》第三版⽤的是MASM5.0下载安装包:1)、DOSBox 链接:密码:xdgh2) 、MASM5.0 链接:密码:hku53)、DEBUG 链接:密码:rmsi把debug.exe复制到masm⽬录下。
2. 下载汇编参考⼿册:链接:密码:80fc3. 第⼀个汇编程序:在命令⾏输⼊eg0101.exe,得到程序运⾏结果:Hello Assemly!汇编程序eg0101.asm的内容:include io32.inc.data ;数据段msg byte 'Hello,Assembly!',13,10,0.code ;代码段start:;程序执⾏起始位置mov eax,offset msgcall dispmsgexit 0;程序正常执⾏终⽌end start ;汇编结束5. debug完整配置:汇编语⾔环境:MASM,但是调试需要debug.exe,并且debug.exe不能⽤于64位计算机系统。
所以64位计算机系统使⽤的汇编语⾔环境是:1. 下载DOSBox2. 下载debug.exe在输⼊框状态下z:> ,z:>mount d d:\简洁的讲,你把你要虚拟的⽂件夹位置换掉上⾯的。
mount d d:\d:cd MASMdosbox配置debug1. 有疑问查看DOSBox⽬录下的DOSBox 0.74 Manual.txt⼿册指导2. 打开配置⽂件DOSBox 0.74 Options.bat,因为我的masm和debug都安装在D盘下,所以在本配置⽂件最后⾯的[autoexec]加上MOUNT D D:\D:意思是挂载到D盘下(这⼀步骤也可以不做,直接看下⾯的。
汇编语言的编程步骤与调试方法
一、汇编源程序的建立
1. 使用工具
(1)EDIT,记事本等文本编辑软件,编辑源程序,保存为.asm文
件;
(2)ASM,MASM汇编程序,对源程序进行汇编,生成.obj文件-
目标文件,以及调试用.LST-列表文件和.CRF-交叉引用表;
(3)Link连接程序,对使用的目标文件和库文件进行连接,生
成.exe文件,同时调试用.map-地址映像文件;
如果源程序无语法错误,上述三步将生成可运行的.exe文件,
如果运行结果无误,则完成对汇编程序的编程,如果运行后结果存
在错误,需要进行调试。
(4)Debug调试程序,对.exe文件进行调试,修改,直到程序正
确。
图3 目标程序生成步骤图2. 编程过程
(1)用文本编辑软件,编写扩展名为.asm的源文程序文件。
(2)用汇编程序对编好的源文件进行汇编。
命令行:masm [*.asm] ↙
如果源文件中存在语法错误,则汇编程序将指出错误类型及位置,可根据这些信息重新编辑源文件,直至无语法错误,汇编后,将生成指定名称的目标文件.obj。
使用MASM50汇编程序进行汇编,输入命令行masm或者masm *.asm后,根据提示,输入文件名,在汇编没有错误的情况下,如屏幕所示:汇编程序可生成三个文件,*.obj,*.lst和*.crf。
*.obj-目标文件,用于连接生成可执行文件;
*.lst-列表文件(可选),汇编语言汇编的机器语言与汇编语言对照表,可用于
调试;
*.crf-交叉引用文件(可选),给出了用户定义的所有符号和对每个符号定义、引用的行号。
(3)目标文件的连接
命令行:link [*.obj] [*.obj] [*.lib] ↙
连接程序,将多个目标程序及库文件,连接生成可执行的*.exe文件,同时可选择生成*.map文件。
*.map-地址映像文件,给出内存地址分配的有关信息。
下图所示屏幕,为Link连接两个目标文件,没有错误的情况下,生成*.exe 文件。
(4)执行程序
执行*.exe文件,观察程序运行结果,如果存在错误,需要进行调试。
调试工具DEBUG是针对汇编语言程序设计的一种调试工具,熟练使用DEBUG有助于汇编语言程序员对于逻辑错误的调试。
二、汇编程序的调试
1. 调试方法
DEBUG工具的调试文件为可执行文件*.exe,在命令行窗口或者DOS环境下,执行DEBUG命令:
命令行Debug [*.exe]↙
DEBUG程序如果正常启动,提示符显示为“_”。
出现“_”提示符后,根据调试的需要,输入正确的Debug命令,根据显示内容,修改源文件。
2. 常用DEBUG命令
(1) D命令-内存显示命令
命令格式格式1:D[起始地址]↙
格式2:D[起始地址] [结束地址|L 字节数]↙
调试程序的过程中,可利用该命令可以察看指定范围的内存单元的内容,以确定对内存单元的修改是否正确。
可以通过命令指定显示的范围(格式2),在不指定显示长度的情况下(格式1),将显示从起始地址开始128个字节的内容,如果只写D,则将从上一个D 命令显示结束的位置开始显示128个字节。
在内存显示过程中,可以通过“Ctrl+S”键暂停,按任意键可继续显示,以防显示过快,来不及察看,另外可以通过“Ctrl+S”中止该命令的执行。
(2)E命令-数据编辑命令
命令格式格式1:E[起始地址] [列表] ↙
格式2:E[起始地址]↙
调试过程中,为了进行程序测试,需要改变内存或者寄存器的数据,此时利用DEBUG的E命令可以非常方便的进行修改。
E命令可以使用一连串的数据对内存连续地址单元进行修改,此时使用格式1,也可以修改某个地址单元的内容后,按“空格”键,继续修改高地址单元内容。
使用E命令时,可以同时配合使用D命令,以确定是否正确的完成了对内存单元的修改。
(3)U命令-反汇编命令
命令格式:U[起始地址] [结束地址]
调试过程中,可以利用U命令将目标程序反汇编为汇编程序,以观察汇编指
令的存放位置,汇编指令的正确与否,对于无源码的目标程序,还可以利用反汇编获取目标程序的源码。
(4)G命令-运行程序命令
命令格式:G[=起始地址] [第一断点地址] [第二断点地址]….
调试过程中,可以利用G命令运行程序,观察结果的正确性,或者设置断点,利用G命令观察程序运行到某一位置是否正确,G命令最多可以设置10个断点,当程序运行置断点时,停止执行,并显示当前所有寄存器和标志位的内容,以及下一条将要执行的指令。
如果G命令无起始地址,则从当前CS:IP内容为开始运行。
(5)T命令-单步执行命令
命令格式格式1:T[=地址]
格式2:T[=地址] [执行指令的条数]
调试过程中,可以利用该指令单步执行,从指定地址开始(如果不指定,则从CS:IP开始),执行一条指令(格式1)或者执行指定条数的指令(格式2)后,停止执行,并显示当前所有寄存器和标志位的内容。
(6)R命令-寄存器访问命令
命令格式格式1:R
格式2:R 寄存器名称
一般汇编程序中,会频繁的使用寄存器,使用R命令,可以在调试程序的过程中方便的进行寄存器内容的察看。
如果不指定寄存器名称(格式1),则显示所有寄
存器和标志位内容;可以指定需要察看的寄存器的名
称(格式2),只显示察看寄存器的内容。
(7)Q命令-Debug退出命令
命令格式Q
Debug程序使用结束后,使用该命令退出Debug。
3.Debug使用举例
右边所示的汇编源程序EX.asm,在命令行窗口中
输入下面命令行:
MASM EX.asm ↙
对EX.asm文件进行汇编,如果没有语法错误,则生成EX.obj目标文件。
输入下面命令行:
LINK EX.obj ↙
对目标文件进行连接,连接后得到可执行文件EX.exe,使用Debug对该程序进行调试。
(1)U-反汇编
对EX.exe反汇编后,得到代码段地址和指令的对应图如下图所示。
从反汇编的结果,可以得到指令在代码段的偏移地址,常与T命令和G命令联合使用,使程序运行到固定的位置,查看结果。
同时,可以从反汇编代码中看出,变量会被汇编为直接寻址方式,使用变量在数据段内的有效地址表示。
(2)T-单步
每按一下T,执行一步,屏幕上显示执行指令后,通用寄存器、段寄存器和标志位的状态,下一条指令,以及指令中操作的存储器寻址方式对应的内存单元的
内容。
(3)G-执行
根据反汇编的情况,G断点常设置在正常返回DOS调用之前,即MOV AH,4CH,执行后,可以通过查看寄存器内容,或者D命令查看内存地址单元的内容,检查程序的运行是否正常。
(4)D-查看存储器内容
查看数据段内容,屏幕上会给出128字节存储单元的内容,每行为顺序的16个字节。
因此可以根据定义的数据段中,变量的偏移量,查看运行结果。
(5)E-修改存储单元内容
在调试程序的过程中,如果要修改变量的值,可以使用E命令。
如下图所示,通过E命令修改了程序变量X和Y的值,而不需要修改程序,因此E命令为程序调试提供了方便。
教育之通病是教用脑的人不用手,不教用手的人用脑,所以一无所能。
教育革命的对策是手脑联盟,结果是手与脑的力量都可以大到不可思议。