实验二 熟悉汇编程序建立及其调试方法
汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法汇编语言是一种底层的程序设计语言,直接操作计算机硬件。
在编写汇编语言程序时,需要经过一系列的编程步骤和调试方法,以确保程序的正确性和可靠性。
下面是关于汇编语言的编程步骤和调试方法的一些详细介绍。
一、编程步骤:1.定义程序目标:明确程序的功能、输入和输出。
2.设计算法和逻辑:将目标转化为汇编语言指令,设计算法和逻辑流程。
3.选择寄存器和指令:根据算法和逻辑需求,选择合适的寄存器和指令。
4.编写指令:根据算法和逻辑需求,使用正确的指令来编写汇编语言程序。
5.汇编编译:使用汇编编译器将汇编代码翻译成机器代码。
6.汇编连接:使用链接程序将机器代码和其他必要的文件(如库文件)连接成可执行文件。
7.调试和测试:进行调试和测试,确保程序的正确性和可靠性。
8.优化和改进:根据测试结果,对程序进行优化和改进。
二、调试方法:1.插入调试指令:在程序中插入一些特定的调试指令,可以输出一些关键的变量或标志位,以便观察程序的执行路径和结果。
2.单步执行:逐条执行程序代码,并观察每条指令的执行结果和影响,以及寄存器和存储器的变化情况。
3.观察寄存器和存储器:利用调试器观察程序执行过程中的寄存器和存储器的变化情况,以确定代码逻辑是否正确。
4.打印和日志输出:通过在程序中插入打印和日志输出的语句,可以观察关键变量和代码的执行情况,以帮助调试。
5.内存和寄存器状态检查:检查程序执行过程中的内存和寄存器状态,特别是对一些关键变量和标志位进行监视,以便发现问题所在。
6.脱机调试:将程序转储至仿真器或虚拟机,并在其中进行无风险的调试,以排查错误。
三、汇编程序调试常见问题及解决方法:1.程序崩溃或死循环:检查程序中循环和分支语句的逻辑判断条件是否正确,以及循环内的寄存器和内存操作是否正确。
2.内存访问错误:查看程序访问的内存地址和存储器的范围是否正确,并检查程序中的指针操作是否正确。
3.寄存器使用错误:检查程序中使用的寄存器是否正确选择和使用,尤其是在多个函数调用的情况下,需要注意寄存器的保存和恢复。
汇编语言的编程步骤与调试方法

汇编语言得编程步骤与调试方法一、汇编源程序得建立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文件,观察程序运行结果,如果存在错误,需要进行调试。
汇编实验二DEBUG调试实验

实验二应用DEBUG软件调试程序实验一、实验原理:Debug是DOS、Windows都提供的实模式程序的调试工具。
使用它可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
常用的DEBUG命令使用练习。
我们要用到的Debug功能如下:R命令查看、改变CPU寄存器的内容;D命令查看内存中的内容;E命令改写内存中的内容;U命令将内存中的机器码指令翻译成汇编指令;T命令执行一条机器指令,单步跟踪命令;A命令以汇编指令的格式在内存中写入一条机器指令;P命令,单步执行命令。
二、实验目的:通过DEBUG命令使用练习,掌握汇编的调试工具的使用,进而能够熟练使用调试命令对汇编程序的调试,修改程序运行中的错误,完善程序。
三、实验步骤:1.进入Dos环境,输入DEBUG后即可进入DEBUG。
2.练习使用r,d,,u,t,p,a,q等调试命令,查看各命令的功能和命令输入后的内存变化;四、实验任务:(一)使用Debug,将给出的程序段调入内存,逐条执行(1)用R命令查看CPU寄存器的内容,实验结果如下:用R命令改变CPU寄存器的内容,实验结果如下:(2)命令格式:d ds:100G命令执行前(kk00在内存中的地址:逻辑地址是13B3和物理地址是0100)G命令全数运行后实验结果如下u命令执行(二)利用Debug的E命令更改内存中的数据内容,将“kkkk”改为1vRT(三)利用Debug的A命令将如下程序段实现汇编指令的写入,并执行,用R命令进行查看寄存器值MOV DX,2233HMOV AH,10MOV CX,0FHMOV SI,11HMOV AL,12HAND AL,0FHMOV AH,0(四)查看内存中的内容PC机主板上的ROM中写有一个生产日期,在内存FFF000H~FFFFFH中的某个单元中,找出该生产日期,并尝试改变。
五、实验小结:(本次实验的心得体会,遇到的问题,解决方法以及掌握了什么、自己的感想之类的)。
实验二 汇编语言程序的运行与调试一

实验二汇编语言程序的运行与调试一.实验目的:1、掌握汇编语言源程序的书写格式。
2、掌握EDIT、MASM、LINK、DEBUG等软件的使用方法。
3、掌握上机编辑、汇编、连接及运行汇编语言程序。
二&实验环境:微型计算机一台DOS或WINDOWS操作系统,MASM开发套件。
三.实验原理:1、完整的段定义伪操作data segment;定义数据段…data endsextra segment;定义附加段…extra endsstack segment stack;定义堆栈段…stack endscode segment;定义代码段assume cs:code,ds:data,es:extrastart:mov ax,datamov ds,ax;段地址 段寄存器...…;在代码段填入指令序列mov ah,4chint21h;程序终止,返回DOS code endsend start;汇编结束2、汇编语言源程序的汇编过程汇编语言源程序的汇编过程是是利用汇编程序(MASM)对已编辑好的源程序文件(.ASM)进行汇编,将源程序文件中的助记符指令逐条翻译成机器码指令,并完成源程序中的伪指令所指出的各种操作,最后可以建立3个文件:扩展名为.OBJ的目标文件、扩展名为.LST的列表文件和扩展名为.CRF的交叉索引文件。
目标文件(.OBJ)是必须建立的,列表文件(.LST)和交叉索引文件(.CRF)两个文件可有可无,可以通过汇编时的命令加以选择。
3、目标程序的连接过程汇编后产生的目标程序(OBJ文件)并不是可执行程序文件(EXE文件),还不能直接运行,它必须通过连接程序(LINK)连接成一个可执行程序(EXE 文件)后,才能运行。
连接程序给出的“无堆栈段的警告性错误”并不影响程序的运行。
4、为运行汇编语言程序至少要在磁盘上建立以下文件:(1)编辑程序,如EDIT.EXE,编辑汇编源程序(2)汇编程序,如MASM.EXE,生成目标代码文件。
汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法汇编语言的编程步骤与调试方法一、汇编源程序的建立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文件。
汇编程序的建立、执行与调试

微机原理与汇编语言实验报告姓名:学号:实验日期:一、实验名称汇编程序的建立、执行与调试二、实验目的1、掌握汇编语言程序建立的过程2、掌握调试工具DEBUG的使用方法三、实验设备微机,debug软件四、实验内容1、任务在DEBUG中,所有的数都是以十六进制方式显示,并且数后面没有H。
在DEBUG中标志位用以下符号来显示:标志位名称标志为1 标志为0O OV NVD DN UPI EI DIS NG PLZ ZR NZA AC NAP PE POC CY NCDEBUG的主要命令DEBUG EXAM1.EXE- (提示符)1. 汇编:A [地址]2. 反汇编:U [[地址][,地址]]-U ↙;从当前CS:IP开始的连续32个字节-U CS:IP ↙;从指定地址开始的连续32个字节-U CS:IP L5↙;从CS:IP开始的连续5个字节3.显示或修改寄存器的内容:R [寄存器]-R ↙;-R AX ↙;4.显示内存单元:D[[地址][,地址]]-D ↙;显示当前内存从DS:0开始的连续128个字节-D DS: 4 ↙;显示从指定地址开始的连续128个字节-D DS: 4 L5;↙显示从指定地址开始的连续5个字节5.修改内存单元:E [地址][数据]-E DS:0↙;显示内存0号单元,并等待修改;有下列5种情况之一可供选择:(1)输入16进制数(最多2位)按回车;输入数据代替原内容,E命令结束。
(2)输入16进制数(最多2位)按空格键显示下一单元内容,并等待修改;(3)直接按空格键显示下一单元内容,并等待修改;(4)直接按按两次回车键退出DEBUG状态。
(5)按“-”键,在下一行显示上一单元地址及内容,并等待。
6. 跟踪命令:T[=地址][,计数]7. 执行过程命令:P(追踪不进入子程序)8. 执行命令:G[=地址][,断点][,断点][,…]9. 退出命令:Q2、方案(1)思路1)汇编程序的建立a. 编辑在EDIT或记事本程序下编辑源程序,以.asm作扩展名保存文件。
实验二 汇编语言程序调试

实验二汇编语言程序设计与调试一、实验目的及要求本次实验的目的是通过阅读三段存在有不同错误的程序后,进行修改、调试、执行。
以达到提高阅读理解汇编语言程序和调试程序的目的,以便为设计程序打下基础。
要求独立完成。
二、实验设备Dais单片机仿真实验仪一台,计算机一台,导线若干条。
三、实验内容1、外部数据区数据传送程序:把R2、R3源RAM区首址内R6、R7字节数据传送到R4、R5目的RAM区。
先在R2、R3中输入源首址(例如0000H),R4、R5中输入目的地址(例如2000H),R6、R7中输入字节数(例如FFH)。
执行程序后检查0000H~00FFH中的内容是否和2000H~20FFH内容完全一致。
本段程序中有几处错误,先查出修正之后再编译、执行。
源程序清单如下:== 外部数据区数据传送子程序==ORG 07B0HMOV R2,00HMOV R3,#00HMOV R4,#10HMOV R5,#00HMOV R6,#00HMOV R7,#08HSE22: MOV DPL,R3MOV DPH,R2 ;建立源程序首址MOVX A,@DPTR ;取数MOV DPL,R5MOV DPH,R4 ;目的地首址MOVX @DPTR,A ;传送CJNE R3,#0F0H,LO42INC R2LO42: INC R3 ;源地址加1CJNE R5,#0FFH,LO43INC R4LO43: INC R5 ;目地址加1CJNE R7,#00H,LO44CJNE R6,#00H,LO45 ;字节数减1SJMP $NOPLO44: DEC R7SJMP SE22LO45: DEC R7DEC R6SJMP SE22 ;未完继续END2、片内(CPU内部存储器)、外数据区传送程序将片内RAM 40H~4AH单元分别置数为A0~AA(由程序自动置数),然后将40H~4AH单元的内容分别传送到外部RAM3000H~300AH;再将外部RAM3000H~300AH单元内的数分别送到片内RAM50H~5AH 单元。
汇编-实验2-汇编语言环境及程序调试实验

实验2 汇编语言环境及程序调试实验一、实验目的1 掌握程序DEBUG调试方法;2 理解汇编语言程序分段结构、段的定义、段寄存器的初始化;3 掌握汇编语言程序如何返回DOS等;4 掌握可执行文件的内存分配。
二、实验内容1.给定已知程序,阅读程序内容;2.应用DEBUG命令对程序进行调试。
三、程序内容参考程序清单DATA SEGMENTW DW -304X DW 1000Y DW -12Z DW 20RESULT DW 2 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX,X ;被乘数X取到AX中IMUL Y ;计算X*YMOV CX,AXMOV BX,DX ;X*Y转存到BX、CXMOV AX,Z ;Z取到AX中CWD ;Z扩展到DX、AX中ADD CX,AXADC BX,DX ;计算X*Y+ZSUB BX,220 (修改为SUB CX,220);计算X*Y+Z-220SBB BX,0MOV AX,W ;W取到AX中CWD ;扩展到DX、AX中SUB AX,CXSBB DX,BX ;计算W-(X*Y+Z-220)IDIV X ;计算(W-(X*Y+Z-220))/XMOV RESULT,AXMOV RESULT+2,DX ;送结果MOV AH,4CHINT 21H ;返回DOSCODE ENDSEND START四、程序分析五、汇编、链接六、DEBUG调试:查看内存、寄存器,或查找程序逻辑错误E:\EMBEDD~1\Masm>debug 文件名.exe-u ;将汇编成机器指令的程序(如hello)重新反汇编成汇编语言程序,方便阅读-d ;查看指定的内存内容,默认给出数据段的内容-r ;查看或更改各个寄存器内容,可指定寄存器名-t ;单步执行程序,可加数字表示连续执行若干步-g ;连续执行程序直到结束,可加地址表示连续执行到何处暂停-q ;退出调试环境七、要求1、分析程序实现的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二熟悉汇编程序建立及其调试方法
一、实验目的
1、熟悉汇编语言源程序的框架结构,学会编制汇程序。
2、熟悉汇编语言上机操作的过程,学会汇编程序调试方法。
二、实验内容
1、学习编写汇编语言源程序的方法,了解数据存放格式。
2、阅读给出的程序,找出程序中的错误。
3、通过调试给出的汇编语言源程序,了解并掌握汇编语言程序的建立、汇编、链接、调试、修改和
运行等全过程。
三、实验预习
1、阅读实验指导第一章的内容,了解汇编语言程序建立、汇编、链接、调试的全过程。
2、下面的汇编语言源程序有错误的,试给程序加注释。
通过调试手段找出程序中的错误并修改之。
写出程序的功能,画出程序流程图。
(1)通过调试手段找出程序的错误如下:
(2)根据错误的提示修改的程序如下:
(3)修改后对程序加注释:
(4)程序流程图:
(5)程序的功能:找出20个数字中最大的数,并保存。
四、实验步骤
1、建立汇编语言源程序,对所建立的汇编源程序进行编译、链接。
2、运行DEBUG调试程序,装入被调试程序,用U命令查看调入的程序,记录代码段基值和数据段基
值,用R命令查看并记录下当前寄存器内容。
3、
五、实验习题与思考。