汇编语言的编程步骤与调试方法
实验一、汇编语言程序的上机过程及调试
实验一、汇编语言程序的上机过程及调试<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 文件。
编写汇编语言源程序的流程或步骤
编写汇编语言源程序的流程或步骤下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor.I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,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 andwriting methods,please pay attention!揭秘汇编语言源程序的编写流程与步骤汇编语言,作为计算机科学的基础,是直接对应机器指令的编程语言。
汇编语言的编程步骤与调试方法
汇编语言的编程步骤与调试方法汇编语言是一种底层的程序设计语言,直接操作计算机硬件。
在编写汇编语言程序时,需要经过一系列的编程步骤和调试方法,以确保程序的正确性和可靠性。
下面是关于汇编语言的编程步骤和调试方法的一些详细介绍。
一、编程步骤:1.定义程序目标:明确程序的功能、输入和输出。
2.设计算法和逻辑:将目标转化为汇编语言指令,设计算法和逻辑流程。
3.选择寄存器和指令:根据算法和逻辑需求,选择合适的寄存器和指令。
4.编写指令:根据算法和逻辑需求,使用正确的指令来编写汇编语言程序。
5.汇编编译:使用汇编编译器将汇编代码翻译成机器代码。
6.汇编连接:使用链接程序将机器代码和其他必要的文件(如库文件)连接成可执行文件。
7.调试和测试:进行调试和测试,确保程序的正确性和可靠性。
8.优化和改进:根据测试结果,对程序进行优化和改进。
二、调试方法:1.插入调试指令:在程序中插入一些特定的调试指令,可以输出一些关键的变量或标志位,以便观察程序的执行路径和结果。
2.单步执行:逐条执行程序代码,并观察每条指令的执行结果和影响,以及寄存器和存储器的变化情况。
3.观察寄存器和存储器:利用调试器观察程序执行过程中的寄存器和存储器的变化情况,以确定代码逻辑是否正确。
4.打印和日志输出:通过在程序中插入打印和日志输出的语句,可以观察关键变量和代码的执行情况,以帮助调试。
5.内存和寄存器状态检查:检查程序执行过程中的内存和寄存器状态,特别是对一些关键变量和标志位进行监视,以便发现问题所在。
6.脱机调试:将程序转储至仿真器或虚拟机,并在其中进行无风险的调试,以排查错误。
三、汇编程序调试常见问题及解决方法:1.程序崩溃或死循环:检查程序中循环和分支语句的逻辑判断条件是否正确,以及循环内的寄存器和内存操作是否正确。
2.内存访问错误:查看程序访问的内存地址和存储器的范围是否正确,并检查程序中的指针操作是否正确。
3.寄存器使用错误:检查程序中使用的寄存器是否正确选择和使用,尤其是在多个函数调用的情况下,需要注意寄存器的保存和恢复。
简述汇编语言程序编制的基本流程和方法
简述汇编语言程序编制的基本流程和方法下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!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!汇编语言程序编制的基本流程和方法引言在计算机科学领域,汇编语言是一种底层编程语言,用于直接操作计算机硬件。
汇编语言的编程步骤与调试方法
汇编语言得编程步骤与调试方法一、汇编源程序得建立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.学习数据传送和算术运算指令的用法2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
二.实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在DATA1和DA TA2为首的5个内存单元中,结果送回DATA1处。
三.程序框图图1.1两个多位十进制相加程序流程图四.程序清单DISP MACRO XMOV DL,X;要显示的字符送DL寄存器MOV AH,02H;DOS功能调用号是02HINT21H;21H中断程序是DOS功能调用ENDMDATA SEGMENTDATA1DB'12732'DATA2DB'06815'N EQU$-DA TA2DATA ENDSSTACK SEGMENT STACKSTA DB20DUP(?)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,DA TA1;☆MOV BX,0MOV CX,NCALL DISPL;显示被加数DISP'+'LEA SI,DA TA2MOV BX,0MOV CX,NCALL DISPL;显示加数DISP'='LEA DI,DA TA1MOV CX,NCALL ADDA;调用加法子程序LEA SI,DA TA1MOV BX,0MOV CX,NCALL DISPL;显示运算结果DISP0DHDISP0AHMOV AX,4C00HINT21HDISPL PROC;显示子程序DS1:MOV AH,02HMOV DL,[SI+BX]INT21HINC BXLOOP DS1CALL DISPL;显示被加数DISP'+'LEA SI,DA TA2MOV BX,0MOV CX,NCALL DISPL;显示加数DISP'='LEA DI,DA TA1MOV CX,NCALL ADDA;调用加法子程序LEA SI,DA TA1MOV BX,0MOV CX,NCALL DISPL;显示运算结果DISP0DHDISP0AHMOV AX,4C00HINT21HDISPL PROC;显示子程序DS1:MOV AH,02HMOV DL,[SI+BX]INT21HINC 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 START2.简单叙述上机步骤,调试方法。
汇编语言程序的编辑、汇编、连接和调试
Object filename [Filename.OBJ]:目标
文件 Source listing [NUL.LST]:列表文
件 Cross-reference [NUL.CRF]:交叉引
用文件
汇编语言程序的编辑、汇编、连接和调试
Hale Waihona Puke 1.3 连接程序LINK汇编产生的目标程序文件虽然是二进制代码文件,但它还不能直 接运行,须再经过连接程序LINK进行连接,生成一个扩展名为.EXE的 可执行文件。所谓连接过程,就是找到要连接的所有目标模块,将它 们装入内存,进而连接在一起形成一个完整的程序。
微机原理与接口技术
汇编语言程序的编辑、汇编、连接和调试
1.1 源程序编辑器EDIT
用户可以在任意一种编辑程序(EDIT,NOTEPAD等)下,用键盘键入或编辑汇编语言的源程序。此时, 源程序以ASCII码形式存放于内存中。将源文件以.ASM为扩展名存盘后,在磁盘上就建立了一个汇编语言源 程序文件。
微机原理与接口技术
在连接过程中,可生成3个文件,用户可根据需要有选择地建立相 应文件。
1.4 程序的运行和调试
Run File [Filename.EXE]:可执
行文件
List File [NUL.MAP]: 映像文件
经过以上三个步骤后,将可执行文件装入内存,就可以在DOS 下运行此汇编程序了。
Libraries [.LIB]:库文 件
1.2 汇编程序MASM
要使汇编语言源程序在机器上运行,必须先用汇编 程 序 MASM 对 ASM 文 件 进 行 汇 编 , 生 成 一 个 扩 展 名 为.OBJ的目标程序文件。这时,源程序中的指令被汇编成 了计算机可以识别的二进制代码。
实验一汇编语言上机及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文件。
汇编语言源程序的编辑与调试过程
汇编语言源程序的编辑与调试过程汇编语言源程序的编辑与调试过程1.怎样在TD环境下载入被调试程序?答:方法1:转到TD.EXE 所在目录,在DOS 提示符下键入以下命令:C:\ASM>TD↙进入TD后,按Alt-F键打开File 菜单,选择Open,在文件对话框中输入要调试的程序名,按回车。
方法2:转到TD.EXE 所在目录,在DOS 提示符下键入以下命令(假定要调试的程序名为HELLO.EXE):C:\ASM>TD HELLO.EXE↙方法3:在Windows 操作系统中,打开TD.EXE 所在目录,把要调试的程序图标拖放到TD 的图标上。
2.在TD环境下如何编辑汇编指令?答:(1)用Tab键选择代码区为当前区域;(2)用方向键把光标移到期望的地址处,如果是输入一个新的程序段,建议把光标移到CS:0100H处;(3)打开指令编辑窗口,有两种方法:一是在光标处直接键入汇编指令,在输入汇编指令的同时屏幕上就会自动弹出指令的临时编辑窗口。
二是用Alt-F10键激活代码区局部菜单,选择其中的汇编命令,屏幕上也会自动弹出指令的临时编辑窗口。
(4)在临时编辑窗口中输入/编辑指令,每输入完一条指令,按回车,输入的指令即可出现在光标处(替换掉原来的指令),同时光标自动下移一行,以便输入下一条指令。
3.在TD环境下如何查看/修改数据段的数据?答:(1)用Tab键选择数据区为当前区域;(2)使用局部菜单中的“Goto”命令并结合使用方向键把光标移到期望的地址单元处(注意数据区的光标是一个下划线),数据区就从该地址处显示内存单元的内容。
(3)若要修改该地址处的内容,则需打开数据编辑窗口。
有两种方法:一是在光标处直接键输入数据,在输入数据的同时屏幕上就会自动弹出数据编辑窗口。
二是用Alt-F10键激活数据区局部菜单,选择其中的“Change”命令,屏幕上也会弹出数据编辑窗口。
(4)在数据编辑窗口中输入所需的数据,输入完后,按回车,输入的数据就会替代光标处的原始数据。
汇编语言汇编程序从写出到最终执行的过程
汇编语言汇编程序从写出到最终执行的过程汇编语言是一种低级编程语言,可以直接操作计算机的硬件。
在编写汇编程序时,需要遵循一系列的步骤,包括编写源代码、汇编、链接和最终的执行。
下面将详细介绍汇编语言汇编程序的完整过程。
1. 编写源代码编写汇编程序的第一步是编写源代码。
汇编语言使用助记符(mnemonic)来代表机器指令,以及操作数和标签来表示数据和程序的地址。
源代码以文本文件的形式保存,其中包含汇编指令、数据和注释等。
汇编程序的源代码可以使用任何文本编辑器编写,如Notepad++、Sublime Text等。
2. 汇编完成源代码的编写后,需要将其转换为可执行的机器指令。
这一步骤称为汇编。
汇编器是一种软件工具,用于将汇编语言转换为机器码。
它会按照源代码中的指令格式和操作数,生成对应的二进制机器指令。
在汇编过程中,还会进行一些语法检查和错误提示,以确保指令的准确性和完整性。
3. 链接在汇编阶段,生成的机器指令是相对独立的,无法直接执行。
为了将不同的模块链接在一起,构建可执行文件,需要进行链接操作。
链接器是一种软件工具,用于将各个模块中的地址和引用解析,并生成最终的可执行文件。
链接器还负责解决模块间的依赖关系,将不同的模块适当地组合在一起。
4. 最终执行完成链接后,就可以将生成的可执行文件加载到计算机的内存中,并开始执行。
可执行文件中包含了汇编程序的机器指令,以及相关的数据。
计算机会按照指令序列的顺序,逐条执行汇编指令。
在执行过程中,数据会被加载到寄存器或内存中,并进行相应的运算和操作。
最终,汇编程序会产生预期的结果。
总结汇编语言汇编程序的从写出到最终执行的过程包括编写源代码、汇编、链接和最终执行。
编写源代码时,需要使用汇编语言的助记符、操作数和标签等。
汇编器负责将源代码转换为机器指令,并进行语法检查。
链接器将汇编程序的各个模块链接在一起,生成可执行文件。
最终,计算机加载可执行文件并执行其中的机器指令,完成汇编程序的执行。
实验二、汇编语言程序的汇编与调试
实验二、汇编语言程序的汇编与调试一、实验目的掌握汇编语言程序的汇编与调试过程,熟悉MASM、LINK、DEBUG等程序的使用。
了解列表文件与交叉参考文件的基本内容。
二、实验原理编制好汇编语言的源程序后,若要在机器上运行,必须经过如图1- 1所示的几个步骤:1、编辑源程序图1- 1 汇编语言程序的上机过程可以使用任何一种文本编辑程序编辑汇编语言源程序,通常使用DOS提供的文本编辑程序EDIT,具体使用方法为:从Windows进入MS-DOS方式,在DOS提示符后键入:EDIT [文件名]进入EDIT后,对源程序进行全屏幕编辑。
编辑完成后选择File菜单的Save命令保存文件,选择File菜单的Exit命令退出EDIT。
对于汇编语言源程序,其文件的扩展名约定使用ASM。
2、汇编汇编程序的基本功能是把用汇编语言编写的源程序翻译成机器语言目标代码,同时生成列表文件及交叉参考文件。
汇编程序的操作步骤为:在DOS提示符后键入:MASM 源程序文件名或MASM 源程序文件名,列表文件名,交叉参考文件名其中文件名不必给出扩展名,汇编程序会按照默认情况处理或产生。
若汇编后出现警告错误或严重错误,应调用EDIT对源程序进行修改,再重新汇编,直至无错误为止。
列表文件[.LST]和交叉参考文件[.XRF]有助于程序的分析和错误的查找,根据需要可以生成这两个文件(缺省时无)。
其中列表文件是文本文件,可用EDIT打开。
交叉参考文件是二进制文件,通过执行程序CREF.EXE,将二进制交叉参考文件转换为索引列表文件[.REF],具体方法为在DOS提示符后键入:CREF 交叉参考文件名3、连接汇编以后的目标代码的地址还是可浮动的相对地址,需要经过连接才能生成可执行程序。
连接程序的功能是连接多个目标代码模块(如果有的话),确定每个程序段的地址,形成可执行程序文件[.EXE]。
连接程序的操作步骤为:在DOS提示符后键入:LINK 目标代码文件名当目标代码文件不止一个时,各个目标代码文件名之间用+(加号)连接;也可以用命令行方式运行LINK程序,其格式为:LINK 目标文件名,可执行程序文件名,内存映象文件名,库文件名4、调试程序通过汇编和连接,排除了语法错误,并不一定能正确执行,这就需要使用动态排错程序。
第8章 汇编语言程序开发与调试
第8章 汇编语言程序开发与调试
8.1 汇编语言程序开发过程 8.2
第8章 汇编语言程序开发与调试
8.1 汇编语言程序开发过程
返回本章首页
第8章 汇编语言程序开发与调试
汇编语言开发过程
(1)编写程序,建立扩展名为.asm的汇编源程
序文件。
(2)对源程序进行汇编,生成目标文件(.obj)。
;------------------- 子程序ASCII结束--------------------------------------------
另外,对于大多数汇编语言程序都需通过调试才能检验 程序执行结果的。下面我们讨论汇编语言程序的调试方法。
返回本节
第8章 汇编语言程序开发与调试
8.2 汇编语言程序的调试方法
命令来调试程序。
返回本节
第8章 汇编语言程序开发与调试
3. DEBUG的主要命令
在输入提示符“-”后,键入?,然后回车,可以显示 DEBUG命令一览表。下面介绍其中得主要命令。 (1) 显示存储单元的命令D(DUMP),格式为:
-D[address]或_D[range]
例如,按指定范围显示存储单元内容的方法为: -d 100 120 18E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G ...8.G.....G ... 18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37.. ; .. h ..M PQVW. 7 18E4:0120 8B
图 8-7 编译界面
第8章 汇编语言程序开发与调试
同样直接输入demo.obj即可。在连接过程中 会提示我们是否需要生成映像文件.map和库文 件.lib,如下图8-8所示。一般不需要,可以直接 键入Enter跳过去。
汇编语言的编程步骤与调试方法
汇编语言的编程步骤与调试方法汇编语言作为一种低级编程语言,具有高度的灵活性和效率,尤其适用于对计算机底层操作进行精确控制的应用。
本文将介绍汇编语言的编程步骤与调试方法。
一、编程步骤1. 设计算法:编程之前,首先需要明确编写代码的目的和功能。
根据需求,设计出合适的算法,确定程序的输入、输出等基本要素。
2. 选择汇编语言指令集:根据计算机的硬件平台和操作系统,选择合适的汇编语言指令集,如x86、ARM等。
3. 编写代码:根据算法,使用汇编语言指令集编写代码。
汇编语言使用助记符来表示指令和操作数,需要了解指令的语法和使用方法。
4. 组织程序结构:在编写代码时,需要按照一定的结构组织程序,包括定义数据段、代码段等,并进行正确的程序控制流程设计。
5. 完善程序功能:根据需求,完善程序的各项功能。
可以包括输入输出处理、数据操作、逻辑判断、循环处理等。
6. 调试和优化:编写完成后,进行程序的调试和优化。
可以通过调试工具、打印输出等方式,定位和解决程序中的错误和问题。
同时,优化程序的性能,提高代码的执行效率。
7. 文档记录:在编写代码的过程中,逐步记录代码的功能、变量定义、重要的注释等信息,便于他人阅读和维护。
二、调试方法1. 单步调试:单步调试是指逐条执行汇编语言程序,观察每条指令的执行情况。
通过单步调试可以查看寄存器的值、内存的状态等信息,以便定位错误。
2. 设置断点:在需要观察或调试的代码行上设置断点,运行程序时会在断点处停止执行,可以查看此时程序的状态,并逐步分析代码的执行流程。
3. 查看寄存器和内存:在调试过程中,可以查看寄存器和内存中的值,以判断程序是否按照预期的方式处理数据。
通过查看寄存器和内存的值,可以分析代码的执行过程和结果。
4. 打印输出:可以通过在程序中插入打印输出语句,输出关键变量的值,以便观察程序的执行过程和数据的变化。
5. 利用调试工具:使用专业的调试工具可以更加方便地进行汇编语言程序的调试。
实验二 汇编语言程序上机过程及调试
实验报告二课程微机原理实验名称汇编语言程序上机过程以及调试第页专业电子信息班级__ __ 学号_ __ 姓名实验日期:2014 年 3 月10 日报告退发(订正、重做)一、实验目的学习汇编语言程序设计的基本步骤,即编辑(EDIT)程序、汇编(MASM)、连接(LINK)和运行,使对汇编语言程序设计有一个初步的认识。
二、实验内容1、学习使用全屏幕文本编辑软件EDIT。
用EDIT输入一段给定的源程序。
2、用MASM对已存盘的源程序进行汇编,形成目标文件(.OBJ);如有错误,再返回到EDIT进行修改。
3、用LINK对上述形成的目标文件进行连接,形成可执行文件(.EXE)4、在DOS提示符下运行该可执行文件。
[汇编语言程序的编写格式]汇编语言程序一般由几个段组成,它们分别是堆栈段,数据段,代码段。
任何一个源程序至少必须有一个代码段和一条作为源程序结束的伪指令END。
段的定义有两种格式,分述如下:1,完整的段定义格式:一个段由段头,段体,段尾组成,形式如下:段名SEGMENT[定位类型][组合类型][‘类别’]……段名ENDS其中SEGMENT后的参数一般可省略,详细说明参阅后面的有关章节。
2,简化的段定义格式(MASM5.0版本提供)每段以.开始后跟固定的段名,一般形式如下:DOSSEG.MODEL 存储类型;“存储类型”可选择为SMALL。
.STACK[大小];堆栈段,“大小”指定堆栈的字节数。
.DATA;数据段。
.CODE[名字];代码段;一般只有一个代码段,名字可缺少……例1:用完整的段定义编写一源程序。
NAME EXAM1;可以省略DATA SEGMENT;定义数据段,以下是数据段的内容STR1 DB “HELLO,WELCOME!”,13,10,‘$’STR2 DB “DO YOU LIKE COMPUTER?(Y/N)”,13 10,‘$’STR3 DB “NICE!”,13,10,‘$’STR4 DB “SORRY!”,13,10,‘$’STR5 DB “UNKNOW,ANSWER AGAIN!(Y/N)”,DB 13,10,‘$’STR6 DB “SEE YOU NEXT TIME!”,13,10,‘$’DA TA ENDS ;数据段结束CODE SEGMENT ;定义代码段ASSUME CS:CODE;DS:DATA;以下是代码段内容START:MOV AX,DA TA;给数据段寄存器赋值MOV DS,AXMOV AH,9;显示一字符串的功能号MOV DX,OFFSET STR1;显示字符串STR1的偏址INT 21H;DOS功能调用ASK :MOV DX,OFFFSET STR2;显示字符串STR2INT 21HMOV AH,1;键盘输入一字符的功能号INT 21H;键入的字符ASCⅡ码在ALNOT AL;求反TEST AL,‘Y’;是否按下‘Y’或‘y’键JE NEXT1TEST AL,‘y’JE NEXT1TEST AL,‘N’;是否按下‘N’键或‘y’键JE NEXT2TEST AL, ‘n’JE NEXT2MOV DX,OFFSET STR5;不是按上述键MOV AH,9INT 21HJMP ASK;再返回ASKNEXT1:MOV DX,OFFSET STR3;是按下‘Y’或‘y’键MOV AH,9INT 21HJMP BYENEXT2:MOV DX,OFFSET STR4;是按下‘N’或‘n’键MOV AH,9INT 21HBYE:MOV DX,OFFSET STR6INT 21HMOV DL,7;喇叭响的ASCⅡ码MOV AH,2INT 21HMOV AH,4CH;退回DOSINT 21HCODE ENDS;代码段结束END START;源程序结束注:源程序中的每一行注释语句前一定要加分号‘;’,下同。
汇编语言程序调试及工具软件DEBUG
15
15、S检索 格式:S 起始地址 结束地址 值表 S 起始地址 L字节数 值表 功能:在指定内存范围内检索值表指定的字符,如果找到,则显示 检索到的单元地址;如果没找到,则显示提示符。 例: 设内存DS:0000H开始存入1,2,3, ‘A’ , ‘B’ , ‘A’ , ‘B’ 要求检索字符‘A’ , ‘B’ , ‘F’ -SDS:0 06 A 1542:0003 1542:0005 -SDS:0 06 B 1542:0004 1542:0006 -SDS:0 06 F -
通过调试工具检查功能的正确性。
2
二、调试工具软件DEBUG
1、简介 面向汇编语言的动态调试工具,有19条命令。 通过跟踪、测试对.EXE和.COM文件动态跟踪调试。 查找文件中的错误及运行结果。 可以直接编写、调试小程序。 2、DEBUG的启动方式
(1)在DOS状态下直接输入
C:DEBUG ADD.EXE (2)在DOS状态下输入 C:DEBUG -NADD.EXE -L
17
16
16、C比较 格式:C 起始地址 结束地址 目的地址 C 起始地址 L字节数 目的地址 功能:比较两个数据块内容,如果不相同,则显示其内容和地址。 默认为数据段,目的地址只包含偏移地址。 例:把ES:0开始的10个字节内容与DS:100H开始的区域进行比较, 找出与之不同的内容。 -CES:0 LA DS:100 执行结果: 82DD:0000 03 2D 82CD:100 82DD:0002 00 02 82CD:102 82DD:0003 05 09 82CD:103 82DD:0008 04 66 82CD:108 17、Q退出 格式:-Q 功能:退出DEBUG命令。
9
例2:从CS:0004开始执行3条指令。 -T=4 3
汇编语言的编程步骤与调试方法
汇编语言的编程步骤与调试方法一、汇编源程序的建立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. 编辑源程序使用编辑软件将汇编源程序输入到计算机中,建立*.ASM文件。
2.汇编源程序使用汇编程序将汇编源程序汇编成目标代码文件,即生成*.OBJ 文件。
目前使用较多的汇编程序是宏汇编程序MASM。
C>MASM A1↙3. 连接目标程序文件生成可执行文件生成OBJ文件后,必须用LINK程序连接目标代码程序和库函数代码生成可执行文件,生成的文件的扩展名为EXE。
C>LINK A1↙4.程序的执行建立了EXE文件后,就可以在DOS下直接执行程序了。
C>A1↙汇编程序调试工具debug命令:DEBUG调试命令介绍1.主要调试命令:(1)反汇编命令U:将存储器中的二进制数据翻译成较有意义的助记符形式,以帮助理解,如图1.5所示。
一般常用以下三种格式:a)-U↙:从当前IP处开始,对连续约32字节内容反汇编。
如对TEST.EXE,刚装入DEBUG时的IP=0000,则在输入U命令后有如下显示:-U↙13C2:0000 B402 MOV AH,0213C2:0002 B241 MOV DL,4113C2:0004 CD21 INT 2113C2:0006 B44C MOV AH,4C13C2:0008 CD21 INT 2113C2:000A 8B4606 MOV AX,[BP+06]………………13C2:0020 8B07 MOV AX,[BX]-图1.5 反汇编命令的执行结果在上例中,13C2:0000表示CS:IP的内容(其中CS的值是动态值);B402代表该处存放的二进制数据,亦即指令MOV AH,02H的机器代码;当连续约32字节的数据反汇编完后,重新回到DEBUG提示符“-”下,如果再键入U命令,则将继续对后面的内存区反汇编。
特别应该注意的是,由于反汇编命令针对内存区的二进制数据,而被调试程序仅占内存区的某一部分,故反汇编出来的内容并非全是被调试程序的代码,如上例中13C2:000A单元以后的部分,显然不是TEST.EXE的内容。
汇编语言程序设计上机步骤与调试方法
汇编语言程序设计上机步骤与调试方法在汇编语言程序设计中,上机步骤与调试方法是非常重要的,它们能够帮助程序员更好地编写和调试程序。
本文将介绍汇编语言程序设计的上机步骤以及常用的调试方法,帮助读者更好地理解和应用这些知识。
一、上机步骤1. 准备工作在开始上机之前,我们需要做一些准备工作。
首先,确认计算机已经连接好必要的硬件设备,例如键盘、显示器等。
其次,确保操作系统和开发环境已经正确安装并能够正常运行。
最后,根据需要准备好所需的汇编语言文档和程序样例。
2. 创建新项目在开始编写汇编语言程序之前,我们需要创建一个新的项目。
在项目中,我们可以组织和管理相关的文件和代码。
通常,我们会选择一个合适的集成开发环境(IDE)来创建和管理项目。
3. 编写程序在创建项目之后,我们可以开始编写汇编语言程序。
首先,我们需要了解目标机器的指令集和寄存器,以便正确地编写程序。
然后,根据需求,我们可以使用不同的指令、寄存器和内存来实现所需的功能。
在编写程序的过程中,注意代码的可读性和易于维护性是非常重要的。
4. 调试程序编写完汇编语言程序后,我们需要进行调试,以确保程序的正确性和稳定性。
调试是一个迭代过程,通常包括以下步骤:- 设置断点:在程序中设置断点,以便在特定位置停止程序的执行。
- 单步执行:通过逐条执行程序的指令,我们可以观察程序的执行过程,并检查各寄存器和内存的值。
- 监视变量:在调试过程中,我们可以监视程序中的变量值,以验证其正确性。
- 查看输出:观察程序的输出结果,与预期结果进行比较,以确定程序是否按照预期执行。
- 修复错误:如果发现程序中存在错误,我们需要对程序进行修改和调整,直到问题解决为止。
5. 运行程序在完成程序的调试之后,我们可以运行程序并观察其运行效果。
在运行过程中,我们可以测试程序的各种功能,以确保其正常工作。
二、调试方法1. 打印输出在调试汇编语言程序时,打印输出是一种常用且简单有效的调试方法。
汇编语言上机操作及程序调试的方法
汇编语言上机操作及程序调试的方法第一节在IBM-PC机上运行汇编源程序所必备的软件为了在IBM-PC机上运行汇编源程序,机器上必须有DOS操作系统环境,DOS系统盘上应有下列文件:EDIT 文件编辑程序MASM 宏汇编程序CREF 交叉引用文件处理程序LINK 链接程序LIB 库管理程序DEBUG 调试程序第二节在IBM-PC机上运行汇编源程序的步骤当用户编制好汇编语言源程序之后,要在机器上运行,必须经过以下几个步骤:1.用EDIT命令建立与修改汇编源程序文件(ASM文件)源程序就是用汇编语言的语句编写的程序,它不能被机器识别。
源程序必须以ASM为附加文件名。
至于EDIT的使用方法可以查阅手册。
2.用MASM命令汇编源文件以产生相应的目标文件(OBJ文件)源程序建立以后,必须经过汇编,转换成用二进制代码表示的目标文件,机器才可运行。
汇编是通过调用PC—DOS下的宏汇编程序MASM实现的。
汇编过程中,汇编程序对源文件进行二次扫描,如果源程序中有语法错误,则汇编过程结束后,汇编程序会指出源程序中的错误,这时,用户可以再用编辑程序来修改源程序中的错误,最后,得到没有语法错误的OBJ文件。
3.用LINK命令连接目标文件以产生可执行文件(EXE文件)由于汇编之后所得到的目标代码的存放地址并不是可执行的绝对地址,而是浮动的相对地址,因而,必须经过连接,把程序的各个模块连接在一起,或把要调用的子程序与主程序连接在一起,把相对地址变成绝对地址,形成可执行的文件。
连接是由调用PC—DOS下的LINK程序来实现的。
4.调试、运行可执行文件。
经过以上过程,在盘上有了可执行文件,则可在DOS提示符下,直接打入文件名(不用扩展名),就可以把执行文件从盘上装入内存,且立即执行此程序。
然而通常一个较复杂、较长的汇编语言源程序,希望一点错误也没有的可能性是很小的,这样就需要调用PC —DOS 支持下的DEBUG 程序,来调试我们的目标程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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命令为程序调试提供了方便。