已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一 汇编语言上机环境及基本操作1汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。设定源程序的文件名为ABC。DATASEGMENT BUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FH CN EQU $-BUF DATAENDSSTACKSEGMENT STACK STACK STA DB 10 DUP(?) TOP EQU $-STA STACKENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:PUSH DS XOR AX,AX PUSH AXMOV AX,DATA MOV DS,AX MOV BX,OFFSET BUF MOV CX,CN DEC CX MOV AL,BX INC BX LP:CMP AL,BX JBE NEXT MOV AL,BX NEXT:INC BX DEC CX JNZ LP MOV AH,4CH INT 21H CODEENDS END START 键入以下命令:C:EDIT ABC.ASM此时屏幕的显示状态如图1所示。图1 用EDIT编辑ABC.ASM程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。2 将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。(3)若程序中使用了宏指令,则汇编程序将展开宏指令。源程序建立以后,在DOS状态下,采用宏汇编程序MASM对源程序文件进行汇编,其操作过程如图2所示。图2 MASM宏汇编程序工作窗口汇编过程的错误分警告错误(Warning Errors)和严重错误(Severe Errors)两种。其中警告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数、错误的性质。这时,就要对错误进行分析,找出原因和问题,然后再调用屏幕编辑程序加以修改,修改以后再重新汇编,一直到汇编无错误为止。3用连接程序生成可执行程序文件经汇编以后产生的目标程序文件(.OBJ文件)并不是可执行程序文件,必须经过连接以后,才能成为可执行文件(即扩展名为.EXE)。连接过程如图3所示。图3 LINK连接程序工作窗口上述提示行回答以后,连接程序开始连接,如果连接过程中出现错误,则显示出错误信息,根据提示的错误原因,要重新调入编辑程序加以修改,然后重新汇编,再经过连接,直到没有错误为止。连接以后,便可以产生可执行程序文件(.EXE文件)。4程序的执行当我们建立了正确的可执行文件以后,就可以直接在DOS状态下执行该程序。如:C:ABC 本程序当中没有用到DOS中断调用指令,所以在屏幕上看不到程序执行的结果。我们可以采用调试程序DEBUG来进行检查,相关内容请参见实验二。二 DEBUG调试程序的应用1直接启动DEBUG程序如DEBUG.COM在C盘的根目录下,启动的方法是:C:DEBUG_这时屏幕上会出现“_”提示符,等待键入DEBUG命令。2启动DEBUG程序的同时装入被调试文件命令格式如下:C:DEBUG d:PATHfilename.EXTd:PATH是被调试文件所在盘及其路径,filename是被调试文件的文件名,.EXT是被调试文件的扩展名。例如:BCDSUM.EXE可执行文件在A盘,用DEBUG对其进行调试的操作命令如下。C:DEBUG A:BCDSUN.EXEDOS在调用DEBUG程序后,再由DEBUG把被调试文件装入内存,当被调试文件的扩展名为COM时,装入偏移量为100H的位置,当扩展名为EXE时,装入偏移量为0的位置,并建立程序段前缀PSP,为CPU寄存器设置初始值。3退出DEBUG在DEBUG命令提示符“_”下键入Q命令,即可结束DEBUG的运行,返回DOS操作系统。4在DEBUG环境下建立和汇编程序在DEBUG环境下用户可以直接建立汇编语言源程序,并可以进行编辑修改,还可以进行汇编。比如,在DEBUG下运行如下程序:MOV DL,33H ;字符3的ASCII码送DLMOV AH,2 ;使用DOS的2号功能调用INT 21H ;进入功能调用,输出3INT 20H ;BIOS中断服务,程序正常结束。该程序运行结果是在显示器上输出一个字符3。如果要输出其它字符,请改变程序中33H为相应字符的ASCII码。其中涉及DOS和BIOS功能调用。因为我们是在DOS的支持下运行汇编语言程序,所以一般情况下,不能轻易使用输入/输出指令直接通过端口输入输出,而必须使用DOS内部提供的子程序完成输入/输出。DOS功能调用就是为诸如此类的目的设置的。DOS功能调用要求在进入INT 21H调用前,首先将功能调用号送AH寄存器,并根据功能调用号准备初始数据。也就是说INT 21H的2号功能调用是输出DL寄存器中的字符。INT 20H是BIOS中断服务,这一软中断用来正常结束程序。运行步骤:(1)进入DEBUG设C盘上有DEBUG.COM程序,进入DOS环境后键人DEBUG,即C:DEBUG随后屏幕显示:_“_”号是进入DEBUG的提示符,在该提示符下可键入任意DEBUG命令。现在用A命令输入程序如下:(2)输入程序并汇编_A 100169C:0100 MOV DL,33169C:0102 MOV AH,2169C:0104 INT 2l169C:0106 INT 20169C:0108至此程序已输入完毕,并汇编成机器指令。现在用G命令运行程序如下:(3)运行程序_G3Program terminated normally如果现在想分析一下该程序的指令,可以用反汇编命令U作如下操作:(4)反汇编_U 100,108169C:0100 B233 MOV DL,33169C:0102 B402 MOV AH,02169C:0104 CD21 INT 21169C:0106 CD20 INT 20169C:0108(5)将机器指令程序送到起始地址为200H的若干单元_E 200 B2,33,B4,02,CD,21,CD,20(6)执行机器指令程序_G=2003Program terminated normally三、常用DEBUG命令DEBUG命令是在命令提示符“_”下由键盘键入的。每条命令以单个字母的命令符开头,然后是命令的操作参数,操作参数与操作参数之间,用空格或逗号隔开,操作参数与命令符之间用空格隔开,命令的结束符是回车键(ENTER)。命令及参数的输入可以是大小写的结合。Crtl+Break键可中止命令的执行。Crtl+NumLock键可暂停屏幕卷动,按任一键继续。所用的操作数均为十六进制数,不必写H。1汇编命令A格式: (1)A :(2)A :(3)A (4)A功能:汇编命令是将用户输入的汇编语言指令,汇编为可执行的机器指令。键人该命令后显示段地址和偏移地址并等待用户从键盘逐条键入汇编语言指令。每当输入一行语句后按“ENTER”键,输入的语句有效。若输入的语句中有错,DEBUG会显示“ Error”,要求用户重新输入,直到显示下一地址时用户直接键入回车键返回到提示符“_”。其中(1)用指定段寄存器内容作段地址;(3)用CS内容作段地址;(4)以CS:100作地址。以后命令中提及的各种地址形式,均指(1)、(2)、(3)中A命令后的地址形式。2比较命令C格式:C ,其中是由指出的一片连续单元,或由 L 指定的。功能:从的起始地址单元起逐个与目标起始地址以后的单元顺序比较单元的内容,直至源终止地址为止。遇有不一致时,以的形式显示失配单元及内容。3显示内存单元命令D格式: (1)D (2)D (3)D其中(1)以CS为段寄存器;(3)显示CS:100为起始地址的一片内存单元内容。功能:该命令将显示一片内存单元的内容,左边显示行首字节的段地址:偏移地址,中间是以十六进制形式显示的指定范围的内存单元内容,右边是与十六进制数相对应字节的ASCII码字符,对不可见字符以代替。4修改内存单元命令E格式: (1)E (2)E 其中是一个十六进制数,或是用引号(或”)括起来的字符串;是以逗号分隔的十六进制数,或是用或”括起来的字符串,或者是二者的组合。功能:(1)将指定内容写入指定单元后显示下一地址,以代替原来内容。可连续键入修改内容,直至新地址出现后键入回车为止;(2)将逐一写入由开始的一片单元中,该功能可以将由指定地址开始的连续内存单元中的内容,修改为单元内容表中的内容。例如:_E DS:30 F8,AB,”AB”该命令执行后,从DS:30到DS: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)中的“=”是不可缺省的。功能:l 默认程序从CS:IP开始执行。l 程序从当前的指定偏移地址开始执行。l 从指定地址开始执行,到断点自动停止并显示当前所有寄存器、状态标志位的内容和下一条要执行的指令。DEBUG调试程序最多允许设置10个断点。7跟踪命令T格式:T =功能:如果键入T命令后直接按“ENTER”键,则默认从CS:IP开始执行程序,且每执行一条指令后要停下来,显示所有寄存器、状态标志位的内容和下一条要执行的指令。用户也可以指定程序开始执行的起始地址。的缺省值是一条,也可以由指定执行若干条命令后停下来。例如:T该命令执行当前指令并显示所有寄存器、状态标志位的内容和下一条要执行的指令。又例如:T 10 该命令从当前指令开始执行10H条指令后停下来,所有寄存器、状态标志位的内容和下一条要执行的指令。8反汇编命令U格式: (1)U (2)U 功能:反汇编命令是将机器指令翻译成符号形式的汇编语言指令。该命令将指定范围内的代码以汇编语句形式显示,同时显示地址及代码。注意,反汇编时一定确认指令的起始地址后再作,否则将得不到正确结果。地址及范围的缺省值是上次U指令后下一地址的值。这样可以连续反汇编。9执行过程命令P格式:P功能:执行一条指令或一个过程(子程序),然后显示各寄存器的状态。说明:该命令主要用于调试程序。它与跟踪命令T的作用类似,T命令是跟踪一条或多条指令,而P命令是执行一条指令(包括带重复前缀的数据串操作指令)或一个完整的过程(子程序)。例如:设有如下指令序列 : MOV AH,02H INT 21H :当要执行INT 21H这条指令时,若用T命令进行跟踪,则进入INT 21H程序(DOS功能调用)后,需要数十次T命令才能返回当前程序;若采用P命令进行调试,则只执行INT 20H一条指令,执行完立即返回,给调试者的感觉好象是执行了一条普通指令一样。因此,当读者以后遇到CALL、INT n指令或带重复前缀的数据串操作指令时,若不想观察相应过程的详细执行过程,就可以用P命令。10定义待装入文件命令N格式:N d:PATHfilename.EXT功能:N命令一般和L命令联合使用,为L命令定义指定路径的待装入文件。11装入文件命令L格式:L 其中的缺省值为CS:100。逻辑扇区可由物理扇区号换算得到,以双面双密度盘为例:物理扇区是按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扇区,逻辑扇区号为08;物理扇区1面0道1扇区至9扇区,逻辑扇区号为911H;物理扇区0面1道l扇区至9扇区,逻辑扇区号为121AH这样每道先0面后1面一直排下去。其中为0、1或2,0表示A盘,1表示B盘,2表示硬盘。功能:将指定的盘上,从起,共n个逻辑扇区上的所有字节顺序读入指定内存地址的一片连续单元。当L后的参数缺省时,必须在L之前由N命令指定(或进入DEBUG时一并指出)所读盘文件名。此时L执行后将该文件装入内存。例如:_N EXAMPLE_L将当前盘上的EXAMPLE文件装入CS:100起始的一片内存单元。12内存单元搬家命令M格式:M 其中源及目标地址若仅输入偏移量,则隐含相对DS。功能:把中的内容顺序搬至起的一片连续单元。例如:M CS:100 110 600该命令把由CS:100起到CS:110止共17个字节搬至DS:600至DS:610的一片单元。13写盘命令W格式:W 功能:该命令是将内存起始的一片单元内容写入指定扇区。只有W而没有参数时,与N命令配合使用使用户完成写盘操作。用户可用N命令先定义被调试的文件,再将被调试文件的字节长度值送BX、CX(BX寄存器存放字节长度值的高位,CX寄存器存放字节长度值的低位),最后用写盘命令W将被调试文件存入磁盘。例如:欲将D1.COM文件写入磁盘,设文件长度为40字节,可进行如下操作。_N D1.COM_R CXCX xxxx:0040_R BXBX xxxx:0000_WWriting 00040 bytes14显示命令R格式: (1)R(2)R 功能:显示当前所有寄存器内容、状态标志及将要执行的下一指令的地址(即C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《分馏系统》课件
- 《妈妈的账单课堂》课件
- 小学一年级20以内100道口算题
- 电工安全培训资料(5篇)
- 石榴籽一家亲民族团结心连心心得体会5篇
- 小学数学一二年级100以内连加连减口算题
- 《用户画像业务讨论》课件
- 小学数学三年级下册《小数点加减法》口算练习题
- 《刑事诉讼法学教学》课件
- 小学三年级数学三位数加减法练习题-可直接打印
- 金工钒钛科技有限公司-年处理600万吨低品位钒钛磁铁矿选矿项目可行性研究报告
- ncv65系列安装金盘5发版说明
- 国能神皖安庆发电有限责任公司厂内108MW-108MWh储能项目环境影响报告表
- 华中师大《线性代数》练习测试题库及答案4096
- 铁路试验检测技术
- 2023-2024人教版小学2二年级数学下册(全册)教案【新教材】
- 小学奥数基础教程(附练习题和答案)
- 九年级语文上学期教学工作总结
- TWSJD 002-2019 医用清洗剂卫生要求
- GB/T 7324-2010通用锂基润滑脂
- 杭州地铁一号线工程某盾构区间实施施工组织设计
评论
0/150
提交评论