汇编语言程序设计的实验环境及实验步骤
- 格式:doc
- 大小:159.50 KB
- 文档页数:12
实验一熟悉汇编语言使用环境一、实验目的:1、熟悉汇编语言的编辑、汇编、连接、运行的全过程。
2、了解汇编语言的程序结构、学习调用过程实现输入输出及用INCLUDE命令包含文件的方法。
3、算术运算类操作二、实验内容和步骤:1、汇编语言源程序要运行的四个步骤:(1)用编辑软件EDIT或记事本编辑一个扩展文件名为ASM的汇编语言源程序。
(2)用汇编程序MASM或TASM 汇编上述的汇编语言源程序,形成目标代码文件。
(扩展名为OBJ)(3)用连接程序LINK 或TLINK连接目标代码文件,形成可执行文件。
(扩展名为EXE)(4)运行可执行文件。
观察执行结果,以验证其正确性。
2、从键盘上输入两个十进制数正数(<32767),相加并显示结果。
参考程序:.model tiny.stack 256.CODESTART:CALL read ;从键盘接受一个十进制数MOV AX,BXcall dpcrlfCALL read ;从键盘接受一个十进制数ADD bx,aXcall dpcrlf ;回车换行CALL write ;显示结果.exit 0INCLUDE out_B_D.ASM ;把二进制转换为十进制数输出过程:write INCLUDE in_D_B.ASM ;把二进制转换为十进制数输入过程:readEND START3. 改写程序为输入两个十进制数,相减并显示输出。
4.改写程序为输入两个十进制数,相乘并显示输出。
5.改写程序为输入两个十进制数,相除并显示输出。
(注:例4.27read:十进制—>二进制转换过程,出口参数BX=二进制数;例P4.28,write:二进制—>十进制转换过程,入口参数BX=二进制数, dpcrlf:回车换行)三、记录结果与分析:(截图并打印在实验报告上)四、实验中遇到的问题和解决的步骤、方法五、问题与思考(2位压缩BCD加、减及转换成对应ASC输出等运算、字节的非压缩BCD加、减、乘等运算。
汇编语言程序设计的实验环境及实验步骤1、汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行:(1) 编辑源程序(生成.ASM文件)(2) 汇编源程序(.ASM → .OBJ)(3) 连接目标程序(.OBJ → .EXE )(4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件)(5) 运行程序输出结果。
2、Windows环境下的汇编语言集成编程环境的使用实验一 DOS环境下的汇编语言编程环境使用(基础与验证型)实验要求和目的1、掌握汇编语言程序设计的基本方法和技能;2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序;3、熟练掌握宏汇编程序MASM的使用;4、熟练掌握连接程序LINK的使用。
实验涉及的主要知识单元1、编辑源程序例如,编写程序,可以在DOS模式下用编辑程序edit.exe建立汇编语言源程序文件Hello.asm,注意文件名的扩展名必须是.asm。
也可以在Windows 2000或者在Windows XP环境下鼠标单击“开始”→“运行”,在“运行”中输入“cmd”进入DOS模式,运行edit软件,例如:C:> edit hello.asm2、汇编语言源程序的汇编过程汇编程序调入后,首先显示版本号,然后出现三个提示行。
第一个提示行为:Object filename [HELLO.OBJ]:询问目标程序文件名,方括号内为机器规定的默认的文件名,通常直接按回车键,表示采用默认的文件名(如上所示)。
第二个提示行为:Source listing [NUL.LST]:询问是否建立列表文件。
若不建立,直接回车;若要建立,可以输入文件名hello再回车。
列表文件中同时列出源程序和机器语言程序清单,并给出符号表,有利于程序调试。
第三个提示行为:Cross-reference [NUL.CRF]:询问是否要建立交叉索引文件。
若不建立,则直接回车;若要建立,可以输入文件名。
实验一宏汇编MASM5.0运行环境一、实验目的1、熟悉的MASM5.0宏汇编程序运行环境2、掌握用MASM5.0运行汇编语言程序的步骤3、学习及掌握的debug程序的各种命令并调试汇编语言程序。
二、实验仪器计算机、masm汇编运行环境三、实验原理1、建立汇编语言的工作环境(1)编辑程序:EDIT .COM(2)汇编程序:MASM .EXE(3)连接过程:LINK.EXE(4)调试程序:DEBUG .EXE2、运行汇编语言程序的步骤(汇编语言程序的上机过程)在汇编实验步骤的word文档中(请下载参考)。
(1)用汇编程序建立源文件(*.asm)汇编程序:记事本,写字板或EDIT.EXE 。
(文本文件编辑器)扩展名为:.asm(2)用汇编程序(MASM、EXE)产生OBJ文件。
(3)用连接程序(LINK 、EXE)生成EXE文件。
(4)程序的执行直接输入文件名LINKEDIT记事本写字板MASM3、用DEBUG 运行、调试汇编语言程序(1)进入DEBUGC:\ DEBUG (前提DEBUG .COM 程序在C 盘)屏幕显示:- “-”这个符号是进入DEBUG的提示符,在该提示符下可键入任意DEBUG 命令,现在用A命令送程序。
(2)送程序并汇编-A 100169C:0100 MOV DL ,33169C:0102 MOV AH ,2169C:0104 MOV INT 21169C:0106 MOV INT 20169C:0101此程序已送完,并汇编成机器指令(3)现在用G命令一运送程序-G3看一下机器指令是什么样的用反汇编命令U(4)反汇编-U 100 :108段地址偏移地址指令169C :0100 B233 MOV DL ,33169C :0102 B402 MOV AH ,02169C :0104 CD21 INT 21169C :0106 CD20 INT 20169C :D108(5)用Q命令退出DEBUG 返回DOS-QC:\4、DEBUG 命令(1)汇编命令A格式1)A < 段寄存器名>:<位移> ;(段寄器)为段地址2)A <段地址> :<位移> ;(c s) 为段地址3)A <位移> ;4)A ;以CS:100作地址功能:键入该命令后显示的地址和位移并等待用户从键盘逐条键入汇编命令。
计算机汇编语言实验报告一、实验目的本实验旨在通过编写计算机汇编语言程序,加强对计算机组成原理和汇编语言的理解,同时熟悉实际编写和调试过程。
二、实验内容1.用汇编语言编写一个简单的计算器程序,实现加法和减法操作。
2.编译并运行程序,测试其功能的正确性。
3.运用调试工具进行程序的调试,检查代码的运行流程。
三、实验步骤1.确定程序功能和设计思路:本次实验的目标是编写一个计算器程序,能够对两个数进行加法和减法操作。
我们可以通过定义一些操作码来表示不同的操作,再通过输入不同的操作码来执行相应的操作。
2.编写汇编语言程序:首先,需要定义一些变量和常量来存储输入的数和操作码。
然后,使用汇编语言的运算指令和控制指令来实现加法和减法操作,并将结果存储到指定的变量中。
最后,使用输出指令来显示结果。
3.编译并运行程序:将汇编语言程序编译为机器码,并通过计算机的指令集执行程序。
4.调试程序:利用调试工具,逐步执行程序,检查代码的运行流程和结果的正确性。
如有错误,进行适当的修改和调试。
5.测试功能和性能:使用不同的数和操作码进行测试,验证程序的功能和正确性。
四、实验结果经过编写、编译和调试,我们成功实现了一个简单的计算器程序。
程序能够根据输入的操作码,对两个数进行加法和减法操作,并将结果显示出来。
经过多次测试,程序的功能、正确性和性能都符合预期要求。
五、实验感想通过本次实验,我们对计算机组成原理和汇编语言有了更深入的理解。
在编写程序的过程中,我们发现汇编语言相比高级语言更加底层,需要考虑更多的细节和机器指令的使用。
同时,我们也意识到了调试的重要性,调试工具能够帮助我们分析和修正代码的错误,提高程序的质量。
六、实验总结通过本次实验,我们对计算机汇编语言的应用有了更深入的了解。
我们掌握了汇编语言程序的基本结构和语法规则,学会了使用汇编语言指令进行计算和控制。
同时,我们也提升了调试和测试的能力,加深了对计算机组成原理和汇编语言的理解。
汇编语言程序设计实验篇在计算机科学领域中,汇编语言是一种低级编程语言,它直接操作计算机硬件资源,具有高效性和灵活性。
本篇文章将介绍汇编语言程序设计实验的相关内容,包括实验目的、实验环境、实验步骤和实验总结。
实验目的汇编语言程序设计实验的主要目的是使学生掌握使用汇编语言编写程序的基本技能。
通过实践操作,学生将理论知识应用于实际情境中,深化对汇编语言的理解,并培养一定的编程能力。
实验环境在进行汇编语言程序设计实验之前,学生需要准备适当的实验环境。
以下是必备的硬件和软件资源:1. 计算机:一台能够运行汇编语言的计算机。
2. 汇编语言编辑器:如MASM、NASM等,用于编辑和编译汇编语言程序。
3. 调试器:如调试版本的DOSBox、CodeView等,用于调试程序,定位和解决错误。
实验步骤在进行汇编语言程序设计实验时,学生可以按照以下步骤进行操作:1. 确定实验内容:根据实验要求,选择适当的汇编语言程序设计任务,如编写一个计算两个数相加的程序。
2. 编写程序源代码:使用汇编语言编辑器,编写程序的源代码,包括程序的指令、数据段和代码段等。
3. 编译程序:使用编辑器提供的编译指令,将源代码编译成机器码,生成可执行文件。
4. 调试程序:使用调试器,对程序进行调试,定位和解决错误,确保程序能够正常运行。
5. 运行程序:运行已调试通过的程序,验证程序的正确性,并观察程序的执行结果。
6. 优化程序:对程序进行进一步优化,提高程序的执行效率和性能。
7. 总结实验结果:根据实验过程和结果,总结实验经验和教训,思考改进和拓展的可能性。
实验总结通过进行汇编语言程序设计实验,学生可以获得以下收获:1. 熟悉汇编语言:实验使学生更加熟悉汇编语言的语法和指令,增强对计算机底层运行机制的理解。
2. 培养编程能力:实验锻炼学生的编程能力和解决问题的能力,提高他们的逻辑思维和分析能力。
3. 提升实践能力:实验让学生通过实践操作,将理论知识应用于实际情境中,增强实践能力和动手能力。
第1章汇编语言程序设计实验1.1 汇编语言程序设计的实验环境及上机步骤1.1.1 实验环境汇编语言程序设计的实验环境如下。
1.硬件环境微型计算机(Intel x86系列 CPU)1台。
2.软件环境·Windows 98/XP/Me/2000操作系统;·任意一种文本编辑器(EDIT、NOTEPAD(记事本)、UltraEDIT等);·汇编程序(MASM.EXE或TASM.EXE);·链接程序(LINK.EXE或TLINK.EXE);·调试程序(DEBUG.EXE或TD.EXE)。
本书建议文本编辑器使用EDIT或NOTEPAD,汇编程序使用MASM.EXE,链接程序使用LINK.EXE,调试程序使用TD.EXE。
1.1.2 上机步骤汇编语言程序设计的实验2和实验3仅使用TD.EXE,关于TD.EXE的使用方法请参见附录B。
下面介绍的上机实验步骤适用于除实验2和实验3的所有实验(包括硬件接口部分的全部实验)。
1.确定源程序的存放目录建议源程序存放的目录名为ASM,并放在C盘或D盘的根目录下。
如果没有创建过此目录,请用如下方法创建。
通过Windows的资源管理器找到C盘的根目录,在C盘的根目录窗口中单击右键,弹出的菜单中选择“新建”→“文件夹”,并把新建的文件夹命名为ASM。
请把MASM5文件夹下的所有文件及TD.EXE都复制到此目录中。
2.建立ASM源程序建立*.ASM源程序可以使用记事本文本编辑器。
注意:保存时扩展名必须ASM。
设建立的源文件为HELLO.ASM3.用MASM.EXE汇编源程序产生OBJ目标文件源文件HELLO.ASM建立后,要使用汇编程序对源程序文件汇编,汇编后产生二进制的目标文件(.OBJ文件)。
具体操作如下:方法一:在Windows中操作用资源管理器打开源程序目录C:\ASM,把HELLO.ASM拖到MASM.EXE程序图标上。
汇编语言程序设计的实验环境及上机步骤一、实验环境汇编语言程序设计的实验环境如下: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中点击桌面左下角的“开始”按钮→选择“运行”→在弹出的窗口中输入“ C:\ASM\HELLO.ASM”,屏幕上出现EDIT的编辑窗口,如图1所示。
图1 文本编辑器EDIT的编辑窗口窗口标题行显示了EDIT程序的完整路径名。
紧接着标题行下面的是菜单行,窗口最下面一行是提示行。
菜单可以用Alt键激活,然后用方向键选择菜单项,也可以直接用Alt-F打开File文件菜单,用Alt-E打开Edit编辑菜单,等等。
实验一汇编程序的汇编及运行1.实验目的和要求1、熟悉汇编程序的汇编、连接、执行过程2、生成LST文件,查看LST文件3、生成OBJ文件,修改语法错误4、生成EXE文件5、执行2.实验环境IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。
3.实验内容及实验数据记录1、将数据段输入,取名1.txt,保存在MASM文件夹下。
生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。
试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DATA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND2、输入有错误的文件,修改错误语句。
(MASM没有出现错误即可。
不必连接、运行。
)DATA SEGMENTVAR1 DB 0, 25, ODH, 300VAR2 DB 12H, A4H, 6BHVAR3 DB ’ABCDEF’VAR4 DW 1234H, 5678HVAR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DATA BEING MOV AX, DATAMOV DS, AXLEA SI, VAR5MOV BX, OFFSET VAR2MOV [SI], 0ABHMOV AX, VAR1+2MOV [BX], [SI]MOV VAR5+4, VAR4MOV AH, 4CHINT 21HCODE ENDSEND START3、输入正确的程序,汇编、连接、运行STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATASSTART:MOV AX, DATASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START4.算法描述及实验步骤(1)编写源程序。
实验1 汇编语言实验环境与基本操作班级:计科(高职)12-2 姓名:韩长莉学号: 201203014062 上机时间: 2014.4.14 上机地点:一机房指导老师:尉秀梅一.实验目的:1.学习debug的主要用法,熟悉R,D,E,U,T,A等常用的命令。
2.理解堆栈的工作原理,push和pop指令的执行步骤。
3.掌握一个完整的汇编程序从写出到执行的过程,熟悉用debug跟踪程序的执行过程。
二.实验内容:1.查看cpu和内存,用机器指令和汇编指令编程(p35)2.用机器指令和汇编指令编程(p71)3.编程、编译、连接、跟踪(94页)三.实验步骤1.查看cpu和内存,用机器指令和汇编指令编程(p35)(1)使用debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,cpu中相关寄存器中内容的变化。
提示:可用E命令和A命令,以两种方式将指令写入内存。
注意用t命令执行时,cs:ip的指向。
写清楚具体用这两种方式的操作方法。
C:\Users\Administrator>debug-e 1000:0 b8 20 4e 05 16 14 bb 00 20 01 d8 89 c3 01 d8 b8 1a 00 bb 26 00 00 d8-u 1000:01000:0000 B8204E MOV AX,4E201000:0003 051614 ADD AX,14161000:0006 BB0020 MOV BX,20001000:0009 01D8 ADD AX,BX1000:000B 89C3 MOV BX,AX1000:000D 01D8 ADD AX,BX1000:000F B81A00 MOV AX,001A1000:0012 BB2600 MOV BX,00261000:0015 00D8 ADD AL,BL1000:0017 28752D SUB [DI+2D],DH1000:001A 807C0429 CMP BYTE PTR [SI+04],291000:001E 7554 JNZ 0074-rAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=13C0 IP=0100 NV UP EI PL NZ NA PO NC13C0:0100 0000 ADD [BX+SI],AL DS:0000=CDCS13C0:1000-ripIP 0100-rAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0000 NV UP EI PL NZ NA PO NC1000:0000 B8204E MOV AX,4E20-tAX=4E20 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0003 NV UP EI PL NZ NA PO NC1000:0003 051614 ADD AX,1416-tAX=6236 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0006 NV UP EI PL NZ NA PE NC1000:0006 BB0020 MOV BX,2000-tAX=6236 BX=2000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0009 NV UP EI PL NZ NA PE NC1000:0009 01D8 ADD AX,BXAX=001A BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0015 OV UP EI PL NZ NA PE CY1000:0015 00D8 ADD AL,BL-tAX=0040 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0017 NV UP EI PL NZ AC PO NC1000:0017 28752D SUB [DI+2D],DH DS:002D=0D-e 1000:17 00 dc 00 c7 b4 00 00 d8 04 9c-u 1000:171000:0017 00DC ADD AH,BL1000:0019 00C7 ADD BH,AL1000:001B B400 MOV AH,001000:001D 00D8 ADD AL,BL1000:001F 049C ADD AL,9C1000:0021 44 INC SP1000:0022 032C ADD BP,[SI]1000:0024 30724D XOR [BP+SI+4D],DH1000:0027 3C07 CMP AL,071000:0029 7749 JA 00741000:002B A2A756 MOV [56A7],AL1000:002E FE064057 INC BYTE PTR [5740]1000:0032 83C605 ADD SI,+051000:0035 813C2C53 CMP WORD PTR [SI],532CAX=0040 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0017 NV UP EI PL NZ AC PO NC1000:0017 00DC ADD AH,BL-rcsCS 1000:1000-ripIP 0017:0-rAX=0040 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0000 NV UP EI PL NZ AC PO NC1000:0000 B8204E MOV AX,4E20-tAX=4E20 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0003 NV UP EI PL NZ AC PO NC1000:0003 051614 ADD AX,1416-tAX=6236 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0006 NV UP EI PL NZ NA PE NC1000:0006 BB0020 MOV BX,2000-AX=2640 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=001B NV UP EI PL NZ NA PO NC1000:001B B400 MOV AH,00-tAX=0040 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=001D NV UP EI PL NZ NA PO NC1000:001D 00D8 ADD AL,BL-tAX=0066 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=001F NV UP EI PL NZ NA PE NC1000:001F 049C ADD AL,9C-t(2)将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
汇编语言程序设计的实验环境及实验步骤1、汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行:(1) 编辑源程序(生成.ASM文件)(2) 汇编源程序(.ASM → .OBJ)(3) 连接目标程序(.OBJ → .EXE )(4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件)(5) 运行程序输出结果。
2、Windows环境下的汇编语言集成编程环境的使用实验一 DOS环境下的汇编语言编程环境使用(基础与验证型)实验要求和目的1、掌握汇编语言程序设计的基本方法和技能;2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序;3、熟练掌握宏汇编程序MASM的使用;4、熟练掌握连接程序LINK的使用。
实验涉及的主要知识单元1、编辑源程序例如,编写程序,可以在DOS模式下用编辑程序edit.exe建立汇编语言源程序文件Hello.asm,注意文件名的扩展名必须是.asm。
也可以在Windows 2000或者在Windows XP环境下鼠标单击“开始”→“运行”,在“运行”中输入“cmd”进入DOS模式,运行edit软件,例如:C:> edit hello.asm2、汇编语言源程序的汇编过程汇编程序调入后,首先显示版本号,然后出现三个提示行。
第一个提示行为:Object filename [HELLO.OBJ]:询问目标程序文件名,方括号内为机器规定的默认的文件名,通常直接按回车键,表示采用默认的文件名(如上所示)。
第二个提示行为:Source listing [NUL.LST]:询问是否建立列表文件。
若不建立,直接回车;若要建立,可以输入文件名hello再回车。
列表文件中同时列出源程序和机器语言程序清单,并给出符号表,有利于程序调试。
第三个提示行为:Cross-reference [NUL.CRF]:询问是否要建立交叉索引文件。
若不建立,则直接回车;若要建立,可以输入文件名。
以上过程也可用masm hello;一步完成。
最后的;表示masm命令全部用默认选项,不出现三个提示。
2、目标程序的连接过程在连接程序调入后,首先显示版本号,然后出现三个提示行。
第一个提示行为:Run File [HELLO.EXE]:询问要产生的可执行文件的文件名。
一般直接回车采用规定的隐含文件名。
第二个提示行为:List File [NUL.MAP]:询问是否要建立连接映象文件。
若不建立,则直接回车;若要建立,则输入文件名再回车。
第三个提示行为:Libraries [.LIB]:询问是否用到库文件。
若无特殊需要,则直接回车即可。
以上过程也可使用link hello;一步完成。
最后的;表示link命令全部用默认选项,不出现三个提示。
4、当建立了可执行文件HELLO.EXE后,就可直接在DOS下执行该程序:5、MASM编译源文件后,用DEBUG调试可执行文件。
在“命令提示符”窗口下执行“DEBUG<文件所在路径+文件名>”指令实验二 Debug的使用(基础与验证型)实验要求和目的熟练掌握动态调试程序DEBUG的使用;实验涉及的主要知识单元启动Debug程序:在DOS状态下可以用下面的命令启动Debug程序:DEBUG [路径文件名.扩展名]Debug后面的文件名及路径是指被调试程序的文件名及路径,Debug后面的文件必须是程序的可执行文件,其扩展名可以是.EXE 或.COM。
在此命令后,DOS将调试程序Debug调入内存,Debug接着将被调程序送入内存。
比如:DEBUG 123.EXE调试程序Debug的主要命令如下:(一)显示内存单元内容的命令D格式(1):-D 地址从指定地址开始,显示128个字节的内容,每一行的左边显示段内偏移地址,接着显示16个单元的内容,最右边区域则显示这一行的16个单元所对应的可显示的字符。
若无可显示的字符,则用圆点(小数点)填充。
D命令中的地址可为段内偏移量,也可为段基址和段内偏移量两部分,中间用冒号隔开,如1680:0110,即指段基址为1680H,段内偏移量为0110H。
Debug中所显示的数据均为十六进制数,且省去了后面的H 标志。
格式(2):-D 范围将显示指定地址范围内的内存单元的内容,起始地址可由段基址及段内偏移量两个部分组成,中间用冒号“:”隔开,也可以只指出段内偏移量,而此时的段基址在DS中。
这里所说的范围包含起始地址和结束地址。
比如–D DS:1000 1020 将显示数据段偏移地址为1000H到1020H的内容。
(二)修改内存单元内容的命令E格式(1):-E 地址内容表它的功能是用给定的内容表去代替所指定的内存单元的内容。
例如:E DS:0110 41 ‘CLOSE’41该命令执行后,将用列表中的7个字符填入从DS:0110 到DS:0116 的7个存储单元中。
格式(2):-E 地址它的功能是可以连续地逐个修改内存单元的内容。
当屏幕上显示指定单元的地址和内容之后,可采取下列办法:①若指定单元的内容需要修改,则将新的内容的十六进制数输入,再按空格键,修改便告完成,然后显示下一个存储单元的地址及内容,若需要修改,可进行同样的操作。
若某一个单元的内容不需要修改,而操作又要进行下去,则可直接按空格键。
②若需要显示前一个单元的地址和内容,则输入连接号′-′,若要修改,则输入新的内容;若显示前一个单元的地址和内容仍要修改,则可进行同样的操作;若显示的内容不需要修改,则可直接按′-′键,使该操作由高地址向低地址单元连续不断地进行。
③按<CR>键,结束E命令。
(三)检查和修改寄存器内容的命令R格式(1):R此时将显示所有寄存器的内容和全部标志位的状态,以及现行CS:IP所指的机器指令代码和反汇编符号。
格式(2):R 寄存器名该格式可用于检查和修改指定寄存器的内容。
若不修改其内容,可按<CR>键,若需要修改其内容,可以输入1-4 个十六进制数,再按<CR>键。
格式(3):RF该格式可用于显示标志和修改标志位状态。
当系统给出标志位状态后,可采取下列办法:①若不需要修改任一标志位,可按<CR>键。
②若需要修改一个或多个标志位,可输入其相反的值。
各标志位之间可以无空格且与顺序无关,修改后按<CR>键。
由于标志位状态显示时,是用下列特殊符号表示的,因而修改时,只要输入规定的符号即可。
下面是标志名和状态符号的对照表:标志名置位符号复位符号溢出标志OF(是/否) OV NV方向标志DF(减/增) DN UP中断标志IF(允许/禁止) EI DI符号标志SF(负/正) NG PL零标志ZF(是/否) ZR NZ辅助进位标志AF(是/否) AC NA奇偶校验标志PF(偶/奇) PE PO进位标志CF(是/否) CY NC只有追踪标志TF,不能用指令直接修改。
例如:输入RF命令,系统可能作出如下响应:OV DN EI NG ZR AC PE CY -若现在要修改奇偶、零、中断和溢出标志位,可在光标处输入:PO NZ DI NV<CR>(四)运行程序命令G格式:G [=地址][地址[地址…]]该命令可以在程序运行中设置断点。
它是Debug程序进行程序调试的主要命令之一。
示例:-g 001a 则执行从当前cs:ip至001a的指令,注意:地址设置必须从指令的第一字节设起。
①第一个参数“=地址”规定了程序执行的起始地址,以CS内容作段地址,等号后面的地址只需给出地址偏移量。
此时,命令G与地址之间的等号不能省去。
如果在G命令执行前,已经设置了CS值和IP值,则也可以直接用G命令,从指定地址执行程序。
②格式中后面给出的地址是指断点地址,最多可设置10个断点。
当程序执行到一个断点时,就停下来,显示CPU各寄存器的内容和标志位的状态,以及下一条待执行的指令,被调试程序的所有断点全部被取消,并返回Debug。
③地址参数所指的单元,必须包含有有效的8088指令的第一个字节,否则将产生不可预料的结果。
④堆栈必须至少包含有6个可用字节,否则也将产生不可预料的结果。
⑤若断点地址只包括地址偏移量,则认为段地址在CS寄存器中。
(五)追踪命令T格式(1):T [=地址]该命令可以在指令执行中进行追踪,若略去地址,则从CS:IP现行值执行。
每一次T命令都执行一条指令。
格式(2):T [=地址][值]此时,它可对多条指令进行追踪,即在执行了由值所指定的若干条指令之后,停止执行并显示各寄存器的内容和各标志位,还指出下一条待执行的指令。
(六)汇编命令A若在调试目标程序的过程中,要求改写或增添一段目标程序,则可以用A命令直接在Debug下实现。
格式:A [地址]该命令可以从指定地址开始,将输入的汇编语言语句立即汇编成机器代码,连续存放在内存单元中。
在程序输入完毕后,最后一行不输入内容,直接按回车键,即可返回DEBUG程序,还可用反汇编命令U 对刚输入的内容进行反汇编,以验证输入的程序是否正确。
使用A命令应遵守以下规则:①所有输入数值,均为十六进制数。
②前缀助记符,必须在相关指令的前面输入,可以在同一行,也可以在不同行输入。
③段超越助记符为CS:、DS:、ES:、SS:。
④远调用时的返回指令助记符用RETF。
⑤使用串操作指令时,助记符中必须注明是字节还是字传送。
⑥汇编语言能自动汇编短、近和远的转移及近和远的调用,也能由NEAR和FAR前缀来超越。
例如:0110:0600 JMP 602;短转移0110:0602 JMP NEAR 605;近转移0110:0605 JMP FAR 60A;远转移第一条JMP指令中含有一个字节偏移量。
第二条JMP指令中含有两个字节偏移量。
第三条JMP指令中含有两个字节的偏移量及两个字节的段地址。
⑦当DEBUG不能确定某些操作数涉及的是字类型存储单元还是字节类型的存储单元时,在这种情况下,必须用前缀“WORD PTR”或“BYTE PTR”来加以说明。
例如:NEG BYTE PTR [128]DEC WORD [SI]⑧当Debug不能确定一个操作数是立即数还是存储单元的地址时,可以把地址放在方括号中。
⑨两个最常用的伪指令DB和DW可以在A命令中使用,用来直接把字节或字的值送入相应的存储单元。
例如:DB 2,5,3,4,′THIS IS AN EXAMPLE′DW 6000,2000,7000,′BA′⑩Debug支持所有形式的寄存器间接寻址命令。
例如:ADD BX,74[BP+3][SI-5]POP[BX+DI](七)反汇编命令U格式(1):U地址该命令从指定的地址开始,反汇编32个字节。
若略去指定地址,则以上一个U命令反汇编的最后一条指令地址的下一条指令地址作为起始地址;若没有用过U命令,则以由Debug初始化的段寄存器的值作段地址,以100作为地址偏移量。