汇编语言的编程步骤与调试方法

合集下载

实验一、汇编语言程序的上机过程及调试

实验一、汇编语言程序的上机过程及调试

实验一、汇编语言程序的上机过程及调试<i>汇编程序调试过程</i>实验一、汇编语言程序的上机过程及调试<i>汇编程序调试过程</i>一、实验目的熟练掌握汇编语言上机汇编、连接和装入运行。

学会使用调试程序DEBUG或TD来进行程序调试。

<i>汇编程序调试过程</i>二、实验内容(一)汇编程序建立过程a.建立汇编源程序─通过b.编译为目标文件d.连接为可执行文件c.不通过,重新修改(语句错误)f.不正确,用调试工具调试,重新修改(逻辑错误)e运行正确g.完成<i>汇编程序调试过程</i>汇编语言的源程序需要编译和连接后才能在计算机上执行。

汇编语言源程序扩展名规定为.ASM。

用MASM编译源程序后,将产生源程序的目标程序文件,其扩展名为.OBJ。

再经过连接程序(LINK)把目标程序文件与库文件或其他目标文件连接在一起形成可执行文件(扩展名为.EXE)。

这时就可以运行该程序了。

DOS下可直接键入可执行程序的文件名从而运行该程序。

<i>汇编程序调试过程</i>(二)过程详细说明步骤a: 建立汇编源程序如果现在的根目录不是E盘,写入E :然后回车,再打入cd *** (***是你新建的文件夹名),例如电气031班的同学,现在你的DOS界面根目录为:E\dq031 。

打入edit然后回车,EDIT的操作画面便会出现在屏幕上,alt键可以控制工具栏操作,←↑→↓箭头控制阴影选择的上下移动。

我们现在按alt键,选中flie, 按↓选中open,回车,找到刚刚拷贝的asm 文件,回车。

选择存盘并给你输入的文件起一个文件名,形式:*** . asm ;然后回到dos环境。

<i>汇编程序调试过程</i>步骤b: 编译目标文件在DOS提示符下键入MASM *** .asm回车,(其中***为你刚才在*****RE a 中建立的文件名)这时汇编程序的输出文件可以有三个(分别:.obj .lst .crf),便会出现三次提问,在这可以一路回车即可。

汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法一、汇编源程序的建立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.设计算法和逻辑:将目标转化为汇编语言指令,设计算法和逻辑流程。

3.选择寄存器和指令:根据算法和逻辑需求,选择合适的寄存器和指令。

4.编写指令:根据算法和逻辑需求,使用正确的指令来编写汇编语言程序。

5.汇编编译:使用汇编编译器将汇编代码翻译成机器代码。

6.汇编连接:使用链接程序将机器代码和其他必要的文件(如库文件)连接成可执行文件。

7.调试和测试:进行调试和测试,确保程序的正确性和可靠性。

8.优化和改进:根据测试结果,对程序进行优化和改进。

二、调试方法:1.插入调试指令:在程序中插入一些特定的调试指令,可以输出一些关键的变量或标志位,以便观察程序的执行路径和结果。

2.单步执行:逐条执行程序代码,并观察每条指令的执行结果和影响,以及寄存器和存储器的变化情况。

3.观察寄存器和存储器:利用调试器观察程序执行过程中的寄存器和存储器的变化情况,以确定代码逻辑是否正确。

4.打印和日志输出:通过在程序中插入打印和日志输出的语句,可以观察关键变量和代码的执行情况,以帮助调试。

5.内存和寄存器状态检查:检查程序执行过程中的内存和寄存器状态,特别是对一些关键变量和标志位进行监视,以便发现问题所在。

6.脱机调试:将程序转储至仿真器或虚拟机,并在其中进行无风险的调试,以排查错误。

三、汇编程序调试常见问题及解决方法:1.程序崩溃或死循环:检查程序中循环和分支语句的逻辑判断条件是否正确,以及循环内的寄存器和内存操作是否正确。

2.内存访问错误:查看程序访问的内存地址和存储器的范围是否正确,并检查程序中的指针操作是否正确。

3.寄存器使用错误:检查程序中使用的寄存器是否正确选择和使用,尤其是在多个函数调用的情况下,需要注意寄存器的保存和恢复。

微机实验汇编语言程序的调试与运行步骤

微机实验汇编语言程序的调试与运行步骤

软件实验一汇编语言程序的调试与运行一.实验目的1.学习数据传送和算术运算指令的用法2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。

二.实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在DATA1和DA TA2为首的5个内存单元中,结果送回DATA1处。

三.程序框图图1.1 两个多位十进制相加程序流程图四.程序清单DISP MACRO XMOV DL,X ;要显示的字符送DL寄存器MOV AH,02H ;DOS功能调用号是02HINT 21H ;21H中断程序是DOS功能调用ENDMDATA SEGMENTDATA1 DB '12732'DATA2 DB '06815'N EQU $-DA TA2DATA ENDSSTACK SEGMENT STACKSTA DB 20 DUP (?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DA TA START:MOV AX,DA TAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXLEA SI,DATA1 ;☆MOV BX,0MOV CX,NCALL DISPL ;显示被加数DISP '+'LEA SI,DATA2MOV BX,0MOV CX,NCALL DISPL ;显示加数DISP '='LEA DI,DA TA1MOV CX,NCALL ADDA ;调用加法子程序LEA SI,DATA1MOV BX,0MOV CX,NCALL DISPL ;显示运算结果DISP 0DHDISP 0AHMOV AX,4C00HINT 21HDISPL PROC ;显示子程序DS1: MOV AH,02HMOV DL,[SI+BX]INT 21HINC BXLOOP DS1RETDISPL ENDPADDA PROC ;加法子程序PUSH CXMOV BX,0AD1: SUB BYTE PTR [SI+BX],30HSUB BYTE PTR [DI+BX],30HINC BXLOOP AD1POP CXPUSH CXMOV BX,N-1 ;☆☆CLCAD2: MOV AL,[SI+BX]ADC AL,[DI+BX]AAAMOV [DI+BX],ALDEC BXLOOP AD2POP CXPUSH CXMOV BX,0 ;☆☆☆AD3: ADD BYTE PTR [DI+BX],30HINC BXLOOP AD3POP CXRET ;☆☆☆☆ADDA ENDPCODE ENDSEND START五.调试步骤1.编辑源程序,建立一个以后缀为.ASM的文件.2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。

简述汇编语言程序编制的基本流程和方法

简述汇编语言程序编制的基本流程和方法

简述汇编语言程序编制的基本流程和方法下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!汇编语言程序编制的基本流程和方法引言在计算机科学领域,汇编语言是一种底层编程语言,用于直接操作计算机硬件。

实验一 利用 DEBUG 调试汇编语言程序段

实验一 利用 DEBUG 调试汇编语言程序段

实验名称实验一利用 DEBUG 调试汇编语言程序段一、实验目的1.熟悉 DEBUG 有关命令的使用方法;2.利用 DEBUG 掌握有关指令的功能;3.利用 DEBUG 运行简单的程序段。

二、实验要求1.仔细阅读有关 DEBUG 命令的内容,对有关命令,要求事先准备好使用的例子;三、实验环境DOS 操作系统四、实验内容1.进入和退出 DEBUG 程序;1)开始—运行点确定进入DOS命令窗口图1进入DOS命令窗口2)在命令窗口中输入 dubug 进入 debug 程序图2进入 debug 程序3)进入 debug 窗口后,输入 q 命令退出 debug图3退出 debug2.学会 DEBUG 中的1)D 命令(显示内存数据 D 段地址:偏移地址)例 1:-D100 ;显示 DS 段, 0100 开始的 128 个字节内容-D ;默认段寄存器为 DS,当前偏移地址(刚进入 debug 程序偏移地址为 0100H)图4默认显示 DS 段内容-D DS:100 ;显示 DS 段, 0100H 开始的 128 个字节内容图5显示 DS 段内容-D CS:200 ;显示 CS 段, 0200H 开始的 128 个字节内容图6显示 CS 段内容-D 200:100 ;显示 DS 段, 0200:0100H 开始的 128 个字节内容图7显示 DS段0200:0100H内容-D 200 ;显示 DS 段, 0200H开始的128个字节内容图8显示 DS段0200H开始的内容-D 100 L 10 ;显示 DS 段, 100H 开始的 100H 个字节内容图9显示 DS段100H开始的100H字节内容2)E 命令(修改指定内存)例 1:-E100 41 42 43 44 48 47 46 45-D 100,L08结果:073F:0100 41 42 43 44 48 47 46 45-e 100 修改内存内容-d 100,L08 查看刚才修改的内存内容图10 修改和查看DS段100H开始的80H字节内容例 2: -E 100073F:0100 41. 42 : 42 是操作员键入此命令是将原 100 号内存内容 41 修改为 42,用 D 命令可察看。

汇编语言源程序运行步骤和DEBUG的使用

汇编语言源程序运行步骤和DEBUG的使用

汇编语言源程序运行步骤和DEBUG的使用一、实验目的1.熟悉汇编语言源程序书写格式。

2.熟悉汇编语言源程序编辑、汇编、连接、执行步骤。

3.练习DEBUG常用命令的使用。

4.熟悉8086的寄存器。

5.了解程序的执行过程。

二、实验预习要求1、认真阅读预备知识中汇编语言的上机步骤的说明,熟悉汇编程序的建立、汇编、连接、执行、调试的全过程。

2.预习使用DEBUG 检查/修改寄存器内容、查询存储器内容的命令。

3.预习使用DEBUG单步、断点及连续执行程序的命令。

三、实验内容1.编辑以下程序,汇编连接后运行,将输出'HOW ARE YOU?’。

本习题主要目的:熟悉汇编语言源程序的书写格式;熟悉汇编语言源程序的编辑、汇编、连接、运行。

DA TA SEGMENTBUF DB 'HOW ARE YOU?$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV DX,OFFSET BUFMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START2.DEBUG 调试以下程序,查看DATA段中定义的数据在内存中的存放方式,并单步执行查看每一语句执行后相关寄存器的内容,并解释为何取该值:DA TA SEGMENT ;(1)DB 34H,12H ;(2)B DW 1234H ;(3)C DD 0 ;(4)D DB -1,15/3 ;(5)E DB '012' ;(6)F DW 'AB','C' ;(7)G DW ? ;(8)H DB 5 DUP(0) ;(9)I DW $-OFFSET H ;(10)DA TA ENDS ;(11)CODE SEGMENT ;(12)ASSUME CS:CODE,DS:DA TA ;(13)START: MOV AX,CODE ;(14)MOV DS,AX ;(15)MOV BX,SEG A ;(16)MOV CX,OFFSET B ;(17)MOV DX,TYPE C ;(18)MOV AH,4CH ;(19)INT 21H ;(20)CODE ENDS ;(21)END START ;(22)3.下面是第1题采用将主程序定义为远程的程序返回DOS的结束方式,将其编辑、连接、运行,熟悉汇编源程序不同的结束方式。

汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言的编程步骤与调试方法
一、汇编源程序的建立
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命令为程序调试提供了方便。

相关文档
最新文档