文档视界 最新最全的文档下载
当前位置:文档视界 › 汇编语言上机操作及程序调试的方法

汇编语言上机操作及程序调试的方法

汇编语言上机操作及程序调试的方法第一节在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 Severes

Errors Errors

0 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_1

BUF * * * * * * * * * * * 8# 16

CODE * * * * * * * * * * 12# 13 21

DATA * * * * * * * * * * 7# 11 13 14

STACK * * * * * * * * * * 1# 6 13

START * * * * * * * * * * 14# 22

其中,有#号者是此符号被定义时的语句行号,后面是引用此符号的语句行号。

第四节连接程序(Link)

由汇编程序建立的目标码文件必须经过连接以后,才能成为可执行文件。连接程序并不是专为汇编语言设计的。利用它可以把若干个模块连接在一起,这些模块可以是汇编程序产生的目标码文件,也可以是其它高级语言编译程序产生的目标文件。在连接过程中,又建立了几个文件。具体操作如下(以exam.obj进行连接为例):

C>LINK ↙

此时,屏幕上出现如下信息:

IBM 5552 multistation Linker 2.00(C)Copyright IBM Corp.1985 Corp.1985

Object 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 Segment

Start Stop Length Name

00000H 0015H 0016H CODE

00020H 0045H 0026H DATA

00050H 0061H 0012H EXTRA

Programe 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.04

Copyright (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.04

Copyright (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.04

Copyright (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.04

Copyright (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: ↙

库文件建立以后,库中的子程序可以方便地被其它程序调用。例如,当子程序模块QUEUE、F10T2、F2T10入子程序库WAN.LIB之后,主模块MAIN.ASM 汇编后可按如下方式连接(假定主模块的目标文件为MAIN.OBJ,且主模块中调用子模块QUEUE、F10T2及F2T10):

C> LINK↙

Microsoft 8086 Object Linker

Version 2.44 (C) Copyright Microsoft Corp 1983

Object Modules [.OBJ]: MAIN↙

Run File [MAIN.EXE]: ↙

List File [NUL.MAP]: ↙

Libraries [.LIB]: WAN↙

连接后得到可执行文件MAIN.EXE。

第六节DEBUG程序调用及汇编语言程序调试方法调试程序DEBUG是DOS支持的又一种系统软件,主要用于汇编语言程序的

调试。汇编和连接过程只能查出源程序的语法错误,不能查出功能上的错误和程序不完善的地方。DEBUG程序为用户提供多种命令,大致有:显示和修改寄存器和存贮单元的内容;执行程序中任意一段或一条指令;汇编单条源语句和反汇编机器码指令;查找字符代码;端口的输入和输出;文件装入内存和写入磁盘等。用户利用这些命令可以查出任何程序功能上的错误。下面说明DEBUG 程序的启动方法和主要命令意义。

一、DEBUG程序的启动

DEBUG程序有两种启动方法。DEBUG程序是在DOS盘上的一个独立的可执行程序(扩展名为.COM),所以,DEBUG程序的第一种启动方法就是把它看作和一般的可执行程序一样,只要打入DEBUG和回车键,就可以把它装入内存。但是这样启动只把DEBUG程序本身装入内存并进入等待DEBUG命令状态,还没有把要调试的程序装入内存。第二种启动DEBUG的程序的方法是一次相继装入DEBUG程序和要调试的程序。打入的命令格式如下:

DEBUG[d:][path]filename[.ext][parml]Lparm2]

其中的Filename是要调试程序的文件名,可选项[d:][path]和[.ext]分别是要调试程序的所在盘符、路径和扩展名。可选项[parml]和[parm2]是DEBUG 程序为要调试程序准备的参数(一般不用)。

例进入DEBUG程序并装入要调试程序,要调试程序在A驱动器中。其操作如下:

C>DEBUG A:ABC.EXE (进入DEBUG,并装配ABC.EXE)

此时屏幕上出现一个短线,这表示可以使用DEBUG命令了。

二、调试命令

在说明每个命令之前,先说明一些共同信息:

■DEBUG命令都是以一个英文字母开头,后面跟一个或多个参数。

■命令字母和参数可用大写或小写或混合形式。

■命令字母和参数中,相邻两个十六进制之间必须用逗号或空格分开.其它各部分之间有无空格或逗号都可以。

■执行任何命令期间都可用Ctrl+Break键方法结束命令的执行。

■打入命令字母和参数后必须打入回车键才能使命令有效。

■如果执行某种命令期间在显示器或打印机上的很长的输出,可以按Ctrl+Numlock键暂停继续显示,使显示屏幕停下来供观察。再按任何其它键,则继续显示输出。

■在DEBUG程序状态下,控制键和DOS支持的编辑键继续有效。

■如果输入的命令有错误,将显示出来。例如:

dcs:100cs:110

error

这说明d命令的第二个address参数格式不对,它只能包括偏移地址部分,不能再有段地址部分。它发现S不是十六进制数字符。

■DEBUG程序状态光标提示符为“-”。

下面按命令功能相近关系分组说明几个主要命令功能和使用的方法:

(一)显示和修改寄存器或存贮单元的有关命令

1.R(Register)命令

R命令有三种功能:

●显示单个寄存器内容并等待修改这个寄存器内容;

●显示CPU内部的所有寄存器的内容和全部标志位的状态;

●显示和修改所有标志位的状态。

⑴显示和修改单个寄存器内容命令

命令格式:R [寄存器名]

说明:显示单个寄存器内容。R之后输入寄存器名符。例如命令

- RAX↙

将显示出AX的内容和在下一行显示出冒号。

AXF1E4

:-

上面的F1E4是AX的当前内容。如果在冒号后打入要修改的内容,然后打回车键,这时AX即修改为新值;如果不输入新值只打回车键,则不改变原值。

⑵显示CPU内部的所有寄存器的内容和全部标志位的状态命令

命令格式:R

说明:显示所有寄存器和标志位值。例如:

-R↙

系统响应给出格式如(值是假设的):

AX=0E00 BX=00FF CX=0007 DX=01FF SP=0390 BP=0000 SI=0050 DI=0000 DS=04BA ES=04BA SS=04BA CS=04BA IP=01lA NV UP DI NG NZ AC PE NC

04BA:0HA CD21 1NT21

前几行显示的是寄存器内容和8个状态标志位的状态,最后一行显示是下面将要执行的指令地址,它对应的机器码和汇编语句形式。8位状态标志位的状态不是以0或1的形式显示的,而是用两个字母显示的。字母和状态对应关系如表所示:

⑶显示和修改标志位状态的命令

命令格式: RF

系统响应是显示8个状态位。例如:

OV DN EI NG ZR AC PE CY_(最后为光标位置)如果打入回车键,将不改变标志位的状态;也可以打入一个或多个新的状态符,重新设置其状态。输入时各标志的次序无关,输入的各个标志之间可以没有空格。如从光标位置开始打入:

PONZDINV

将改变第一、三、五、七个状态位的值。

2.D(Dump)命令

用途:显示某个存储区的内容。

格式:D[address]或D[range]

存储单元的内容用两种方式显示:—种是每一个存储单元的内容(每一字节)用两位16进制数显示;另一种是用相应的ASCII字符显示,句号(.。?)表示不可显示的字符。

●如果取命令格式:D

后面无地址或范围参数,将从前次命令显示后的下一个单元开始显示40H字节或80H字节的内容。

●如果取命令格式:D [range]

则显示指定地址范围各单元的内容。

3.E(Enter)命令’

用途:显示和修改存贮单元的内容。

格式1:E [address] [list]

将内容表包括的数值和字符串的ASCII码依次置入从指定地址开始的存贮单元。例如:

E DS:100 F3“XYZ”8D

从内存单元DS:100H至DS:104H的5个单元中依次置入F3H(1个单元),XYZ的ASCII码(3个单元)和8DH(1个单元)。

格式2:E [address]

显示指定地址单元的内容,并等待输入新的值。

输入新的值过程如下:

输入一个字节的十六进制数,以替换原单元中的内容,然后采取下列三种操作的一种。

(1)按空格键,则上一个替换要求完成,且显示出下一个单元的地址和原有的内容。如果想改变它,可直接输入要修改的值,再按空格键,……,这样,就可以连续地进行修改。若某一单元的内容不需要修改,可直接按空格键。

(2)按“—”号键,将在下一行显示前一单元的地址和内容。如果想改变它,可直接输入要修改的值,然后再按“—”,则又显示前一单元的地址和内容,……,这样就可连续地进行反向修改。若所示的前一单元的内容不需要修改,可直接按“—”键。

(3) 按回车键将结束E命令。

命令参数中[地址]如果不指明段地址,则默认段地址为DS。

4.F(File)命令

用途:在指定的存贮地址范围内置入内容表给出的数值或字符代码。

格式:F [range] [list]

说明:如果list包含的字节少于range包括的单元数,则把list的字节重复置入指定的地址区,直到指定的范围都置入新值为止。如果list包含的字节数多于range包括的单元数,则多出的字节被忽略。

如果range参数中不指明段地址,则默认段地址为DS。例如:

F4BA:100L5 F3'XYZ'8D

则从04BA:100至04BA:104的5个单元依次装入F3 58 59 5A 8D。

(二)汇编与反汇编命令

1.A(Assemed) 命令

用途:先显示汇编的内存地址,等待用户输入一条助记符指令。用户输入指令并按回车后,DEBUG将把这条指令对应的机器码顺序存放在指定的内存单元中,并提示下一地址,等待用户继续输入下一条指令。若直接按回车,则退出A命令;若在输入指令时语句有错误,则显示出错信息,仍然提示当前的汇编地址,用户可重新输入指令。

格式:A [address]

说明:若没有指定地址,则从“CS:100”单元开始存放。

2.U(Unassemed)命令

用途:对于存贮器内的指令机器码进行反汇编,结果显示的语句和源程序语句会大部分相同,由于不能反汇编出标号、标识符等信息,所以与源程序语句有些差别。但在调试程序时,这个命令常常用于对照机器码指令与源程序是否一致。

格式:U[address]或U[range]

说明:反汇编过程产生的输出包括指令的开始地址,指令的机器码和指令的源语句。

例:-U:从当前地址开始反汇编

也可以从某个地址处开始反汇编

例:-U 200:从CS:200处开始反汇编

(三)运行命令

1.G(Go)命令

用途:执行正在调试的程序。

格式:G[=address][address[address…]]

说明:等号及第一个address参数指明程序执行的起点。后面的一个或多个address参数是设定的断点。这个命令可取以下三种格式:

(1)G不打入任何参数。这时从当前指令,即从CS:IP指定的地址开始执行,并一直执行下去。

(2)G=address打入等号和程序执行的起始地址。程序开始执行后一直执行下去。

(3)G[=address]address[address…]。这种格式意味着起始地址可取(1)或(2)的规定,可设一个或多个断点地址。DEBUG程序中允许最多可设置10个断点,这些断点地址的次序是任意的。所谓断点是指程序执行到这个地址时立即停止,并显示CPU内部所有寄存器的内容以及全部标志位的状态和一条将执行的指令。主程序有两个或多个分支时,可以在每个分支上设置一个断点。这样可以观察每个分支执行的情况。为此可以在G命令中设置多个断点。当然在一次运行时,只能停在其中的一个断点上。程序员心中确定了断点地址后,就可以用G命令来设置断点。比如,想把断点设置在0120H处,则打人命令: _G0120

此时,程序在0120H处停下,并显示出所有寄存器以及各标志位的当前值,在最后一行还给出下一条将要执行的指令地址、机器语言和汇编语言。程序员可以从显示的寄存器的内容来了解程序运行是否正确。

2.T(Trace)命令

用途:执行一条或多条指令,每执行一条指令将显示所有寄存器的内容和状态标志位的状态。

格式:T=[address][Value]

说明:等号及address参数指明执行的开始地址,Value参数指明执行指令的条数。

例如:—T3:从当前地址往下执行三条指令

2.P(Process)命令

用途:执行子程序调用,或一个循环指令,或一个中断指令,或一个重复字符串指令,在下一个指令时停止。

格式:P[=address][value]

说明:当调用一个子程序、一个循环指令、一个中断或一个重复字符串指令时,发进程命令P去执行这些指令(作为一个自动操作),在下一个指令时控制返回。

注:P命令与T命令的区别是:当执行的指令是子程序调用或一个循环指令、一个中断或一个重复字符串指令时,P命令是一次执行到这个进程的结束,而T命令则仍然是一次执行一条语句命令。对于执行其他单条指令时,它们是一样的。

3.Q(Quit)命令

用途:结束并退出DEBUG程序。

格式:Q

说明:Q命令不包括把文件写回磁盘操作,它只是返回到启动DEBUG之前的状态。

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

汇编语言的编程步骤与调试方法 汇编语言是一种底层的程序设计语言,直接操作计算机硬件。在编写 汇编语言程序时,需要经过一系列的编程步骤和调试方法,以确保程序的 正确性和可靠性。下面是关于汇编语言的编程步骤和调试方法的一些详细 介绍。 一、编程步骤: 1.定义程序目标:明确程序的功能、输入和输出。 2.设计算法和逻辑:将目标转化为汇编语言指令,设计算法和逻辑流程。 3.选择寄存器和指令:根据算法和逻辑需求,选择合适的寄存器和指令。 4.编写指令:根据算法和逻辑需求,使用正确的指令来编写汇编语言 程序。 5.汇编编译:使用汇编编译器将汇编代码翻译成机器代码。 6.汇编连接:使用链接程序将机器代码和其他必要的文件(如库文件)连接成可执行文件。 7.调试和测试:进行调试和测试,确保程序的正确性和可靠性。 8.优化和改进:根据测试结果,对程序进行优化和改进。 二、调试方法: 1.插入调试指令:在程序中插入一些特定的调试指令,可以输出一些 关键的变量或标志位,以便观察程序的执行路径和结果。

2.单步执行:逐条执行程序代码,并观察每条指令的执行结果和影响,以及寄存器和存储器的变化情况。 3.观察寄存器和存储器:利用调试器观察程序执行过程中的寄存器和 存储器的变化情况,以确定代码逻辑是否正确。 4.打印和日志输出:通过在程序中插入打印和日志输出的语句,可以 观察关键变量和代码的执行情况,以帮助调试。 5.内存和寄存器状态检查:检查程序执行过程中的内存和寄存器状态,特别是对一些关键变量和标志位进行监视,以便发现问题所在。 6.脱机调试:将程序转储至仿真器或虚拟机,并在其中进行无风险的 调试,以排查错误。 三、汇编程序调试常见问题及解决方法: 1.程序崩溃或死循环:检查程序中循环和分支语句的逻辑判断条件是 否正确,以及循环内的寄存器和内存操作是否正确。 2.内存访问错误:查看程序访问的内存地址和存储器的范围是否正确,并检查程序中的指针操作是否正确。 3.寄存器使用错误:检查程序中使用的寄存器是否正确选择和使用, 尤其是在多个函数调用的情况下,需要注意寄存器的保存和恢复。 4.数据错误:检查程序中对数据处理的算法和逻辑是否正确,尤其是 涉及到数据类型转换和数据移位的操作。 5.输入和输出问题:检查程序中输入和输出的读写操作是否正确,以 及相关的数据类型和格式是否匹配。

汇编语言上机操作及程序调试的方法

汇编语言上机操作及程序调试的方法第一节在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提示符下,直接打入文件名(不用扩展名),就可以把执行文件从盘上装入内存,且立即执行此程序。

汇编语言上机步骤与DEBUG常用命令的使用

、实验一汇编语言上机步骤与DEBUG常用命令的使用 【实验目的】 (1)汇编语言源程序的编辑、汇编、连接的方法 (2)掌握DEBUG常用命令的使用,如汇编命令A、反汇编命令U,查看寄存器命令R,查看内存单元命令D,修改内存单元命令E,填充内存单元命令F,设断点热行命令G及单步执行命令T等; (3)掌握用断点执行或单步执行来检查和调式程序的方法; (4)进一步了解8086/8088CPU内部寄存器的功能; (5)掌握访问段式存储器结构地址的表示方法 【实验类型】验证型实验 【实验内容及要求】 1、编辑源程序:将课本102页的代码输入到计算机,并保存(源程序可以不用写到实验报告上) 2、对源程序进行汇编,生成目标文件,写出相应的命令 3、对目标文件进行连接,生成可执行文件,写出相应的命令 4、用DEBUG程序调试生成的可执行文件:按以下要求完成 ⑴用反汇编U命令显示程序及目标码,把结果写在实验报告上。 ⑵用R命令查看各寄存器的情况,把结果写在实验报告上。 ⑶写出第四条指令的逻辑地址,段地址及偏移地址。 ⑷用单步命令T或断点命令G执行程序到RET处,并写出用T命令执行头5条指令的过程及G命令的执行过程。 ⑸写出用D命令检查程序执行前后x,y,z的内容。 ⑹用E命令修改数据段中某一存储单元的内容。 DEBUG常用命令 分类命令格式功能说明 汇编与反汇编-A[地址] 从指定地址开始汇编程序地址默认值为: CS:IP -U[地址] 从指定地址开始反汇编32字节目标码 -U 起始地址 终止地址 在指定地址范围内反汇编目标码 运行与跟踪-G=起始地 址][断点1…断 点10] 在指定地址开始执行到断点为止地址默认值为: CS:IP -T[=地址] 在指定地址执行一条指令后暂停 -T[=地址]n 在指定地址执行n条指令后暂停 存储单元读写移动比较与搜索-D[地址] 从指定地址开始显示80H字节存储单元 内容 地址默认值为: CS:IP -D起始地址终 止地址 显示指定地址范围内存储单元内容 -E地址修改内 容 从指定地址开始逐个单元修改存储内 容 -S起始地址终止地址被 查字符串 从指定地址范围内查找字 符串 段地址默认值 为DS

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

汇编语言得编程步骤与调试方法 一、汇编源程序得建立 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有助于汇编语言程序员对于逻辑错误得调试。 二、汇编程序得调试 1、调试方法

汇编语言上机过程

汇编语言程序的上机过程 一、上机环境 要运行调试汇编语言程序,至少需要以下程序文件: ?编辑程序:https://www.docsj.com/doc/2c19396222.html,或其他文本编辑工具软件,用于编辑源程序。 ?汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。 ?连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。 ?调试程序:DEBUG.EXE,用于调试可执行程序。 二、上机过程 汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。 1.编辑源程序 用文本编辑软件创建、编辑汇编源程序。常用编辑工具有:https://www.docsj.com/doc/2c19396222.html,、记事本、Word等。 无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。 2.汇编 用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。 汇编程序的主要功能是:检查源程序的语法,给出错误信息;产生目标程序文件; 展开宏指令。 汇编过程如下: 在DOS状态下,输入命令:MASM MYFILE.ASM(回车),即启动了汇编程序。 此命令执行后,会出现下面的3行信息,依次按回车键(即选择默认值)即可建立3个输出文件,其扩展名分别为:.OBJ(目标文件),.LST(列表文件)和.CRF(交叉引用文件)。 Object Filename [MYFILE.OBJ]: Source Listing [Nul.LST]: Cross Reference [Nul.CRF]: 依次按回车键,进行选择后,汇编程序就对汇编源程序进行汇编。如果汇编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。此时,需要进行修改,然后再进行汇编。 如此进行,直至汇编无错误,得到目标文件为止。 3.连接 汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。连接过程如下: ?在DOS状态下,输入命令:LINK MYFILE.OBJ(回车),即可完成连接。 ?与汇编过程类似,如果连接过程中出错,那么程序会在屏幕上显示提示信息。 此时,需要对源程序进行查错、修改,然后再进行汇编、连接,直至连接无 错误,得到可执行文件为止。 4.程序运行 在DOS提示符下输入可执行程序的文件名即可运行程序。若程序能够运行但不能得到预期结果,则就需要检查源程序,改错后再汇编、连接、运行。 5.程序调试 在程序运行阶段,有时不容易发现问题,尤其是碰到复杂的程序更是如此,这时就

汇编语言上机环境及基本操作

汇编语言上机环境及基本操作汇编语言是一种低级语言,它直接面向硬件,可以直接访问计算机的底层资源。为了学习和实践汇编语言,我们需要了解如何搭建汇编语言上机环境以及其基本操作。本文将介绍汇编语言上机环境的安装和基本操作的步骤,并给出一些示例。 1. 汇编语言上机环境的安装 在搭建汇编语言的上机环境之前,我们首先需要确认计算机的操作系统。通常,我们可以在Windows操作系统上进行汇编语言的开发和调试。下面是汇编语言上机环境的安装步骤: 1.1 下载汇编语言开发工具 汇编语言开发工具有很多种,比如MASM、NASM等。根据个人的喜好和需求选择合适的工具进行下载。 1.2 安装汇编语言开发工具 双击下载文件并按照提示完成安装过程。一般来说,安装过程中可使用默认配置,无需特殊设置。 1.3 配置环境变量 配置环境变量可以使得我们在任意路径下都可以运行汇编语言代码。找到系统环境变量中的"Path"变量,添加汇编语言开发工具的安装路径。例如,如果您选择了MASM,将其安装路径添加到"Path"变量中即可。

安装好汇编语言开发工具后,我们就可以开始进行汇编语言的实践了。 2. 汇编语言的基本操作 接下来我们将介绍汇编语言的一些基本操作,包括编写代码、汇编、链接和运行等。 2.1 编写汇编语言代码 打开一个文本编辑器(如记事本),编写汇编语言的代码。汇编语言与高级语言相比,语法更为底层,需要对计算机的底层结构有一定的了解。可以参考相关教材或者网络资源,编写简单的汇编语言代码。 2.2 汇编 将编写好的汇编语言代码保存为.asm文件。然后,打开命令提示符(或者使用汇编语言开发工具自带的命令行工具),进入.asm文件所在目录,并执行如下命令进行汇编: > asm 文件名.asm 汇编成功后,将生成相应的.obj文件。 2.3 链接 汇编语言代码中可能会引用一些外部的库文件,我们需要将这些库文件与生成的.obj文件进行链接。使用如下命令进行链接: > link 文件名.obj 文件名.lib

实验一-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 1 RESULT_2 DB 1 RESULT_3 DB 1 DATA ENDS STACK SEGMENT STACK ; 堆栈段 STA DB 64 DUP(0) STACK_TOP DB 0 STACK ENDS CODE SEGMENT; 代码段

ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACK START: MOV AX, DATA MOV DS, AX ; 设置数据段 MOV AX, STACK MOV SS, AX ; 设置堆栈段 LEA SP, STACK_TOP ; 设置栈顶指针 MOV AX, 2afH MOV CL, 100 DIV CL MOV RESULT_1, AL ; 除以100, 得百位数 MOV AL, AH MOV AH, 0 MOV CL, 10 DIV CL MOV RESULT_2, AL ; 余数除以10, 得十位数 MOV RESULT_3, AH ; 余数为个位数 MOV AX,4C00H ; 返回DOS INT 21H ; CODE ENDS END START ; 最后一行要按回车键 5、实验及报告要求: 1)用合适的编辑软件编辑以上源文件并存入合适目录;要求补充注释未注释的 伪指令和指令; 2)分别在DOS和Windows下编译、连接生成可执行文件,比较两个环 境下生成的机器码的长度和内容;试指出第2、5、7、10、14条指令的IP和机器码。 3)分别在debug和emu8086下调试该可执行文件,给出程序运行时的各段 地址(CS=?,DS=?SS=?ES=?)举例说明debug的t,d,g,u等命令操作方法并对寄存器的变化作出解释;试改变被转换的三位数,并解释转换过程中标志寄存器中各标志位的结果;如何观察转换结果的变化?4)写出完整的实验报告,特别是“实验结果”与“实验总结体会”部分,是评分的 主要依据。 5)实验总结中要求结合实验中的经验、教训或体会对汇编语言格式、调试方法 和微机原理学习方法作出总结。 6、思考题: 1)用单步执行命令t运行程序,运行到mov ax, 4c00h,int 21h指令后,cs和 IP寄存器内容前后有何变化?产生变化的原因是什么? 2)试写出将BCD转换成二进制码的汇编程序。

微机原理汇编语言的上机过程 实验报告

微机原理技术与接口实验报告 学院: 专业: 班级: 姓名: 学号:

汇编语言程序的上机过程 实验目的 通过简单地操作了解汇编语言程序的基本内容,体会汇编语言的运行,为以后的实验打下一定的基础。 实验原理及操作步骤 一、上机环境 要运行调试汇编语言程序,至少需要以下程序文件: ?编辑程序:https://www.docsj.com/doc/2c19396222.html,或其他文本编辑工具软件,用于编辑源程序。 ?汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。 ?连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。 ?调试程序:DEBUG.EXE,用于调试可执行程序。 二、上机过程 汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。 1.编辑源程序 用文本编辑软件创建、编辑汇编源程序。常用编辑工具有:https://www.docsj.com/doc/2c19396222.html,、记事本、Word等。 无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。 2.汇编 用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。 汇编程序的主要功能是:检查源程序的语法,给出错误信息;产生目标程序文件;展开宏指令。 汇编过程如下: 在DOS状态下,输入命令:MASM MYFILE.ASM(回车),即启动了汇编程序。 此命令执行后,会出现下面的3行信息,依次按回车键(即选择默认值)即可建立3个输出文件,其扩展名分别为:.OBJ(目标文件),.LST(列 表文件)和.CRF(交叉引用文件)。 Object Filename [MYFILE.OBJ]: Source Listing [Nul.LST]: Cross Reference [Nul.CRF]: 依次按回车键,进行选择后,汇编程序就对汇编源程序进行汇编。如果汇 编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。

汇编语言程序设计的实验环境及上机步骤

汇编语言程序设计的实验环境及上机步骤 一、实验环境 汇编语言程序设计的实验环境如下: 1.硬件环境 微型计算机(Intel x86系列CPU)一台 2.软件环境 ⏹Windows98/2000/XP操作系统 ⏹任意一种文本编辑器(EDIT、NOTEPAD(记事本)、UltraEDIT等) ⏹汇编程序(MASM.EXE或TASM.EXE) ⏹连接程序(LINK.EXE或TLINK.EXE) ⏹调试程序(DEBUG.EXE或TD.EXE) 文本编辑器建议使用EDIT或NOTEPAD,汇编程序建议使用MASM.EXE,连接程序建议使用LINK.EXE,调试程序建议使用TD.EXE。 二、上机实验步骤 注:以下步骤适用于除汇编语言程序设计的实验一到实验四外的所有实验(实验一到实验四仅使用TD.EXE)。 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中点击桌面左下角的“开始”按钮→选择“运行”→在弹出的窗口中输入“https://www.docsj.com/doc/2c19396222.html, C:\ASM\HELLO.ASM”,屏幕上出现EDIT的编辑窗口,如图1所示。

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

汇编语言的编程步骤与调试方法汇编语言作为一种低级编程语言,具有高度的灵活性和效率,尤其适用于对计算机底层操作进行精确控制的应用。本文将介绍汇编语言的编程步骤与调试方法。 一、编程步骤 1. 设计算法:编程之前,首先需要明确编写代码的目的和功能。根据需求,设计出合适的算法,确定程序的输入、输出等基本要素。 2. 选择汇编语言指令集:根据计算机的硬件平台和操作系统,选择合适的汇编语言指令集,如x86、ARM等。 3. 编写代码:根据算法,使用汇编语言指令集编写代码。汇编语言使用助记符来表示指令和操作数,需要了解指令的语法和使用方法。 4. 组织程序结构:在编写代码时,需要按照一定的结构组织程序,包括定义数据段、代码段等,并进行正确的程序控制流程设计。 5. 完善程序功能:根据需求,完善程序的各项功能。可以包括输入输出处理、数据操作、逻辑判断、循环处理等。 6. 调试和优化:编写完成后,进行程序的调试和优化。可以通过调试工具、打印输出等方式,定位和解决程序中的错误和问题。同时,优化程序的性能,提高代码的执行效率。 7. 文档记录:在编写代码的过程中,逐步记录代码的功能、变量定义、重要的注释等信息,便于他人阅读和维护。

二、调试方法 1. 单步调试:单步调试是指逐条执行汇编语言程序,观察每条指令 的执行情况。通过单步调试可以查看寄存器的值、内存的状态等信息,以便定位错误。 2. 设置断点:在需要观察或调试的代码行上设置断点,运行程序时 会在断点处停止执行,可以查看此时程序的状态,并逐步分析代码的 执行流程。 3. 查看寄存器和内存:在调试过程中,可以查看寄存器和内存中的值,以判断程序是否按照预期的方式处理数据。通过查看寄存器和内 存的值,可以分析代码的执行过程和结果。 4. 打印输出:可以通过在程序中插入打印输出语句,输出关键变量 的值,以便观察程序的执行过程和数据的变化。 5. 利用调试工具:使用专业的调试工具可以更加方便地进行汇编语 言程序的调试。调试工具提供了更强大的功能,如设置断点、查看寄 存器和内存、调试时的动态变量查看等。 6. 错误定位和修复:在调试过程中,根据观察到的错误信息和程序 状态,确定错误的来源和原因,并对代码进行修复。修复后,再次进 行调试,直至程序达到预期的功能。 三、总结 汇编语言的编程步骤包括算法设计、选择指令集、编写代码、组织 程序结构、完善功能、调试和优化、文档记录等。调试方法包括单步

实验二 汇编语言程序上机过程及调试

实验报告二 课程微机原理实验名称汇编语言程序上机过程以及调试第页专业电子信息班级__ __ 学号_ __ 姓名 实验日期: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,‘$’

汇编语言程序设计上机步骤与调试方法

汇编语言程序设计上机步骤与调试方法 在汇编语言程序设计中,上机步骤与调试方法是非常重要的,它们 能够帮助程序员更好地编写和调试程序。本文将介绍汇编语言程序设 计的上机步骤以及常用的调试方法,帮助读者更好地理解和应用这些 知识。 一、上机步骤 1. 准备工作 在开始上机之前,我们需要做一些准备工作。首先,确认计算机已 经连接好必要的硬件设备,例如键盘、显示器等。其次,确保操作系 统和开发环境已经正确安装并能够正常运行。最后,根据需要准备好 所需的汇编语言文档和程序样例。 2. 创建新项目 在开始编写汇编语言程序之前,我们需要创建一个新的项目。在项 目中,我们可以组织和管理相关的文件和代码。通常,我们会选择一 个合适的集成开发环境(IDE)来创建和管理项目。 3. 编写程序 在创建项目之后,我们可以开始编写汇编语言程序。首先,我们需 要了解目标机器的指令集和寄存器,以便正确地编写程序。然后,根 据需求,我们可以使用不同的指令、寄存器和内存来实现所需的功能。在编写程序的过程中,注意代码的可读性和易于维护性是非常重要的。

4. 调试程序 编写完汇编语言程序后,我们需要进行调试,以确保程序的正确性 和稳定性。调试是一个迭代过程,通常包括以下步骤: - 设置断点:在程序中设置断点,以便在特定位置停止程序的执行。 - 单步执行:通过逐条执行程序的指令,我们可以观察程序的执行 过程,并检查各寄存器和内存的值。 - 监视变量:在调试过程中,我们可以监视程序中的变量值,以验 证其正确性。 - 查看输出:观察程序的输出结果,与预期结果进行比较,以确定 程序是否按照预期执行。 - 修复错误:如果发现程序中存在错误,我们需要对程序进行修改 和调整,直到问题解决为止。 5. 运行程序 在完成程序的调试之后,我们可以运行程序并观察其运行效果。在 运行过程中,我们可以测试程序的各种功能,以确保其正常工作。 二、调试方法 1. 打印输出 在调试汇编语言程序时,打印输出是一种常用且简单有效的调试方法。在程序中插入打印语句,将一些变量的值打印到控制台或文件中,

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

汇编语言的编程步骤与调试方法 一、汇编源程序的建立 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. 工具软件MASM、LINK的使用 2. 常用DEBUG命令的使用: G,D,R,T,U,Q 3. 完整程序设计方法的格式。 二、目的要求 1. 掌握常用工具软件MASM、LINK的使用 2. 掌握常用DEBUG命令: G,D,R,T,U,Q 能灵活使用这些命令调试程序 3. 掌握完整程序设计方法的格式,能正确书写数据段,代码段等。 三、实验内容 比较两个字符串string1和string2所含的字符是否相同,如果相同则显示’Match'否则显示’No match’.请读程序,并将程序补充完整。 DSEG SEGMENT string1 db 'Move the cursor backward.' string2 db 'Move the cursor backward.' mess1 db 'Match.',13,10,'$' mess2 db 'No match.',13,10,'$'

DSEG ENDS CSEG SEGMENT assume cs:CSEG, ds:DSEG, es:DSEG, MAIN PROC FAR start: mov ax, dseg mov ds, ax mov es, ax lea si ,string1 ① cld ② repz cmpsb jz match lea dx,mess2 jmp short disp match: lea dx,mess1 disp: mov ah,09h

int 21h mov ax, 4c00h int 21h MAIN ENDP CSEG ENDS end start 实验步骤: 1)用文字编辑工具(记事本或EDIT)将源程序输入完整后保存在c:\masm615下,注意保存时将文件扩展名改为.asm(如lab1.asm)。 2)打开桌面的“命令提示符”程序进入dos命令操作,先用cd masm615 命令改变路经,接着用”masm + 文件名”(如 masm lab1,这里文件名可以不带扩展名) 对源文件进行汇编,产生.obj文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。 3)用”link + 文件名” (如 link lab1) 将.obj文件连接成可执行的.exe文件(lab1.exe)。

汇编语言上机指导

汇编语言上机指导 一、概述 汇编语言是一种低级别的程序设计语言,它直接使用计算机的指令集架构来编写程序。而在进行汇编语言的实际操作时,上机指导是必不可少的一环。本文将为您提供一份汇编语言上机指导,以帮助您在实践中更好地掌握汇编语言的应用。 二、实验环境与所需工具 在进行汇编语言的上机实验之前,您需要准备以下工具和环境: 1. 计算机:一台能够运行汇编语言开发环境的计算机; 2. 汇编语言开发环境:例如MASM、NASM等; 3. 文本编辑器:用于编写汇编源代码的工具,例如Notepad++、Sublime Text等; 4. 模拟器或调试器:用于模拟或调试汇编程序的工具,例如DOSBox、Emu8086等。 三、实验步骤 1. 安装汇编语言开发环境:根据您选择的汇编语言开发环境,下载并安装相应的软件。 2. 创建汇编源代码文件:使用文本编辑器创建一个新的文本文件,并将其保存为.asm文件格式。

3. 编写汇编程序:根据实验要求或题目要求,使用汇编语言编写相应的程序代码。在编写过程中,需要熟悉所选汇编语言的语法和指令集。 4. 保存源代码文件:在编写完成后,保存源代码文件,并注意文件的命名规范和格式要求。 5. 编译源代码:打开所选汇编语言开发环境,并将源代码文件导入到该环境中。使用编译器将源代码文件转换为可执行文件。 6. 运行汇编程序:在模拟器或调试器中加载生成的可执行文件,并运行程序。通过观察程序的运行结果,验证程序代码的正确性和准确性。 7. 调试程序:如果程序在执行过程中出现错误或异常,可以使用调试器来逐步调试程序,找出错误的原因,并进行修正。 8. 优化程序:经过测试和调试后,可以根据实验需求对程序进行优化或改进,提高程序的性能和效率。 9. 文档整理:在上机实验结束后,对实验过程、实验结果和实验心得进行文档整理。将实验相关的代码、截图和注释整理成文档,并附上你的实验心得和体会。 四、注意事项 1. 在编写汇编程序时,需要遵循所使用汇编语言的语法和规范,注意标识符的命名规则和字符集的使用限制。

NO.1:汇编语言的上机过程(基于MASM_6.15)

1) 了解并熟悉汇编源程序的编写环境,了解汇编源程序的汇编链接运行 2) 写出一个简单的汇编程序并运行 3) 编写程序,从键盘接收两个十进制数,将它们的和存入变量sum (上机第一步)EDIT,是编辑程序,像一个文本编辑器,用来编辑汇编语言源程序,编辑好的程序扩展名为*.asm; (第二步)MASM,是汇编程序,用来把*.asm程序编译成二进制代码,该二进制代码文件称为目标程序,扩展名为*.obj; (第三步)LINK,是链接程序,用来把*.obj文件变成可执行目标代码,即可执行文件*.exe; 在第二步和第三步中,可以发现程序语法上的错误; (第四步)DEBUG是调试工具,用于发现程序逻辑上的错误。 汇编语言的上机过程(基于MASM 6.15) 汇编语言的一般上机过程:1.建立ASM文件 2.产生OBJ文件 3.产生EXE 文件4.程序的调试和执行 MASM 6.15包含文件: *************************************************** M ASM.EXE 汇编器 E https://www.docsj.com/doc/2c19396222.html, DOS下的文本编辑器 E DIT.HLP EDIT帮助文件 L IB.EXE 过程库管理程序 L INK.EXE 连接器

D OSXNT.EXE m l.err 汇编的错误信息文件 m l.exe(masm and link)汇编连接器 *************************************************** D EBUG.EX E 调试器(一般是系统自带) *************************************************** 对于MASM 6.10以下的版本,汇编器和连接器是分开的,分别是MASM.EXE 和LINK.EXE,使用时要先用MASM.EXE生成.OBJ文件,再使用LINK.EXE生成.EXE 文件。ml.exe把MASM.EXE和LINK.EXE整合到一起,可以一步生成.EXE 文件。 ml命令有许多参数,可以使用ml /?命令查看。下面介绍几个低级实用的参数: /AT Enable tiny model (.COM file) /c Assemble without linking 只汇编不连接 /Fe Name executable 指定.EXE文件名 /Fl[file] Generate listing 生成列表文件(.LST) /Fm[file] Generate map 生成映像文件(.MAP) /Fo Name object file 指定.OBJ文件名 /I Add include path 指定include文件的路径名 两种开发环境: 1.32位Windows控制台(CMD.EXE)

单片机实验报告KeilC的使用与汇编语言上机操作

单片机实验报告KeilC的使用与汇编 语言上机操作 单片机实验报告:Keil C的使用与汇编语言上机操作 一、实验目的 1.掌握Keil C的使用方法,了解其集成开发环境下的单片机编程流程。 2.掌握汇编语言的基本语法和指令,通过上机操作熟悉其应用。 3.通过实际操作,增强动手能力和解决问题的能力。 二、实验设备 1.单片机开发板 2.Keil C软件 3.电脑及编程器 三、实验原理及步骤 1.Keil C使用介绍 Keil C是一款广泛使用的单片机集成开发环境,它提供了包括编译器、调试器、仿真器等在内的全套开发工具。使用Keil C可以方便地进行代码编写、编译、调试和模拟,适用于多种单片机开发。 2.汇编语言基础 汇编语言是一种直接与硬件相关的编程语言,它通过特定的指令集直接控制硬件进行操作。汇编语言具有高效、直接的特点,但编写和理解相对困难。本实验主要学习并熟悉汇编语言的基本语法和指令。 3.实验步骤 (1) 在Keil C中创建新项目,选择合适的单片机型号。 (2) 创建源文件,编写汇编程序。 (3) 对源文件进行编译,生成目标文件。

(4) 将目标文件下载到单片机开发板进行调试和运行。 四、实验内容及分析 1.在Keil C中创建新项目并选择单片机型号。在创建项目时,需要选择正确 的单片机型号,这将直接影响到程序的编写和运行。根据实际需要,我们选择了AT89C51作为实验用的单片机。 2.创建源文件并编写汇编程序。在Keil C中,可以方便地创建新的源文件, 并在其中编写汇编程序。例如,下面是一个简单的汇编程序,用于点亮开发板上的LED灯: MOV P1, #1 // 将1赋值给P1端口 此程序将使P1端口的所有引脚输出高电平,从而点亮LED灯。 3.对源文件进行编译并生成目标文件。在Keil C中,可以通过简单的点击完 成编译操作。编译成功后,将生成一个目标文件(如*.obj文件)。 4.将目标文件下载到单片机开发板进行调试和运行。在Keil C中,可以通过 仿真功能模拟程序的运行,也可以通过调试功能查看程序运行过程中的细节信息。如果程序运行无误,将在单片机开发板上看到预期的结果。 五、实验总结与体会 通过本次实验,我们深入了解了Keil C的使用方法和单片机编程的基本流程。同时,通过实际操作,我们熟悉了汇编语言的应用和编程技巧。虽然汇编语言相对于高级语言更为复杂,但在特定场合下(如对性能要求极高或与硬件直接交互时),其高效性和直接性具有不可替代的优势。因此,掌握汇编语言对于单片机开发具有重要的意义。在未来的学习和实践中,我们将进一步运用和发展所学的知识和技能,为科学研究和工程实践做出贡献。

汇编语言源程序的编辑与调试过程.【范本模板】

汇编语言源程序的编辑与调试过程 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)在数据编辑窗口中输入所需的数据,输入完后,按回车,输入的数据就会替代光标处的原 始数据。 4.在TD环境下如何修改寄存器内容? 答: (1)用Tab键选择寄存器区为当前区域; (2)用方向键把光标移到要修改的寄存器上;

相关文档
相关文档 最新文档