ImageVerifierCode 换一换
格式:DOC , 页数:29 ,大小:4.74MB ,
资源ID:11234960      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/11234960.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(汇编实验指导新(实验一).doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

汇编实验指导新(实验一).doc

1、汇编语言程序设计实验指导 实验一 汇编语言程序设计上机及debug的使用 一、实验目的及要求 1.学会使用EDIT、MASM、LINK、DEBUG等软件工具。 2.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。 二、实验内容 (一) 上机过程 1.汇编语言源程序的上机环境 硬件环境:目前8086汇编语言程序一般多在IBM PC/XT及其兼容机上运行,因此要求机器具有一些基本配置就可以了,汇编语言对机器硬件环境没有特殊要求。 软件环境:软件环境是指支持汇编语言程序运行和帮助建立汇编语言源程序的一些软件。编写MASM程序至少需要三个工具,一个是用来准备源文件的文本

2、编辑程序,一个是用来将源文件转换成目标文件的MASM汇编程序,最后一个是用来将多个目标文件连接成一个DOS可执行文件的LINK连接程序。 (1)进入DOS操作系统:汇编语言程序的建立和运行在DOS操作系统支持下进行,要首先进入MS-DOS状态: 点击开始菜单/运行 在打开提示框中输入cmd再回车 cd\apps\masm回车 (2)编辑程序:编辑程序是用来输入和建立汇编语言源程序的一种通用的系统软件,通常源程序的修改也是在编辑状态进行的。 编写汇编语言程序的第一步,就是用文本编辑程序编写源文件。源文件的编写可以利用任何一种文本编辑程序完成,具体使用哪一种,完全取决于个人喜好。比如,

3、记事本、EDIT.COM、WORDSTAR、EDLIN.COM、TC.COM等,但要注意,除了注释的内容外,一定要在非文本方式下输入各种语句和间隔符号,否则会汇编出错。如: Edit abc.asm回车 源程序以asm作文件名后缀。 Microsoft公司在推出MASM6.0的同时也提供了优秀的全屏幕文本编辑程序,作为PWB(程序员工作平台)的组成部分。该编辑程序支持下拉式菜单、鼠标,并可根据用户特定需求进行裁剪。 (3)汇编程序:8086的汇编程序有基本汇编ASM.EXE和宏汇编MASM.EXE两种。基本汇编ASM.EXE不支持宏操作,因此,一般选用宏汇编MASM.EXE。如:

4、 masm abc.asm回车 或masm abc;回车 汇编结果没错误的话,会生成一个目标文件,如abc.obj (4)连接程序:8086汇编语言使用的连接程序是LINK.EXE。 link abc.obj 或link abc; 连接成功后生成可执行程序abc.exe 从MASM6.0版本开始,Microsoft将汇编程序相连接程序组合到了一个单程序中,并命名为ML.EXE(意指MASM和LINK)。虽然磁盘上程序的名字变成了ML.EXE,但习惯上人们仍称其为MASM。 (5)调试程序:这类程序作为一种辅助工具,帮助编程者进行程序的调试,通常用动态调试程序DEBUG.COM。

5、 2.运行汇编语言程序的步骤 一般情况下,在计算机上运行汇编语言程序的步骤如下: (1)用编辑程序(例如EDIT.COM)建立扩展名为.ASM的汇编语言源程序文件; (2)用汇编程序(例如MASM.EXE)将汇编语言源程序文件汇编成用机器码表示的目标程序文件,其扩展名为.OBJ; 汇编语言源文件经汇编程序汇编后生成的文件是二进制文件,其内容为机器代码和连接程序指令,该文件称为目标文件,其缺省扩展名为.OBJ。一个或多个目标文件经连接程序组合成一个可执行文件,其缺省扩展名为.EXE。在DOS提示符下键入该文件名即可。 (3)如果在汇编过程中出现语法错误,根据错误提示(如错误位置、错误

6、类型、错误说明),用编辑软件重新调入源程序进行修改。注意,此过程只能发现语法错误,不能发现逻辑错误。改正后的程序重新进行汇编,若没有语法错误,采用连接程序(例如LINK.EXE)把目标文件转化成可执行文件,其扩展名为.EXE; (4)生成可执行文件后,在DOS命令状态下直接键入文件名就可执行该文件。 3.汇编语言源程序的建立 (1)采用EDIT屏幕编辑软件编写程序。当启动系统后,进入DOS状态(命令行状态),运行EDIT屏幕编辑软件,然后输入汇编语言源程序。 本例中给出的程序是将字符串显示在屏幕上(源程序中有几处错误,汇编后修改)。设源程序的文件名为ABC.ASM。 data seg

7、ment str db 'Okey',0dh,0a,'$' count dw 4 data ends stack segment stack db 127 dup(?) stack ends code segment assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax mov bx,offset str0 mov si,0 mov cx,count next: mov dl,[bx+si] mov ah,2 int 21h inc si loop next mo

8、v ah,1 int 21h mov ah,4ch int 21h code ends end start 键入以下命令: C:\>EDIT ABC.ASM 此时屏幕的显示状态如图1所示。 图1 用EDIT编辑ABC.ASM程序窗口 程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。 (2)采用记事本编辑源文件 图2 用记事本编辑ABC.ASM程序窗口 4.将源程序文件汇编成目标程序文件 一般情况下,MASM汇编程序的主要功能有以下3点: (1)检查源程序中存在的语法错误,并给出错误信息。 (2)源程

9、序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。 (3)若程序中使用了宏指令,则汇编程序将展开宏指令。 源程序建立以后,在DOS状态下,采用宏汇编程序MASM对源程序文件进行汇编。 输入命令: masm abc.asm回车 或masm abc;回车 其操作过程如图3所示。 图3 MASM宏汇编程序工作窗口 汇编程序调入后,首先显示软件版本号,然后出现三个提示行: 第1个提示行是询问目标程序文件名,方括号内为默认的文件名,通常直接键入回车,表示采用默认的文件名,也可以键入指定文件名。 第2个提示行是询问是否建立列表文件,若不建立,可直接键入回车;若要建立,

10、则输入文件名再键入回车。 列表文件中同时列出源程序和机器语言程序清单,并给出符号表,有利于程序的调试。 第3个提示行是询问是否要建立交叉索引文件,若不要建立,直接键入回车;如果要建立,则输入文件名,就建立了扩展名为.CRF的文件。为了建立交叉索引文件,必须调用CREF.EXE程序。 cref abc.crf 调入汇编程序以后,当逐条回答了上述各提示行的询问之后,汇编程序就对源程序进行汇编。如果汇编过程中发现源程序有语法错误,则列出有错误的语句和错误代码。 汇编过程的错误分警告错误(Warning Errors)和严重错误(Severe Errors)两种(如图3)。其中警告错误

11、是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数、错误的性质。这时,就要对错误进行分析,找出原因和问题,然后再调用编辑程序加以修改,修改以后再重新汇编,一直到汇编无错误为止。 5.用连接程序生成可执行程序文件 经汇编以后产生的目标程序文件(.OBJ文件)并不是可执行程序文件,必须经过连接以后,才能成为可执行文件(即扩展名为.EXE)。 输入命令: link abc.obj 或link abc; 连接过程如图4所示。 图4 LINK连接程序工作窗口 在连接程序调入后,首先显示版本号,然后出现三个提示行。 第1个提示行是询问

12、要产生的可执行文件的文件名,一般直接键入回车,采用方括号内规定的隐含文件名就可以了。 第2个提示行是询问是否要建立连接映像文件。若不建立,则直接回车;如果要建立,则键入文件名再回车。 第3个提示行是询问是否用到库文件,若无特殊需要,则直接键入回车就可以了。 上述提示行回答以后,连接程序开始连接,如果连接过程中出现错误,则显示出错误信息,根据提示的错误原因,要重新调入编辑程序加以修改,然后重新汇编,再经过连接,直到没有错误为止。连接以后,便可以产生可执行程序文件(.EXE文件)。 通常情况下,汇编程序连接以后,可以产生以下三个文件: (1).EXE文件:这是可以直接在DOS操作系统下运

13、行的文件。 (2).MAP文件:这是连接程序的列表文件,又称为连接映像文件。它给出每个段在存储器中的分配情况。 (3).LIB文件:这是指明程序在运行时所需要的库文件。 6.程序的执行 当我们建立了正确的可执行文件以后,就可以直接在DOS状态下执行该程序。 如:C:\>ABC 回车 本程序当中没有用到DOS中断调用指令,所以在屏幕上看不到程序执行的结果。 我们可以采用调试程序DEBUG来进行检查,相关内容请参见实验二。 三、实例分析 下面通过一个汇编语言源程序的实际例子,来了解汇编语言源程序的建立、汇编、连接、运行的完整过程。程序显示AB,源程序名为test1.asm。

14、1.用EDIT建立汇编语言源程序 调用EDIT编辑程序建立文件名为test1.asm的汇编源程序: stack segment stack db 128 dup(0) stack ends code segment assume cs:code,ss:stack start:mov dl,'A' mov ah,2 int 21h inc dl mov ah,2 int 21h mov ah,4ch int 21h code ends end start 如图6所示。

15、 图6 用EDIT建立汇编语言源程序 2.用MASM汇编生成目标文件 源程序文件建立完毕后,调用宏汇编程序MASM对test1.asm进行汇编,如图7所示。 图7 用MASM汇编生成目标文件 3.用LINK进行连接生成可执行文件 汇编正确,则可调用LINK进行连接,成可执行文件test1.EXE,连接过程如图7所示。 4.程序的运行 运行过程及其结果如图7所示。 在DOS状态下,直接键入可执行的程序文件名test1,计算机将输出AB。 4.调试 可以采用执行过程命令P进行调试,这样读者可以对程序的运行情况进行很好地跟踪,也可以很快地判断出错误所在。 图

16、8 用P命令调试程序 图9 用P命令调试程序 由图可以看出,当执行到第3个P命令时,屏幕上已经显示一个字符“A”,说明之前的程序运行无误。继续使用P命令,直到程序显示正常结束信息“Program terminated normally”,说明程序调试完毕,没有错误。 (二) DEBUG的使用 参考附录1,按实验要求完成以下试验,以截屏的形式个给出试验结果。 1. 进入DEBUG,使用A命令将源程序写入内存并汇编,然后使用G命令执行程序,接着用D命令观察运算结果后,再用U命令反汇编,用Q命令退出DEBUG,返回DOS提示符。 具体操作如下: (1)进入DEBUG,并用A命

17、令直接写入并汇编一个程序。 该程序将对两个压缩BCD码,分别存放在0120H和0122H单元(其中[0120H]=0102H,[0122H]=0304H),进行求和运算,结果存放在0124单元,即结果[0124H]=04H,[0125H]=06H。 C:\>debug _A 100 0AFC:0100 MOV AL,[0120] ;不能使用变量名,在DEBUG中只能用直接地址 0AFC:0103 ADD AL,[0122] 0AFC:0107 DAA 0AFC:0108 MOV BY [0124],AL ;BY就是BYTE PTR 0AFC:010B

18、 MOV AL,[0121] 0AFC:010E ADC AL,[0123] 0AFC:0112 DAA 0AFC:0113 MOV BY [0125],AL ;用BY修改存储单元字节操作数类型 0AFC:0116 INT 20 直接回车、用Ctrl+C或Ctrl+Break组合键三种方式都可退出A命令,如图10所示。 (2)用E命令将0102H, 0304H分别写入 0120H和0122H单元。观察由120H开始的单元,是否是写入的数据。 _E 120 02 01 04 03 回车 _D 120 123 (3)执行该程序,如

19、图10所示。 _G Program terminated normally (3)用d显示执行结果 (3)用g命令执行程序 (2)用E命令将0102H, 0304H分别写入 0120H和0122H单元,并用D命令显示 (1)运行DEBUG,用A命令汇编程序 图10 debug命令实例 (4)用D命令显示运算结果,如图10所示。 _D 120 125 0AFC:0120 02 01 04 03 06 04 120和125指定要显示的结果所在的段的偏移地址,段地址缺省值为0AFCH,也可显式的指定某一段地址。 (5)用U命令反汇编

20、程序,如图11所示。 _U 100 116 0AFC:0100 A02001 MOV AL,[0120] 0AFC:0103 02062201 ADD AL,[0122] 0AFC:0107 27 DAA 0AFC:0108 A22401 MOV BY[0124],AL 0AFC:010B A02101 MOV AL,[0121] 0AFC:010E 12062301 ADC AL,[0123] 0AFC:01

21、12 27 DAA 0AFC:0113 A22501 MOV BY[0125],AL 0AFC:0116 CD20 INT 20 U命令将已转换成的机器指令重新转换成汇编语言指令,便于程序员调试程序过程中查看程序定位情况。 (5)用Q命令退出程序序 (4)用U命令反汇编程序 图11 用U命令反汇编程序 (6)用Q命令退出DEBUG,返回DOS提示符,如图11所示。 _Q 2.进入DEBUG,先显示200H处开始的一片单元,接着用E命令将一段机器代码指令写入200H~208

22、H,然后用G命令执行,再用U命令反汇编。 具体操作如下: (1)首先进入DEBUG,接着显示200H处开始的一片单元(如果不指明显示范围,则默认显示128个存储单元),如图12所示。 _d 200 图12 进入DEBUG,显示200H开始的一片单元 (2)用E命令将机器代码指令写入200H开始的内存单元,如图13所示。接着观察由200H开始的单元,是否是写入的机器指令代码,如图14所示。 _E 200 B2 33 B4 02 CD 21 CD 20 _D 200 208 图13 用E命令写入机器指令代码 图14 用D命令显示200H开始

23、的9个单元 (3)用G命令从200H处开始执行程序,如图15所示。执行结果是在屏幕上显示字符“3”。 _g=200 图15 用G命令执行程序 (4)用U命令反汇编,显示200H处存放的程序,如图16所示。 _U 200 206 图16 用U命令反汇编程序 3.进入DEBUG,用A命令写入程序,接着用R命令显示状态,并用T命令单条执行,注意在执行命令的同时观察相应寄存器的状态。 具体操作如下: (1)进入DEBUG,用A命令写入汇编源程序,Ctrl+C退出A命令,如图17所示。 _A 100 0AFC : 0100 MOV AH,3 0AFC

24、 0102 MOV AL,2 0AFC : 0104 ADD AL,AH 0AFC : 0106 INT 20 0AFC : 0108 ^C _ 图17 用A命令编辑程序 (2)用R命令显示寄存器状态,可以只显示AH和AL寄存器状态,也可以显示所有寄存器状态,如图18和图19所示。由图中可以看出,在没有执行指令之前,AH和AL寄存器没有被赋值,其值为0。 _R AX _R 图18 用R命令观察AX寄存器的值 图19 用R命令观察所有寄存器的值 (3)用T命令单条执行指令,注意观察AH和AL寄存器的变化,如图20所

25、示。 _T _T _T _T 图20 用T命令单条执行指令 由图可以看到,在执行到第3个T命令时,AH寄存器已经等于05H,完成求和运算,说明指令执行正确。 4.其它命令的使用:填充命令F、移动命令M、比较命令C、查找命令S。 具体操作如下: (1)进入DEBUG,显示100H~ 10FH单元内容,如图21所示。由图可见,这些单元的内容为B4、03、B0……74、08。 _D 100 10F 图21 用D命令显示100H~10FH单元内容 (2)用F命令将FFH装入100H~10FH单元,并用D命令显示,如图22所示。可以看到这些单元的内容全部变成FFH

26、 _F 100 10F FF _D 100 10F 图22 用F命令填充100H~10FH单元 (3)用M命令将100H~10FH单元的内容复制到200H~20FH单元,用D命令显示200H~20FH单元内容,如图23所示。可以看到两个区域的内容完全一致。 _M 100 10F 200 _D 200 20F 图23 用M命令复制一片存储单元 (4)用E命令修改201H、202H、203H、20DH、20EH、20FH单元内容,并用D命令观察上述单元内容是否改变,如图24示。 图24 用E命令修改单元内容并用D命令观察 _E 201

27、31 32 33 _E 20D 41 42 43 _D 200 20F (5)用C命令比较100H~10FH单元和200H~20FH单元的内容,并显示两者不一致的部分,如图25所示。 _C 100 10F 200 图25 用C命令比较两个区域的内容 (6)E命令和S命令的使用。 _E 300 ‘ABCDEFG’ D 300 306 0AFC: 0300 41 42 43 45 46 47 ABCDEFG _E 310 “*1234*” _D 310 315 0A

28、FC : 0310 2A 31 32 33 34 2A *1234* _E 320 31 32 33 41 42 43 _D 320 325 0AFC : 0320 31 32 33 41 42 43 123ABC _S 300 306 ‘D’ 0AFC : 0303 _S 310 315 ‘D’ _S 310 315 ‘3’ 0AFC : 0313 _S 310 315 ‘*’

29、 0AFC : 0310 0AFC : 0315 注意:S命令下面显示的是搜索内容所对应的单元地址。 附录1 DEBUG的使用 一、DEBUG简介 调试程序DEBUG是一个工具软件,它可帮助用户完成几件事:查看内存(RAM和ROM)和文件内容;编写小型汇编语言源程序;汇编和执行汇编语言源程序;一次一条地执行程序,跟踪程序运行的踪迹,了解程序中每条指令的执行结果;对接口和磁盘进行读写操作。 该程序是以DOS外部命令程序的形式提供的,它的文件名为DEBUG.COM。在进入DEBUG的提示符“_”后,用户可以通过DEBUG的命令输入汇编源程序,并用相应命令将其汇编成机器语言程序,然后调

30、试并运行该程序。 DEBUG除了可运行汇编语言程序外,还可以直接用来检查和修改内存单元、装入、存储及启动运行程序、检查及修改寄存器,也就是说DEBUG可深入到计算机的最底层,可使用户更接近计算机中真正进行工作的层次。 然而能在DEBUG下运行汇编语言源程序也受到了一些限制。如它不宜汇编较长的程序,不便于分块程序设计,不便于形成以DOS外部命令形式构成的可执行文件(*.EXE文件),不能使用浮动地址,也不能使用绝大多数MASM提供的伪指令。 1.直接启动DEBUG程序 如DEBUG.COM在C盘的根目录下,启动的方法是: C:\>DEBUG _ 这时屏幕上会出现“_”提示符,等待键

31、入DEBUG命令。 2.启动DEBUG程序的同时装入文件 命令格式如下: C:\>DEBUG [d:][PATH]filename[.EXT] [d:][PATH]是被调试文件所在磁盘及其路径,filename是被装入文件的文件名,[.EXT]是文件的扩展名。 DOS在调用DEBUG程序后,再由DEBUG把被调试文件装入内存,当被调试文件的扩展名为.COM时,装入偏移量为100H的位置;当扩展名为.EXE时,装入偏移量为0的位置,并建立程序段前缀PSP,为CPU寄存器设置初始值。 虽然DEBUG是为调试可执行程序而设计的,但它实际上也能将用户指定的任意文件装入内存,同时将指令指针

32、寄存器IP置成第一条可执行语句的地址(100H或0),然后等待用户发出命令。 例如:文件A.ASM在C盘,用DEBUG对其进行操作: C:\>DEBUG A.ASM 在提示符下键入d命令(dump),再回车,可显示文件在内存单元的内容,典型的结果如下: _d 0B25:0100 43 4F 44 45 20 53 45 47-4D 45 4E 54 0D 0A 20 20 CODE SEGMENT.. 0B25:0110 20 20 41 53 53 55 4D 45-20 43 53 3A 43 4F 44 45 ASSUME CS:CODE 0B25:012

33、0 0D 0A 53 54 41 52 54 3A-4D 4F 56 20 41 48 2C 30 ..START:MOV AH,0 0B25:0130 31 48 0D 0A 20 20 20 20-20 20 49 4E 54 20 32 31 1H.. INT 21 0B25:0140 48 0D 0A 20 20 20 20 20-20 20 43 4D 50 20 41 4C H.. CMP AL 0B25:0150 2C 27 61 27 0D 0A 20 20-20 20 20 20 20 4A 42 20 ,'a'..

34、 JB 0B25:0160 20 45 58 49 54 0D 0A 20-20 20 20 20 20 20 43 4D EXIT.. CM 0B25:0170 50 20 20 41 4C 2C 27 7A-27 0D 0A 20 20 20 20 20 P AL,'z'.. 键入d命令后,DEBUG显示出从当前位置开始的128个字节。因为DEBUG把A.ASM当作.COM文件看待,所以从位置100h处开始显示。列表左边是内存的逻辑地址,中间用十六进制形式显示内存的内容,右边是以中间的十六进制为ASCII码的对应的字符,不能打印的字符用点表示。 同样

35、只要能准确的定位,就可以用DEBUG还可以查看ROM BIOS内容和中断向量表,也就是说,只要知道ROM BIOS和中断向量表在内存中对应的段和偏移地址,就可以通过d命令进行查看。 3.退出DEBUG 在DEBUG命令提示符“_”下键入Q命令,即可结束DEBUG的运行,返回DOS操作系统环境。 4.在DEBUG环境下建立和汇编程序 在DEBUG环境下用户可以直接建立汇编语言源程序,并可以进行编辑修改,还可以进行汇编。 比如,在DEBUG下运行如下程序: MOV DL,33H ;字符3的ASCII码送DL MOV AH,2

36、 ;使用DOS的2号功能调用 INT 21H ;进入功能调用,输出‘3’ INT 20H ;BIOS中断服务,程序正常结束。 该程序运行结果是在显示器上输出一个字符‘3’。如果要输出其它字符,将程序中3的ASCII码“33H”改为相应字符的ASCII码。其中涉及DOS和BIOS功能调用。因为我们是在DOS操作系统的支持下运行汇编语言程序,所以一般情况下,不能轻易使用输入/输出指令直接通过端口进行数据的输入/输出,

37、而必须使用DOS操作系统提供的子程序完成输入/输出。 DOS功能调用就是为诸如此类的目的设置的。DOS功能调用要求在进入INT 21H调用前,首先将子功能号送AH寄存器,并根据子功能号准备入口参数。上例中INT 21H的2号功能调用将子功能号“2”送入AH,待输出字符的ASCII码送入DL寄存器中。 另外,上例中INT 20H是BIOS中断服务,这一软中断用来正常结束程序。 运行步骤: (1)进入DEBUG 设C盘上有DEBUG.COM程序,进入DOS环境后键人DEBUG,即 C:\>DEBUG 随后屏幕显示: _ “_”号是进入DEBUG的提示符,在该提示符下

38、可键入任意DEBUG命令。 (2)输入程序并汇编 A命令实现在DEBUG提示符下输入汇编语言源程序,并完成汇编: _A 100 169C:0100 MOV DL,33 169C:0102 MOV AH,2 169C:0104 INT 2l 169C:0106 INT 20 169C:0108 至此程序已输入完毕,并汇编成机器指令。在此环境下,默认的数为十六进制数而不是十进制数。 (3)运行程序 可用G命令运行程序: _G 3 Program terminated normally 最后一句英文提示程序正常结束。 (4)反汇编

39、如果想分析一下该程序的指令,可以用反汇编命令U作如下操作: _U 100,108 169C:0100 B233 MOV DL,33 169C:0102 B402 MOV AH,02 169C:0104 CD21 INT 21 169C:0106 CD20 INT 20 169C:0108 (5)将机器指令程序送到起始地址为200H的若干单元 _E 200 B2,33,B4,02,CD,2

40、1,CD,20 (6)执行机器指令程序 _G 200 3 Program terminated normally 二、常用DEBUG命令 DEBUG命令是在命令提示符“_”下由键盘键入的。每条命令以单个字母的命令符开头,然后是命令的操作参数,操作参数与操作参数之间用空格或逗号隔开,操作参数与命令符之间用空格隔开,命令的结束符是回车键(ENTER)。命令及参数的输入可以是大小写的结合,输入的数字默认为十六进制,不必写H。Crtl+Break键可中止命令的执行。Crtl+NumLock键可暂停屏幕卷动,按任一键继续。 重点了解红色标志的命令 1.汇编命令A 格式:(1)A <段

41、寄存器名>:<偏移地址> 例如:a cs:0 (2)A <段地址>:<偏移地址> 例如:a 2000:100 (3)A <偏移地址> 例如:a 100 (4)A 功能:汇编命令是在DEBUG提示符下输入汇编语言指令并汇编为可执行的机器指令。 键人该命令后显示逻辑地址并等待用户从键盘逐条键入汇编语言指令。每当输入一行语句后按“ENTER”键,输入的语句有效。若输入的语句中有错,DEBUG会显示“^ Error”,要求用户重新输入。若结束指令输入,只需在显示的逻辑地址后直接键入回车,则返回到提示符“_”。 在汇编命令A的四种格式中,以不同方式形成逻辑地址

42、1)中用指定的段寄存器内容作段地址;(3)中使用默认的段寄存器CS的内容作段地址;(4)以CS:100作逻辑地址。以后命令中提及的各种‘地址’形式,均指(1)、(2)、(3)中A命令后的地址形式。 2.比较命令C 格式:C <源地址范围>,<目标地址> 其中<范围>是由<起始地址> <终止地址>指出的一片连续单元,或由<起始地址> L <长度>指定的。 功能:从<源地址范围>的起始地址单元起逐个与目标起始地址以后的单元顺序比较单元的内容,直至源终止地址为止。遇有不一致时,以<源地址><源内容><目标内容><目标地址>的形式显示失配单元及内容。 3.显示内存单元命令D 格式:

43、 (1)D <地址> (2)D <地址范围> (3)D 其中<地址范围>是由<起始地址> <终止地址>指出的一片连续单元,或由<起始地址> L <长度>指定的。 例如:D 100 300 D 100 L 200 其中(1),(2)以DS为段寄存器;(3)显示CS: 00为起始地址的一片内存单元内容。 功能:该命令将显示一片内存单元的内容,左边显示行首字节的段地址:偏移地址,中间是以十六进制形式显示的指定范围的内存单元内容,右边是与十六进制数相对应字节的ASCII码字符,对不可见字符以‘•’代替。 4.修改内存单元命令E 格式: (1)E <地址

44、> <单元内容> (2)E <地址> <单元内容表> 其中<单元内容>是一个十六进制数,或是用引号’(或”)括起来的字符串;<单元内容表>是以逗号分隔的十六进制数,或是用’或”括起来的字符串,或者是二者的组合。 两种格式对应的功能: (1) 将指定内容写入指定单元后显示下一地址,以代替原来内容。可连续键入修改内容,直至新地址出现后键入回车为止; (2) 将<单元内容表>逐一写入由<地址>开始的一片单元中,该功能可以将由指定地址开始的连续内存单元中的内容,修改为单元内容表中的内容。 例如:_E DS:30 F8,AB,”AB” 该命令执行后,从DS:30到DS:

45、33的连续4个存储单元底内容将被修改为F8H,ABH,41H,42H。 5.填充内存命令F 格式:F <范围><单元内容表> 功能:将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。 例如:F 05BC:200 L 10 B2,‘XYZ’,3C 该命令将由地址05BC:200开始的10H(16)个存储单元顺序填充“B2,58,59,5A,3C,B2,58,59,5A,3C,B2,58,59,5A,3C,B2” 6.连续执行命令G 格式: (1)G (2)G=<地址> (3)G=<地址>,<断点> 其中(2)、(3)中的“=”是不可缺省的。若缺省,则

46、<地址>被看作断点地址,即连续执行到该处暂停。 三种格式对应的功能: (1) 默认程序从CS:IP开始执行。 (2) 程序从当前的指定偏移地址开始执行。 (3) 从指定地址开始执行,到断点自动停止并显示当前所有寄存器、状态标志位的内容和下一条要执行的指令。DEBUG调试程序最多允许设置10个断点。 7.跟踪命令T 格式:T [=<地址>][<条数>] 功能:如果键入T命令后直接按“ENTER”键,则默认从CS:IP开始执行程序,且每执行一条指令后要停下来,显示所有寄存器、状态标志位的内容和下一条要执行的指令。用户也可以指定程序开始执行的起始地址。<条数>的缺省值是一条,也可以由

47、<条数>指定执行若干条命令后停下来。 例如:T 该命令执行当前指令并显示所有寄存器、状态标志位的内容和下一条要执行的指令。 又例如:T 10 该命令从当前指令开始执行10H条指令后停下来,所有寄存器、状态标志位的内容和下一条要执行的指令。 8.反汇编命令U 格式: (1)U <地址> (2)U <地址范围> 功能:反汇编命令是将机器指令翻译成符号形式的汇编语言指令。该命令将指定范围内的代码以汇编语句形式显示,同时显示其对应的逻辑地址及代码。。注意,反汇编时一定确认指令的起始地址后再作,否则将得不到正确结果。地址及范围的缺省值是上次U指令后下一地址的值,每次反汇编32个

48、字节,可以实现连续反汇编。 9.执行过程命令P 格式:P 功能:执行一条指令或一个过程(子程序),然后显示各寄存器的状态。 说明:该命令主要用于调试程序。它与跟踪命令T的作用类似,T命令是跟踪一条或多条指令,而P命令是执行一条指令(包括带重复前缀的数据串操作指令)或一个完整的过程(子程序)。 例如:设有如下指令序列 : MOV AH,02H INT 21H : 当要执行INT 21H这条指令时,若用T命令进行跟踪,则进入INT 21H程序(DOS功能调用)

49、后,需要数十次T命令才能返回当前程序;若采用P命令进行调试,则只执行INT 21H一条指令,执行完立即返回,给调试者的感觉好象是执行了一条普通指令一样。因此,当读者以后遇到CALL、INT n指令或带重复前缀的数据串操作指令时,若不想观察相应过程的详细执行过程,就可以用P命令。 10.命名待装入文件命令N 格式:N [d:][PATH]filename[.EXT] 功能:N命令一般和L命令联合使用,为L命令定义指定路径的待装入文件的文件名。 11.装入文件命令L 格式:L <地址><盘号><起始逻辑扇区><所读扇区个数n> 其中<地址>的缺省值为CS:100。逻辑扇区可由物

50、理扇区号换算得到,以双面双密度盘为例:物理扇区是按0面0道1区,0面0道2区,…….0面0道9区,0面1道1区,……0面39道9区,1面0道1区,……l面39道9区排列。而逻辑扇区与物理扇区号的对应关系为物理扇区0面0道1扇区至9扇区,逻辑扇区号为0~8;物理扇区1面0道1扇区至9扇区,逻辑扇区号为9~11H;物理扇区0面1道l扇区至9扇区,逻辑扇区号为12~1AH……这样每道先0面后1面一直排下去。 其中<盘号>为0、1或2,0表示A盘,1表示B盘,2表示硬盘。 功能:将<盘号>指定的盘上,从<起始逻辑扇区>起,共n个逻辑扇区上的所有字节顺序读入指定内存地址的一片连续单元。当L后的参数缺

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服