汇编语言上机操作及程序调试的方法
汇编语言上机操作及程序调试的方法
汇编语⾔上机操作及程序调试的⽅法汇编语⾔上机操作及程序调试的⽅法第⼀节在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 程序为要调试程序准备的参数(⼀般不⽤)。
实验一、汇编语言程序的上机过程及调试
实验一、汇编语言程序的上机过程及调试<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
实验三宏汇编语言程序上机过程及调试一、实验目的:1、掌握常用工具软件 EDIT,MASM和LINK的使用。
2、伪指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP。
3、利用的 1号功能实现键盘输入的方法。
4、了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法。
二、宏汇编调试步骤:1、输入程序:用文字编辑工具(记事本或EDIT)将源程序输入,命名为*.ASM,保存到c:\masm5目录中;2、进入dos命令行:开始\运行\cmd 回车;3、进入masm目录:在dos操作符下键入 cd c:\masm5 回车;4、编译文件:在dos操作符下键入 masm *.asm,生成*.OBJ文件和*.LST文件;5、链接文件:在dos操作符下键入 link *.Obj,生成可执行文件*.exe6、运行:在dos操作符下键入 *.exe程序:data segmentmessage db 'This is a sample program of keyboard and disply'db 0dh,0ah,'Please strike the key!',0dh,0ah,'$' data endsstack segment para stack 'stack'db 50 dup(?)stack endscode segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndand al,11011111bnd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start三、实验内容:1、分析程序实现功能;2、调试所给程序;记录运行结果3、将上述程序修改为:在屏幕上显示标题并提示你按键,每按一键在屏幕上显示二个相同的字符,将小写字母改成大写字母。
汇编语言的编程步骤与调试方法
汇编语言的编程步骤与调试方法汇编语言是一种底层的程序设计语言,直接操作计算机硬件。
在编写汇编语言程序时,需要经过一系列的编程步骤和调试方法,以确保程序的正确性和可靠性。
下面是关于汇编语言的编程步骤和调试方法的一些详细介绍。
一、编程步骤:1.定义程序目标:明确程序的功能、输入和输出。
2.设计算法和逻辑:将目标转化为汇编语言指令,设计算法和逻辑流程。
3.选择寄存器和指令:根据算法和逻辑需求,选择合适的寄存器和指令。
4.编写指令:根据算法和逻辑需求,使用正确的指令来编写汇编语言程序。
5.汇编编译:使用汇编编译器将汇编代码翻译成机器代码。
6.汇编连接:使用链接程序将机器代码和其他必要的文件(如库文件)连接成可执行文件。
7.调试和测试:进行调试和测试,确保程序的正确性和可靠性。
8.优化和改进:根据测试结果,对程序进行优化和改进。
二、调试方法:1.插入调试指令:在程序中插入一些特定的调试指令,可以输出一些关键的变量或标志位,以便观察程序的执行路径和结果。
2.单步执行:逐条执行程序代码,并观察每条指令的执行结果和影响,以及寄存器和存储器的变化情况。
3.观察寄存器和存储器:利用调试器观察程序执行过程中的寄存器和存储器的变化情况,以确定代码逻辑是否正确。
4.打印和日志输出:通过在程序中插入打印和日志输出的语句,可以观察关键变量和代码的执行情况,以帮助调试。
5.内存和寄存器状态检查:检查程序执行过程中的内存和寄存器状态,特别是对一些关键变量和标志位进行监视,以便发现问题所在。
6.脱机调试:将程序转储至仿真器或虚拟机,并在其中进行无风险的调试,以排查错误。
三、汇编程序调试常见问题及解决方法:1.程序崩溃或死循环:检查程序中循环和分支语句的逻辑判断条件是否正确,以及循环内的寄存器和内存操作是否正确。
2.内存访问错误:查看程序访问的内存地址和存储器的范围是否正确,并检查程序中的指针操作是否正确。
3.寄存器使用错误:检查程序中使用的寄存器是否正确选择和使用,尤其是在多个函数调用的情况下,需要注意寄存器的保存和恢复。
实验一汇编语言程序上机过程与调试
实验⼀汇编语⾔程序上机过程与调试实验⼀汇编语⾔程序上机过程与调试(基本指令实验)⼀、实验⽬的1、熟悉80X86寻址⽅式及基本指令的功能,进⼀步理解和巩固课堂学习的内容。
2、掌握汇编语⾔程序设计上机过程和汇编语⾔源程序结构,为后续汇编语⾔程序设计打好基础。
3、熟悉Masm for windows集成实验环境,以及DEBUG、CODEVIEW调试⼯具的使⽤⽅法。
⼆、实验预习要求1、熟悉汇编语⾔程序设计上机步骤,熟悉DEBUG、CODEVIEW调试⼯具的使⽤⽅法。
2、复习80X86操作数寻址⽅式及基本指令。
3、了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运⾏环境的问题除外),以便在实验时进⾏验证。
三、实验内容(⼀)、读懂下列源程序,使⽤Masm for windows集成实验环境⽣成名为EX11.ASM的源程序,汇编⽣成EX11.OBJ⽂件和EX11.LST⽂件,连接⽣成EX11.EXE⽂件;⽤EDIT 或记事本打开EX11.LST⽂件,了解.LST⽂件包含的信息;使⽤DEBUG 和CODEVIEW调试⼯具单步执⾏EX11.EXE程序,注意观察IP值的变化,并回答下列问题。
1. 程序装⼊后,代码段寄存器CS的内容为0B68 H,代码段第⼀条可执⾏指令:MOV AX,DATA对应的机器代码为B81A0B H,它是⼀个3 个字节的指令,注意观察执⾏该指令时IP值的变化情况,该指令源操作数DATA的寻址⽅式是直接寻址,其值为0B6A 。
2. 执⾏完MOV DS,DA TA指令后,DS的内容为0B6A H,源程序在数据段中定义的数据82H,68H,88H被装⼊的存储单元的物理地址分别是0B6A0 H,0B6A1H,0B6A2H.3. 程序中第⼀条ADD AL,[BX]指令对应的机器代码为0207 H,它是⼀个2个字节的指令,注意观察执⾏该指令时IP值的变化情况;该指令源操作数的寻址⽅式是直接寻址,该操作数所在存储单元的逻辑地址(DS):(BX)为0B6A:0001 ,其物理地址为0B6A1H;执⾏完该指令后(AL)= EA H,CF= 0 ,OF= 0 ,ZF= 0,SF= 1 ,AF= 0 ,PF= 0 ;若两操作数为⽆符号数,计算结果是否正确?z 若两操作数为带符号数,计算结果是否正确?z若计算结果正确,结果是正数还是负数?f4.执⾏完第⼆条ADD AL,[BX]指令后(AL)= 72 H,CF= 1 ,OF= 1 ,ZF= 0 ,SF= 0,AF= 1 ,PF= 1 ;若两操作数为⽆符号数,计算结果是否正确?B 若两操作数为带符号数,计算结果是否正确?B5.指令MOV SUM,AL中,⽬的操作数的寻址⽅式为直接寻址。
汇编语言的编程步骤与调试方法
汇编语言得编程步骤与调试方法一、汇编源程序得建立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文件,观察程序运行结果,如果存在错误,需要进行调试。
汇编语言上机调试步骤
(A+B)*(C-D)为例
1.编辑原文件 编辑原文件
A)在cmd下,用edit编写扩展名为.asm的原文 件,知道原程序文件存放的路径。 B)在记事本下编写原程序,扩展名为.asm。
2.生成 生成.obj文件 生成 文件
利用汇编程序masm把原文件生成obj文件。 具体步骤如图:
使用debug 把应用程序调入内存 u反汇编命令
注意观察 AX,DS
r 显示或改变一个或多个 CPU 寄存器的内容。
注意观察 AX,DS 单步调试命令(或跟踪命令)
下一步执行的指令
注意观察DS D(转储)示一定范围内存地址的内容。
观察这些 数据
观察这些 数据
观察AX的低8位
观察A 果
在运行下输入cmd,进入到masm下面: ,进入到 下面: 在运行下输入 下面
原程序路径 及原程序
生成的目标程序及 其位置
原程序是否有语法错误,如果没 有生产obj文件,否则不能生成 obj文件。
Link生成 生成exe文件 生成 文件
link命令输入 obj文件所在位置
exe文件所在位置
调试程序观察值
5.5汇编程序上机调试过程
TTT:
MOV INC JMP
[BX+SI],ALFra bibliotekBBB:
MOV MOV MOV MOV MOV MOV MOV INT JMP
PPP: CODE
MOV INT ENDS END
AX,4C00H
EDIT建立汇编语言源程序 5.6.1 用EDIT建立汇编语言源程序 在 DOS 状 态 下 , 调 用 EDIT 编 辑 程 序 建 立 文 件 名 为 的汇编源程序,如图5-8所示。 C:\>EDIT WANG.ASM↙
装入磁盘上指定内容到存储器 装入指定文件 把数据写入磁盘指定的扇区 把数据写入指定的文件
-Q
退出DEBUG
§5.6 汇编语言程序运行实例
本节中通过一个汇编语言源程序的实际例子,来了解汇 编语言源程序的建立、汇编、连接、运行的过程。 给出的程序是将键盘输入的小写字母转换成大写字母的 程序并显示在屏幕上。设定源程序名为WANG.ASM。
键入以下命令: C:\>EDIT ABC.ASM↙ 此时屏幕的显示状态如图5-4所示。
5.5.3将源程序文件汇编成目标程序文件 在对源程序文件进行汇编时,汇编程序将对.ASM文件进 行二遍扫描。如果源程序文件中出现语法错误,则汇编结 束后将指出源程序中的错误,这时可用编辑程序再次修改 源程序中的错误,然后再次汇编,直到最后得到没有错误 的目标程序,即扩展名为.OBJ文件。 一般情况下,汇编程序的主要功能有以下3点: (1) 检查源程序中存在语法错误,并给出错误信息。 (2)源程序经汇编后没有错误,则产生目标程序文 件,扩展名为.OBJ。 若程序中使用了宏指令,则汇编程序将展开宏指令。
1.DEBUG程序的调用 . 程序的调用 在DOS的提示符下,可以直接键入命令,如图5-7所示 C:\>DEBUG ABC.EXE↙
汇编上机过程及DEBUG调试
汇编语言的一般上机操作过程一、上机前的软件准备●MS-DOS操作系统(如:MSDOS6.2、MSDOS7.0等)●文本编辑器(如:记事本、等)●汇编程序(如:MASM.EXE、ASM.EXE等)●连接程序(如:LINK.EXE等)●调试程序(如:DEBUG.EXE等)二、汇编语言程序的建立过程在编辑软件支持下,将源程序输入到计算机中。
注意:汇编语言源程序的扩展名为.ASM。
可使用任意一种文本编辑工具来建立和编写汇编语言源程序,例如,Word、Notepad、记事本等。
在MS-DOS下也可以使用其自带的文本编辑器EDIT。
使用方法是在DOS提示符下输入EDIT后回车,进入EDIT的操作界面后即可编写汇编语言源程序,完成编写后,将文件保存后缀名为.ASM的汇编源文件。
2.利用宏汇编程序对汇编源程序.ASM进行汇编,产生.OBJ文件利用宏汇编程序MASM对汇编源程序(扩展名为.ASM)进行汇编,产生扩展名为.OBJ的可重定位的目标代码。
MASM是一个宏汇编软件,使用时后面跟所要汇编的源程序名即可。
格式如下:C:\>MASM filename(.asm) 回车当屏幕上显示一些版权信息后会出现几个提示信息,如:要求输入目标文件名;询问是否建立列表文件(扩展名为.LST);询问是否建立交叉索引文件(扩展名为. CRF)。
Object filename [filename.OBJ]:回车Source listing [NUL.LST]:回车Cross-reference [NUL.CRF]:回车当上述问题回答完毕,MASM即开始汇编工作。
MASM对源程序进行汇编将采用两遍扫描方式,每一遍扫描都以遇到END伪指令作为结束点。
第一遍扫描是检查名字并产生一个符号表,确定每个变量名和符号的相对位置;第一遍扫描就将产生目标文件,并根据用户需要产生列表文件和交叉索引文件。
最后,经汇编后的上述源文件将生产3个文件,其中目标文件是一个二进制文件,供连接使用;列表文件是一个文本文件,它会列出源程序及相应的目标程序清单,同时给出符号表,表中分别给出段名、段的大小属性。
汇编语言程序的编辑、汇编、连接和调试
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文件。
实验一-8086汇编语言上机调试及基本操作.
实验一: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和机器码。
汇编语言程序的上机过程及调试.
三、连接程序
用连接程序(LINK)将若干目标模块连同库子程序 连接在一起,产生可执行文件(文件名.EXE)
四、运行调试 DEBUG
DEBUG 程序是专门为汇编语言设 计的一种调试工具,它通过单步、跟 踪、断点和连续等方式为程序员提供 了非常有效的调试手段。
格式: DEBUG [驱动器][路径][文件名][参数]
4. 汇编语言程序的上机过程及调试
编辑汇编语言源程序
汇编源程序 连接程序 运行调试
一、编辑汇编语言源程序
使用一种文本编辑软件(word、记事本、写 字板等),编辑保存一个 “文件名.ASM ”的 汇编语言源程序文件。
二、汇编源程序
用宏汇编(MASM)对汇编源程序进行汇编, 产生目标程序(文件名.OBJ)
求:
AX=___________ CX=___________
BX=___________
MOV AX,1200H
例 2:
MOV BX,3400H MOV CX,5600H
PUSH CX
PUSH AX PUSH BX POP CX POP AX
POP BX
AX=___________ CX=___________ BX=___________
修改内存单元内容 运行
装入 文件名 推出 显示和修改寄存器内容 跟踪 反汇编
写盘
W
把指定地址或CS:100开始的内存块(块字节长度由 BX:CX指定)以N命令给出的文件名写入磁盘
MOV AXቤተ መጻሕፍቲ ባይዱ1234H
例 1:
MOV BX,4321H MOV CX,AX
MOV AX,BX
ADD BX,CX HLT
DEBUG主要命令表
汇编语言的编程步骤与调试方法
汇编语言的编程步骤与调试方法汇编语言作为一种低级编程语言,具有高度的灵活性和效率,尤其适用于对计算机底层操作进行精确控制的应用。
本文将介绍汇编语言的编程步骤与调试方法。
一、编程步骤1. 设计算法:编程之前,首先需要明确编写代码的目的和功能。
根据需求,设计出合适的算法,确定程序的输入、输出等基本要素。
2. 选择汇编语言指令集:根据计算机的硬件平台和操作系统,选择合适的汇编语言指令集,如x86、ARM等。
3. 编写代码:根据算法,使用汇编语言指令集编写代码。
汇编语言使用助记符来表示指令和操作数,需要了解指令的语法和使用方法。
4. 组织程序结构:在编写代码时,需要按照一定的结构组织程序,包括定义数据段、代码段等,并进行正确的程序控制流程设计。
5. 完善程序功能:根据需求,完善程序的各项功能。
可以包括输入输出处理、数据操作、逻辑判断、循环处理等。
6. 调试和优化:编写完成后,进行程序的调试和优化。
可以通过调试工具、打印输出等方式,定位和解决程序中的错误和问题。
同时,优化程序的性能,提高代码的执行效率。
7. 文档记录:在编写代码的过程中,逐步记录代码的功能、变量定义、重要的注释等信息,便于他人阅读和维护。
二、调试方法1. 单步调试:单步调试是指逐条执行汇编语言程序,观察每条指令的执行情况。
通过单步调试可以查看寄存器的值、内存的状态等信息,以便定位错误。
2. 设置断点:在需要观察或调试的代码行上设置断点,运行程序时会在断点处停止执行,可以查看此时程序的状态,并逐步分析代码的执行流程。
3. 查看寄存器和内存:在调试过程中,可以查看寄存器和内存中的值,以判断程序是否按照预期的方式处理数据。
通过查看寄存器和内存的值,可以分析代码的执行过程和结果。
4. 打印输出:可以通过在程序中插入打印输出语句,输出关键变量的值,以便观察程序的执行过程和数据的变化。
5. 利用调试工具:使用专业的调试工具可以更加方便地进行汇编语言程序的调试。
汇编语言程序调试及工具软件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. 准备工作在开始上机之前,我们需要做一些准备工作。
首先,确认计算机已经连接好必要的硬件设备,例如键盘、显示器等。
其次,确保操作系统和开发环境已经正确安装并能够正常运行。
最后,根据需要准备好所需的汇编语言文档和程序样例。
2. 创建新项目在开始编写汇编语言程序之前,我们需要创建一个新的项目。
在项目中,我们可以组织和管理相关的文件和代码。
通常,我们会选择一个合适的集成开发环境(IDE)来创建和管理项目。
3. 编写程序在创建项目之后,我们可以开始编写汇编语言程序。
首先,我们需要了解目标机器的指令集和寄存器,以便正确地编写程序。
然后,根据需求,我们可以使用不同的指令、寄存器和内存来实现所需的功能。
在编写程序的过程中,注意代码的可读性和易于维护性是非常重要的。
4. 调试程序编写完汇编语言程序后,我们需要进行调试,以确保程序的正确性和稳定性。
调试是一个迭代过程,通常包括以下步骤:- 设置断点:在程序中设置断点,以便在特定位置停止程序的执行。
- 单步执行:通过逐条执行程序的指令,我们可以观察程序的执行过程,并检查各寄存器和内存的值。
- 监视变量:在调试过程中,我们可以监视程序中的变量值,以验证其正确性。
- 查看输出:观察程序的输出结果,与预期结果进行比较,以确定程序是否按照预期执行。
- 修复错误:如果发现程序中存在错误,我们需要对程序进行修改和调整,直到问题解决为止。
5. 运行程序在完成程序的调试之后,我们可以运行程序并观察其运行效果。
在运行过程中,我们可以测试程序的各种功能,以确保其正常工作。
二、调试方法1. 打印输出在调试汇编语言程序时,打印输出是一种常用且简单有效的调试方法。
实验三 汇编语言程序上机操作方法
一 T AX=0233 BX=0000 CX=0011 DX=0038 SP=0000 BP=0000 SI=0000 DI=0000 DS=0B65 ES=0B65 SS=0B75 CS=0B75 IP=000B NV UP EI PL NZ NA PO NC_ 0B75:000B CD21_ INT_____21_ ・ 在_DEBUG_状态下执行程序 一 G 8 Program terminated normally ・ 退出 DEBUG 一 Q_ 2. 比较字符串_bjchx_ 编写一程序,比较两个字符串_string1_和 _string2_所含的字符是否相同,若相同则显示‘Match’ ,否则,显 示‘No_Match’ 。 参考程序如下:(程序名:SY3-2.ASM) D_SEG SEGMENT STRING1 DB '12345' STRING2 DB '1a345' MATCHSTR DB 'MATCH$' NOMATCHSTR DB 'NO MATCH$'
实验注意事项 1.如果使用的是 MASM5.1 的汇编工具,应包括以下文件:MASM 宏汇 编程序文件 LINK 连接程序文件CREF 索引程序文件(也可不用) EDIT 全屏幕文本编辑程序(或其他文字处理系统) 2.能用宏汇编通过的汇编语言源程序与在 DEBUG状态下运行的汇编 语言程序不同,必须是一个完整的程序,有各逻辑段的定义,而在 DEBUG 状态下运行的汇编语言源程序只是其程序段。 3.连接程序 LINK 是把一个或多个独立的目标程序模块装配成一个 可重定位的可执行文件,扩展名为.EXE。 实验与思考 1. 机器语言(Machine Language)、汇编语言(Assembler Language) 和高级语言(High_Level_ Language)的区别? 2.DOS 2 号功能调用和 DOS 9号功能调用的区别? 3.利用 DEBUG 调试程序过程中,应注意什么?
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言上机操作及程序调试的方法第一节在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 程序,来调试我们的目标程序。
被调试程序在DEBUG 的管理下,可以单步执行程序,也可以设置断点,可以显示和修改CPU 内部寄存器和标志位的内容等,这样就便于寻找程序中的错误。
在发现了错误以后,通常还要重复上述的编辑、汇编,连接和调试程序的全过程,直至程序运行正确为止。
已调试的目标程序,任何时候都可在PC DOS 下,通过打入文件名即可运行它。
上机过程示意图如下: 汇编语言程序编辑程序汇编程序连接程序调试程序有错吗?运行程序Y N图2-1 汇编语言程序上机过程流程为了便于操作,下面将上机操作全过程中的主要部分分别加以介绍,编辑程序因为使用普遍,在此不做介绍。
第三节 宏汇编程序经过编辑命令建立和修改后存盘的汇编语言源程序(扩展名为.ASM),要在机器上运行,必须先由汇编程序把它汇编为机器码的目标程序。
经过IBM 汇编程序汇编后的程序在盘上建立三个文件:一个是扩展名为.OBJ 的目标程序。
在此程序中,操作码部分已变为机器码,但操作数地址只是一个可浮动的相对地址,而不是内存中的绝对地址。
第二个是扩展名为.LST 的汇编列表文件,它把源程序(包括注释)和汇编后的目标程序都制表,可以打印出来供检查用。
第三个是扩展名为.CRF的符号交叉列表文件,可以对符号进行前后对照。
在汇编时,汇编程序对要不要建立这些文件,有如下提示:例如对exam.asm文件进行汇编:在DOS状态下,打入MASM调用宏汇编程序,屏幕显示与操作如下:C>MASM ↙此时,屏幕上出现如下信息:The IBM Personal Comporter MACRO Assemble,1.00(C)Copyright。
IBM Corp 1981.Source filename[.ASM]:exam ↙Object filename[exam.Obj]:↙Source Listing[Nul.1st]:exam ↙Cross reference[Nul.crf]:exam ↙Warning SeveresErrors Errors0 0从上面操作过程中可以见到,汇编程序的输入文件就是:用户编写的源程序,它必须以ASM为文件扩展名,在汇编调入后,先显示版本号,然后出现第一行提示,询问要汇编的源文件名。
用户输入文件名,则出现第二个提示,询问目标程序的文件名,括号内的为机器规定默认的(default)文件名,通常直接按回车,表示采用默认文件名,接着出现第三个提示,问是否要建立可打印文件,若要,打入文件名,若不要,可直接回车。
最后出现第四个提示,询问是否要建立交叉索引文件,若需要则打入文件名,若不要直接回车。
在回答了第四个询问后,汇编程序就对源程序进行汇编。
汇编过程结束时,如果程序有错误会给出源程序的警告性错误(warning errors)和严重错误(severs errors)。
前者指出一般性错误,后者指出语法性错误。
当存在这两类错误时,屏幕上除指出错误个数外,还给出错误信息代号。
程序员可以通过查代码手册弄清楚错误的性质。
如果汇编过程中,发现有错误,则程序员应该重新用编辑命令修改错误,再进行汇编,最终直到汇编正确通过。
要指出的是汇编过程只能指出源程序中的语法错误,并不能指出算法错误和其他错误。
注意:汇编后建立的.CRF文件是不能单独使用的,若需要了解源程序中的符号(包括变量)在定义和引用时的情况,还要调用CREF文件对CRF文件进行处理,生成.REF文件后,才能打印(或显示)输出.其过程如下:C> CREF ↙Cref filename [.CRF]: exam ↙List filename [exam.REF]: ↙在DOS状态下,打入CREF,就会调入交叉引用文件处理程序CREF。
CREF 运行时,首先询问要处理的文件名。
在键入文件名后,出现第二个提示,询问.REF文件名,可用回车承认默认的.REF文件名。
于是就建立了一个扩展名为.REF的文件,然后返回DOS状态。
在DOS状态,用TYPE命令打印此文件,得如下显示信息:Symbol Cross_Reference (# is definition)Cref_1BUF * * * * * * * * * * * 8# 16CODE * * * * * * * * * * 12# 13 21DATA * * * * * * * * * * 7# 11 13 14STACK * * * * * * * * * * 1# 6 13START * * * * * * * * * * 14# 22其中,有#号者是此符号被定义时的语句行号,后面是引用此符号的语句行号。
第四节连接程序(Link)由汇编程序建立的目标码文件必须经过连接以后,才能成为可执行文件。
连接程序并不是专为汇编语言设计的。
利用它可以把若干个模块连接在一起,这些模块可以是汇编程序产生的目标码文件,也可以是其它高级语言编译程序产生的目标文件。
在连接过程中,又建立了几个文件。
具体操作如下(以exam.obj进行连接为例):C>LINK ↙此时,屏幕上出现如下信息:IBM 5552 multistation Linker 2.00(C)Copyright IBM Corp.1985 Corp.1985Object modules[.OBJ]exam ↙Run File[exam.EXE]: ↙List File[NUL.MAP]:exam ↙Libraries[.LIB]: ↙Warning: NOSTACK Segment首先询问要连接的目标文件,操作员键入文件名作为回答(此处是exam)。
如果有多个要连接的目标文件,应一次键入。
各目标文件名之间用“+”号隔开。
第二个提示询问要产生的可执行文件的文件名,一般直接回车就采用了括号内规定的默认文件名。
第三个提示询问是否要建立地址分配文件。
键入文件名再回车表示要建立,直接按回车键表示不要建立。
最后询问是否用到库文件,如果没有库文件,则直接键入回车即可(如果用户用到库文件,则键入库文件名。
建立库文件的方法见第五节)。
回答以上问题后,连接程序便开始进行连接。
若连接过程有错,则显示错误信息。
若有错误就要重新调用编辑程序修改源文件,然后重新汇编、连接,直至无错。
LINK过程产生两个输出文件,一个是扩展名为EXE的执行文件.产生此文件当然是LINK过程的主要目的,另一个是扩展名为MAP列表分配文件,有人也称它为映象文件,它给出每个段在内存中的分配情况。
比如某个列表分配文件为如下内容:C>TYPE exam.Map ↙Warning:No STACK SegmentStart Stop Length Name00000H 0015H 0016H CODE00020H 0045H 0026H DATA00050H 0061H 0012H EXTRAPrograme Entry point at 0002:0000由上面看出,变量CODE的起始地址是0000H,结束地址是0015H,字节数是16H,以此类推。
另外从LINK过程提示信息中,可看到最后给出一个“无堆栈段”的警告性错误,这并不影响程序的执行。
当源程序中设置了堆栈段,则无此提示信息。
第五节子程序库的建立方法在处理比较复杂的问题时,往往需要把某些经常被反复调用的子程序汇编成目标模块,集合在一起组成一个“子程序库”(.LIB),以方便调用。
建立子程序库是调用DOS的库管理程序LIB来实现的。
库管理程序LIB的启动方式分为提问方式、命令方式、文件方式三种,此处仅介绍提问方式。
在DOS状态,键入“LIB↙”之后,DOS把LIB装入主存并向用户提问,用户根据要求键入相应的回答。
LIB的提问信息及其回答如表1所示,回答时可用的命令字符如表2所示。
表1 LIB的提示信息及回答表2 库管理命令字符下面举例说明子程序库的建立方法.建立一子程序库WAN.LIB,将子模块QUEUE、F10T2、F2T10放入该库中,其操作步骤如下:⑴建立它们的源文件QUEUE.ASM、F10T2.ASM、F2T10.ASM。
⑵将这三个源文件模块分别汇编,生成目标文件QUEUE.OBJ、F10T2.OBJ、F2T10.OBJ。
⑶调用库管理程序LIB建立子程序库WAN.LIB,并将三个目标文件加入库中,既可逐个加入,也可一次加入。
如果逐个加入,可用以下方法(一):C> LIB↙Microsoft (R) Library Manager Version 3.04Copyright (C) Microsoft Corp 1983,1984,1985,1986.All rights reserved.Library name: WAN↙Library does not exist. Create? Y↙Operations: +QUEUE↙List file: ↙C> LIB↙Microsoft (R) Library Manager Version 3.04Copyright (C) Microsoft Corp 1983,1984,1985,1986.All rights reserved.Library name: WAN↙Library does not exist. Create? Y↙Operations: +F10T2↙List file: ↙C> LIB↙Microsoft (R) Library Manager Version 3.04Copyright (C) Microsoft Corp 1983,1984,1985,1986.All rights reserved.Library name: WAN↙Library does not exist. Create? Y↙Operations: +F2T10↙List file: ↙如果一次加入,可用如下方法(二):C> LIB↙Microsoft (R) Library Manager Version 3.04Copyright (C) Microsoft Corp 1983,1984,1985,1986.All rights reserved.Library name: WAN↙Library does not exist. Create? Y↙Operations: +QUEUE+F10T2+F2T10↙List file: ↙库文件建立以后,库中的子程序可以方便地被其它程序调用。