汇编语言上机操作.docx
- 文档编号:8914648
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:10
- 大小:19.97KB
汇编语言上机操作.docx
《汇编语言上机操作.docx》由会员分享,可在线阅读,更多相关《汇编语言上机操作.docx(10页珍藏版)》请在冰点文库上搜索。
汇编语言上机操作
汇编语言上机操作
一、建立子文件夹
如:
D:
\hb\masm
二、复制相关文件
把masm.exe、link.exe、ml.exe三个文件复制到上述文件夹中。
三、进入DOS方式
开始/运行/cmd
当前提示符可能是:
C:
\documentsandsettings\administrator>
四、常用DOS操作命令
1、改变当前盘
输入d:
并回车,屏幕显示:
D:
\>
2、改变当前目录
1)进入下一级目录
D:
\>cdhb回车后,屏幕显示:
D:
\hb>cdmasm回车后,屏幕显示:
E:
\hb\masm>
问题:
可以一次进入下面二级或多级目录吗?
2)返回上一级目录
D:
\hb\masm>cd..回车后,屏幕显示:
D:
\hb\>cd..回车后,屏幕显示:
D:
\>
问题:
可以直接返回根目录吗?
D:
\hb\masm>cd\回车后,屏幕显示:
D:
\>
3、显示当前目录内容
D:
\>dir/p分页显示当前目录内容
问题:
如何显示d:
\text中的内容?
D:
\>dird:
\text↙
4、DOS方式下如何运行程序?
DOS方式下的可执行文件(即程序文件)扩展名为.exe或.com,运行时只需要在系统提示符下输入文件主名即可。
例如,有一个文件名为test.exe,存入在D:
\hb\masm中,运行时,可以这样做:
D:
\hb\masm>test↙
五、汇编语言上机过程
1、编辑源程序
运行:
edit回车后,进入EDIT环境,输入完后存盘(file/save)并退出(file/exit)。
2、汇编
D:
\hb\masm>masmadd5.asm↙
生成目标程序文件add5.obj。
(如果有语法错误,会提示错误所在行号和错误类型)
3、连接
D:
\hb\masm>linkadd5↙
生成可执行文件add5.exe。
六、DEBUG程序调用及汇编语言程序调试方法
调试程序DEBUG是DOS支持的又一种系统软件,主要用于汇编语言程序的调试。
汇编和连接过程只能查出源程序的语法错误,不能查出功能上的错误和程序不完善的地方。
DEBUG程序为用户提供多种命令,大致有:
显示和修改寄存器和存贮单元的内容;执行程序中任意一段或一条指令;汇编单条源语句和反汇编机器码指令;查找字符代码;端口的输入和输出;文件装入内存和写入磁盘等。
用户利用这些命令可以查出任何程序功能上的错误。
下面说明DEBUG程序的启动方法和主要命令意义。
(一)DEBUG程序的启动
DEBUG程序有两种启动方法。
DEBUG程序是在DOS盘上的一个独立的可执行程序(扩展名为.COM),所以,DEBUG程序的第一种启动方法就是把它看作和一般的可执行程序一样,只要打入DEBUG和回车键,就可以把它装入内存。
但是这样启动只把DEBUG程序本身装入内存并进入等待DEBUG命令状态,还没有把要调试的程序装入内存。
第二种启动DEBUG的程序的方法是一次相继装入DEBUG程序和要调试的程序。
打入的命令格式如下:
DEBUG[d:
][path]filename[.ext][parml][parm2]
其中的Filename是要调试程序的文件名,可选项[d:
][path]和[.ext]分别是要调试程序的所在盘符、路径和扩展名。
可选项[parml]和[parm2]是DEBUG程序为要调试程序准备的参数(一般不用)。
例进入DEBUG程序并装入要调试程序。
其操作如下:
D:
\hb\masm>DEBUGadd5.exe(进入DEBUG,并装配add5.exe)
此时屏幕上出现一个短线,这表示可以使用DEBUG命令了。
如果启动DEBUG时没有指定要调试的文件名,则需要用N命令指定要调试的文件,再用L命令将其装入内存。
操作如下:
D:
\hb\masm>debug↙
-nadd5.exe↙
-l↙
(二)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=0E00BX=00FFCX=0007DX=01FFSP=0390BP=0000SI=0050DI=0000DS=04BAES=04BASS=04BACS=04BAIP=011ANVUPDINGNZACPENC
04BA:
011ACD211NT21
前几行显示的是寄存器内容和8个状态标志位的状态,最后一行显示是下面将要执行的指令地址,它对应的机器码和汇编语句形式。
8位状态标志位的状态不是以0或1的形式显示的,而是用两个字母显示的。
字母和状态对应关系如表所示:
标志位名
置位
复位
OF(溢出标志)
OV
NV
DF(方向标志)
DN
UP
IF(中断标志)
EI
DI
SF(符号标志)
NG
PL
ZF(零标志)
ZR
NZ
AF(辅助进位)
AC
NA
PF(奇偶标志)
PE
PO
CF(进位标志)
CY
NC
⑶显示和修改标志位状态的命令
命令格式:
RF
系统响应是显示8个状态位。
例如:
OVDNEINGZRACPECY_(最后为光标位置)如果打入回车键,将不改变标志位的状态;也可以打入一个或多个新的状态符,重新设置其状态。
输入时各标志的次序无关,输入的各个标志之间可以没有空格。
如从光标位置开始打入:
PONZDINV
将改变第一、三、五、七个状态位的值。
2.D(Dump)命令
用途:
显示某个存储区的内容。
格式:
D[address]或D[range]
存储单元的内容用两种方式显示:
一种是每一个存储单元的内容(每一字节)用两位16进制数显示;另一种是用相应的ASCII字符显示,句号(.)表示不可显示的字符。
如果取命令格式:
D
后面无地址或范围参数,将从前次命令显示后的下一个单元开始显示40H字节或80H字节的内容。
如果取命令格式:
D[range]
则显示指定地址范围各单元的内容。
3.E(Enter)命令
用途:
显示和修改存贮单元的内容。
格式1:
E[address][list]
将内容表包括的数值和字符串的ASCII码依次置入从指定地址开始的存贮单元。
例如:
EDS:
100F3“XYZ”8D
从内存单元DS:
100H至DS:
104H的5个单元中依次置入F3H(1个单元),XYZ的ASCII码(3个单元)和8DH(1个单元)。
格式2:
E[address]
显示指定地址单元的内容,并等待输入新的值。
输入新的值过程如下:
输入一个字节的十六进制数,以替换原单元中的内容,然后采取下列三种操作的一种。
(1)按空格键,则上一个替换要求完成,且显示出下一个单元的地址和原有的内容。
如果想改变它,可直接输入要修改的值,再按空格键,……,这样,就可以连续地进行修改。
若某一单元的内容不需要修改,可直接按空格键。
(2)按“-”号键,将在下一行显示前一单元的地址和内容。
如果想改变它,可直接输入要修改的值,然后再按“-”,则又显示前一单元的地址和内容,……,这样就可连续地进行反向修改。
若所示的前一单元的内容不需要修改,可直接按“-”键。
(3)按回车键将结束E命令。
命令参数中[地址]如果不指明段地址,则默认段地址为DS。
4.F(FilL)命令
用途:
在指定的存贮地址范围内置入内容表给出的数值或字符代码。
格式:
F[range][list]
说明:
如果list包含的字节少于range包括的单元数,则把list的字节重复置入指定的地址区,直到指定的范围都置入新值为止。
如果list包含的字节数多于range包括的单元数,则多出的字节被忽略。
如果range参数中不指明段地址,则默认段地址为DS。
例如:
F4BA:
100L5F3'XYZ'8D
则从04BA:
100至04BA:
104的5个单元依次装入F358595A8D。
二)汇编与反汇编命令
1.A(Assemed)命令
用途:
先显示汇编的内存地址,等待用户输入一条助记符指令。
用户输入指令并按回车后,DEBUG将把这条指令对应的机器码顺序存放在指定的内存单元中,并提示下一地址,等待用户继续输入下一条指令。
若直接按回车,则退出A命令;若在输入指令时语句有错误,则显示出错信息,仍然提示当前的汇编地址,用户可重新输入指令。
格式:
A[address]
说明:
若没有指定地址,则从“CS:
100”单元开始存放。
2.U(Unassemed)命令
用途:
对于存贮器内的指令机器码进行反汇编,结果显示的语句和源程序语句会大部分相同,由于不能反汇编出标号、标识符等信息,所以与源程序语句有些差别。
但在调试程序时,这个命令常常用于对照机器码指令与源程序是否一致。
格式:
U[address]或U[range]
说明:
反汇编过程产生的输出包括指令的开始地址,指令的机器码和指令的源语句。
例:
-U:
从当前地址开始反汇编
也可以从某个地址处开始反汇编
例:
-U200:
从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之前的状态。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 上机 操作