汇编语言上机操作
- 格式:doc
- 大小:53.50 KB
- 文档页数:6
汇编上机汇编语言步骤汇编语言是一种底层的计算机语言,用于将人类可读的指令转换为机器可执行的指令。
它在计算机体系结构和操作系统的开发以及底层编程中起着重要作用。
本文将介绍汇编语言的上机实践步骤,帮助读者更好地理解和应用汇编语言。
I. 准备工作在进行汇编语言编程之前,需要做一些准备工作。
1. 硬件环境准备确保计算机硬件环境能够支持汇编语言编程。
通常,需要一台计算机和合适的开发环境,例如Masm、NASM等。
2. 软件环境准备根据个人喜好和需求,选择合适的开发环境和工具。
例如,可以使用文本编辑器编写源代码,并使用汇编器将其汇编为机器码。
同时,还需要安装调试工具,用于调试和测试编写的程序。
3. 学习资料准备在开始上机实践之前,建议阅读相关的汇编语言教材、文档或参考书籍,了解基本的汇编语言概念和语法规则。
这将有助于更好地理解和应用汇编语言。
II. 编写汇编程序一旦准备工作完成,我们可以开始编写汇编程序了。
以下是编写汇编程序的一般步骤。
1. 分析问题和设计首先,明确问题的需求和目标。
然后,设计程序的逻辑结构,确定需要使用的指令和算法。
2. 编写源代码使用选择的文本编辑器编写源代码。
按照汇编语言的语法规则,逐行编写汇编指令,并添加必要的注释和标签。
3. 汇编程序保存源代码文件,并使用汇编器将源代码转换为机器码。
这一步骤会生成可执行文件,即汇编程序。
4. 运行和调试运行汇编程序,并使用调试工具进行调试。
通过逐步执行代码、监视变量和寄存器的值,可以定位和解决程序中的错误。
III. 优化和扩展完成基本的汇编程序后,可以考虑进行优化和扩展,以提高程序的性能和功能。
1. 代码优化优化汇编程序,使其更高效、更可靠。
可以通过减少指令数量、减少内存访问、使用更有效的算法等方式进行优化。
2. 功能扩展根据需求,添加新的功能或功能模块。
这可能包括输入输出处理、文件操作、图形界面等。
IV. 运行和测试完成优化和扩展后,进行运行和测试。
实验一熟悉汇编语言程序设计的实验环境及上机步骤一、实验目的:1、掌握文本编辑程序EDIT的基本使用方法。
2、熟练掌握汇编语言上机操作的基本步骤,学会汇编语言程序的编辑、汇编、连接、运行等操作方法。
二、上机实验指导(一)实验环境1.硬件环境微型计算机(Intel x86系列CPU)一台2. 软件环境⏹Windows98/2000/XP操作系统⏹文本编辑器(NOTEPAD(记事本))⏹汇编程序(MASM.EXE)⏹连接程序(LINK.EXE)(二)上机实验步骤上机步骤总结如下:1.把汇编程序拷贝到 C:\ASM\2.用记事本建立ASM源程序,保存为C:\ASM\HELLO.ASM3.汇编 C:\ASM>MASM HELLO.ASM<回车>4.链接C:\ASM>LINK HELLO.OBJ<回车>5.执行C:>ASM>HELLO〈回车〉下面详细介绍上机步骤:1.确定源程序的存放目录建议源程序存放的目录名为ASM(或MASM),并放在C盘或D盘的根目录下。
创建方法:找到C盘的根目录,在C盘的根目录窗口中点击右键,在弹出的菜单中选择“新建”→“文件夹”,并把新建的文件夹命名为ASM。
请把MASM.EXE、LINK.EXE都拷贝到此目录中。
2.建立ASM源程序使用NOTEPAD(记事本)文本编辑器建立ASM源程序。
打开记事本,输入源程序后,保存为后缀为.ASM的文件,保存路径为C:\ASM\HELLO.ASM。
3.用MASM.EXE汇编源程序产生OBJ目标文件具体操作如下:在DOS命令提示符窗口中操作选择“开始”→“程序”→“附件”→“命令提示符”,打开DOS命令提示符窗口,然后用CD命令转到源程序目录下,接着输入MASM命令:C:\Documents and Settings>cd..(回车,退回到上一级根目录)C:>CD ASM<回车>C:\ASM>MASM HELLO.ASM<回车>操作时的屏幕显示如图2所示。
汇编语言的上机过程汇编语言程序的上机过程包括编辑、汇编、连接和执行这四个步骤。
汇编程序我们提供宏汇编程序MASM5.0和MASM6.14两个版本。
1、建立源程序文件建立和编辑汇编语言源程序可以使用EDIT、记事本、写字本,也可以使用TC等来输入源程序。
保存时,源程序文件的扩展名必须是ASM。
练习:(1)在DOS下用编辑软件EDIT建立如下源程序文件,将文件保存为Hello.ASM,保存在MASM5目录下。
(调用命令“C:\EDIT”进入EDIT编辑器。
)源程序文件如下:DSEG SEGMENTMESSAGE DB 'HOW DO YOU DO?',0DH,0AH,24HDSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGBEGIN:MOV AX,DSEGMOV DS,AXMOV DX,OFFSET MESSAGEMOV AH,9INT 21HMOV AH,4CHINT 21HCSEG ENDSEND BEGIN(2)编程计算1+2+3+ ……+100,和放在AX寄存器中,要求用循环实现。
对于MASM5.0和MASM6.14两个版本,编译和连接的方法有所不同。
以下分别就两个版本的编译和连接的方法进行讲解。
如果使用MASM5.0的话,操作方法如下(以HELLO.ASM源程序文件为例):2、对源程序进行汇编,生成目标文件HELLO.OBJ。
操作:(1)在DOS下进入MASM5.0的目录,如C:\MASM5>(2)敲入命令: MASM HELLO说明:.obj文件:目标代码文件,纯二进制代码文件,不能直接显示在屏幕上。
.lst文件:包含源程序中各语句及其对应的目标代码,各语句的偏移量等相关信息,对调试程序有帮助,但一般情况不需要。
.crf文件:交叉索引文件,给出源程序中定义的符号引用情况,初学时不需建立。
3、连接目标文件,生成执行文件HELLO.EXE,操作:敲入命令LINK HELLO说明:.EXE文件:可执行文件.MAP文件:连接映象文件,包括各个段在存储器中的分配情况,初学时不需要。
汇编语言上机操作汇编语言上机操作一、建立子文件夹如:D:\hb\masm二、复制相关文件把masm.exe、link.exe、ml.exe三个文件复制到上述文件夹中。
三、进入DOS方式开始/运行/cmd当前提示符可能是:C:\documents and settings\administrator>四、常用DOS操作命令1、改变当前盘输入d: 并回车,屏幕显示:D:\>2、改变当前目录1)进入下一级目录D:\>cd hb 回车后,屏幕显示:D:\hb>cd masm 回车后,屏幕显示:E:\hb\masm>问题:可以一次进入下面二级或多级目录吗?2)返回上一级目录D:\hb\masm>cd.. 回车后,屏幕显示:D:\hb\>cd.. 回车后,屏幕显示:D:\>问题:可以直接返回根目录吗?D:\hb\masm>cd\ 回车后,屏幕显示:D:\>3、显示当前目录内容D:\>dir /p 分页显示当前目录内容问题:如何显示d:\text中的内容?D:\>dir d:\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\m asm>masm add5.asm↙生成目标程序文件add5.obj。
(如果有语法错误,会提示错误所在行号和错误类型)3、连接D:\hb\masm>link add5↙生成可执行文件add5.exe。
六、DEBUG程序调用及汇编语言程序调试方法调试程序DEBUG是DOS支持的又一种系统软件,主要用于汇编语言程序的调试。
实验一上机操作一、实验目的掌握汇编语言程序编辑、汇编、连接、运行以及利用DEBUG调试程序的方法。
二、实验设备PC机及相应的软件。
三、实验内容及步骤1、编辑一个指定的汇编语言源程序,并对其进行汇编、连接和运行。
2、利用DEBUG进行程序调试,掌握常用命令的使用方法,观察运行结果。
3、汇编语言上机操作,见图1-1 汇编语言上机操作流程。
上机操作过程:开始输入cmd 确认后显示:C:\Documents and setting\Administrator>-输入 cd c:\masm 后显示:c:\masm>-c:\masm>EDIT ABC.asmc:\masm>MASM ABC;若有语法错,回EDIT下改该程序c:\masm>LINK ABC;若有错,回EDIT下改程序c:\masm>ABC若运行结果错,回EDIT下改程序或在DEBUG下调试,找原因。
c:\masm>DEBUG ABC.exe手写源程序图 1-1 汇编语言上机操作流程汇编语言程序举例例1:将BL寄存器的内容按二进制形式显示出来。
设:(BL)=01010011B分析:采用2号功能调用,分别输出30 31 30 31 30 30 31 31显示:01010011参考程序:CODE SEGMENTASSUME CS: CODESTART:MOV CX ,8 ;显示字符个数为8MOV BL ,53HNEXT:SHL BL ,1 ;将显示位移至CF中JC ONE ;CF=1?MOV DL ,30H ;CF=0,将0的ASCII放在DL中JMP EXITONE:MOV DL ,31H ;CF=1,将1的ASCII放在DL中EXIT:MOV AH ,2INT 21H ;调用DOS功能显示DEC CX ;循环次数减1JNZ NEXT ;判断是否结束MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START上机操作:c:\masm>EDIT ShowBL.asm ;编辑源程序c:\masm>MASM ShowBL ;汇编成ShowBL.objMicrosoft (R) Macro Assembler Version 5.10Copyright (C) Microsoft Corp 1981,1988. All rights reserved.48912 + 447243 Bytes symbol space free0 Warning Errors0 Severe Errorsc:\masm>LINK ShowBL ;连接成ShowBL.exeMicrosoft (R) Overlay Linker Version 3.61Copyright (C) Microsoft Corp 1983-1987. All rights reserved.LINK : warning L4021: no stack segmentc:\masm>ShowBL ;装载并执行ShowBL.exe 01010011 ;屏幕显示c:\masm>-在DEBUG下查看ShowBL.exe的装入情况:c:\masm>DEBUG ShowBL.exe- R ;查看当前寄存器内容AX=0000 BX=0000 CX=001B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0B51 ES=0B51 SS=0B61 CS=0B61 IP=0000 NV UP EI PL NZ NA PO NC B353 MOV BL,53- U CS:0 ;查看程序0B61:0000 B353 MOV BL,530B61:0002 B90800 MOV CX,00080B61:0005 D0E3 SHL BL,10B61:0007 7205 JB 000E…….0B61:0017 B44C MOV AH,4C0B61:0019 CD21 INT 21…….-G ;执行程序01010011Program terminated normally-例2:将某段中的字符串“Hello!”传送到另一段中。
汇编语言上机指导实验一DEBUG常用命令及8086指令使用实验目的:通过实验掌握下列知识:1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG2、DEBUG命令: A,D,E,F,H,R,T,U。
3、ASCII码及用16进制数表示二进制码的方法。
4、8086寄存器: AX,BX,CX,DX,F,IP。
内容及步骤:一、DEBUG 命令使用:1、打 DEBUG 进入 DEBUG 控制,显示提示符 '_ '。
2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。
3、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII 字符。
4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。
5、用命令E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码?6、用H命令检查下列各组16进制数加减结果并和你的手算结果比较:(1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。
8、用R命令将AX,BX内容改写为1050H及23A8H。
二、8086常用指令练习1、传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX2)用U命令检查键入的程序并记录,特别注意左边的机器码。
3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。
并注意标志位有无变化。
2、加减法指令:1)用A命令在内存100H处键入下列内容:MOV AH,34MOV AL,22ADD AL,AHSUB AL,78MOV CX,1284MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX2)用U命令检查键入的程序及对应的机器码。
汇编语言上机指导一、概述汇编语言是一种低级别的程序设计语言,它直接使用计算机的指令集架构来编写程序。
而在进行汇编语言的实际操作时,上机指导是必不可少的一环。
本文将为您提供一份汇编语言上机指导,以帮助您在实践中更好地掌握汇编语言的应用。
二、实验环境与所需工具在进行汇编语言的上机实验之前,您需要准备以下工具和环境:1. 计算机:一台能够运行汇编语言开发环境的计算机;2. 汇编语言开发环境:例如MASM、NASM等;3. 文本编辑器:用于编写汇编源代码的工具,例如Notepad++、Sublime Text等;4. 模拟器或调试器:用于模拟或调试汇编程序的工具,例如DOSBox、Emu8086等。
三、实验步骤1. 安装汇编语言开发环境:根据您选择的汇编语言开发环境,下载并安装相应的软件。
2. 创建汇编源代码文件:使用文本编辑器创建一个新的文本文件,并将其保存为.asm文件格式。
3. 编写汇编程序:根据实验要求或题目要求,使用汇编语言编写相应的程序代码。
在编写过程中,需要熟悉所选汇编语言的语法和指令集。
4. 保存源代码文件:在编写完成后,保存源代码文件,并注意文件的命名规范和格式要求。
5. 编译源代码:打开所选汇编语言开发环境,并将源代码文件导入到该环境中。
使用编译器将源代码文件转换为可执行文件。
6. 运行汇编程序:在模拟器或调试器中加载生成的可执行文件,并运行程序。
通过观察程序的运行结果,验证程序代码的正确性和准确性。
7. 调试程序:如果程序在执行过程中出现错误或异常,可以使用调试器来逐步调试程序,找出错误的原因,并进行修正。
8. 优化程序:经过测试和调试后,可以根据实验需求对程序进行优化或改进,提高程序的性能和效率。
9. 文档整理:在上机实验结束后,对实验过程、实验结果和实验心得进行文档整理。
将实验相关的代码、截图和注释整理成文档,并附上你的实验心得和体会。
四、注意事项1. 在编写汇编程序时,需要遵循所使用汇编语言的语法和规范,注意标识符的命名规则和字符集的使用限制。
汇编语言程序的上机过程
1.建立源程序
用记事本写写代码,把扩展名改为.asm,存入masm文件夹中,保存类型改为“所有文件”,否则系统默认为.txt文件保存。
2.用MASM程序编译源文件,产生目标文件。
1)先进入C:\MASM>中
2)输入“masm MM”即masm 文件名(扩展名可以省略)
3)画蓝线的部分表示有0个警告和0个致命的错误,表示编译通过了。
3
目标文件查看:
3.用Link程序连接目标文件,产生可执行程序
输入“LINK 文件名.obj(扩展名可以省)”eg: LINK MM.OBJ
通过连接产生MM.exe文件,在命令符窗口输入dir命令查看。
4.直接输入文件名查看输出内容。
5.用debug程序调试与运行可执行文件
输入debug命令,屏幕显示:
-
“-”号表示debug系统提示符,
1)用u命令反汇编该文件,屏幕显示如下:
2)用d命令了解数据存储
格式为:
d 数据段地址:0
3)用g命令执行该程序
格式为
g=程序的首地址:0
表示程序正常终止,文件中的文件显示出来。
3)用r显示寄存器内容命令
这里的cs和IP显示了当前指向的指令及其代码,即即将执行的下一条语句。
汇编语言上机环境及基本操作汇编语言是一种低级语言,它直接面向硬件,可以直接访问计算机的底层资源。
为了学习和实践汇编语言,我们需要了解如何搭建汇编语言上机环境以及其基本操作。
本文将介绍汇编语言上机环境的安装和基本操作的步骤,并给出一些示例。
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文件进行链接。
汇编语言程序的上机过程一、上机环境要运行调试汇编语言程序,至少需要以下程序文件:▪编辑程序:或其他文本编辑工具软件,用于编辑源程序。
▪汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。
▪连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。
▪调试程序:DEBUG.EXE,用于调试可执行程序。
二、上机过程汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。
1.编辑源程序用文本编辑软件创建、编辑汇编源程序。
常用编辑工具有:、记事本、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(回车),即可完成连接。
▪与汇编过程类似,如果连接过程中出错,那么程序会在屏幕上显示提示信息。
实验一汇编语言上机操作
14计机3班08 何晓畅
一、实验内容:练习常用的DOS命令,熟练掌握DEBUG的主要命令及其应用。
1、DOS命令用法
(1)用2种方法在WINDOWS系统中进入DOS环境;
(2)用DIR命令查看根目录下的文件;
(3)用CD命令进入Program Files子目录,并查看子目录中的文件。
2、DEBUG的命令用法:
(1)进入DEBUG,用D命令查看数据段0100H-0200H单元中的内容;
(2)用U命令查看代码段中0100H开始的程序;
(3)用R命令查看并修改IP寄存器的值为0;
(4)用E命令修改数据段5号、6号单元的内容为12、34;
(5)自我练习其他命令,如T/D/P/F/Q等命令。
二、实验过程
1.
以dosbox进入dos
用终端进入dos
用DIR查看根目录下的文件
用CD命令进入Program Files子目录,并查看子目录中的文件
2.
用dosbox进入debug,用D命令查看数据段中0100H—0200H单元的内容
用U命令查看代码段中0100H开始的程序
用R命令查看并修改IP寄存器的值为0.
用E命令修改数据段5号,6号单元的内容为12、34。
其他命令的练习
Hello world的实现。
汇编语言程序上机过程1.编写源程序进入MS-DOS方式,进入MASM40子目录,提示符后键入edit 源文件名.asm,回车,利用DOS的全屏幕编辑软件编写汇编语言源程序,存盘,退出也可以先在WINDOWS环境中用记事本编写源程序,存为扩展名为.asm的文件(注意文件保存在MASM40子目录下),再进入MS-DOS方式,进入MASM40子目录2.汇编源程序提示符后键入masm 源文件名.asm,回车,提示输入OBJ文件名,按回车提示输入LST文件名, 键入源文件名,回车这两步只要试一次,打开它们了解其作用即可,以后就一路按回车提示输入CRF文件名, 键入源文件名,回车汇编完成,源程序中如有错误,显示错误信息3.如汇编后报错,改正源程序中的错误,直至汇编无错,则生成源文件名.obj4.连接提示符后键入link 源文件名,回车,对于提示信息,全部按回车若无连接错误,则生成源文件名.exe5.运行提示符后键入源文件名,回车6. 提示符后键入exit,回车,退出DOS环境调试软件Debug使用说明:DOS环境下,提示符后键入debug 源文件名.exe,回车,出现提示符’_’1._u[address] (反汇编命令)从指定的地址起反汇编32个字节,若不指定,则从头开始或从上一个u命令的最后一条指令的下一个单元开始反汇编2._g[=address1] [address2] (运行命令)从指定的地址address1起执行,如不指定则从当前的CS:IP开始执行(address1为000则从头开始执行),当执行到后面的断点地址address2时,停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令3._t[=address] [n](跟踪命令)从指定的地址address起执行n条(不指定n,则执行一条指令)后停下来, 显示当前所有寄存器及标志位的内容,和下一条将要执行的指令, 如不指定address则从当前的CS:IP开始执行4._d[address]或_d[range]在DS段寄存器经MOV指令传送有具体值后,从指定的数据段偏移地址address起开始显示80个字节或指定范围的字节的内容,如_d000 020显示数据段中偏移地址为000h至0020h的字节的内容,如在address前指定段寄存器(CS、SS、ES),也能观察到其它段的内容5._r (显示所有寄存器和标志位内容)6._q (退出debug)Debug的使用练习:●在DOS提示符下键入debug aswjsj2.exe●_u 回车(或_u000 回车)反汇编32个字节,显示内容为:代码段段地址:偏移地址机器代码指令(地址表达式的值已算出)可看出该指令的机器代码的存放地址和长度(即为几字节指令)问:(1)指令mov dl,2对应的机器代码为多少?是几字节指令?(2)在指令部分,原先的mov di,offset d1已变为mov di 000a,故可知变量d1在数据段中的偏移地址为000a,由于在数据段中d1,d2,z是连续定义的,故变量d2的偏移地址和z 的偏移地址各是多少?(3)原先的call p1已变为call 0080, 问过程p1在代码段中的起始偏移地址为多少?●_r 回车显示所有寄存器和标志位内容观察CS、IP的值●_t 5 回车(或_t=000 5 回车)从开头执行5条指令 (使每个段寄存器有了具体值)后停下_d000 回车察看数据段从偏移量为000开始的10个单元的内容,为多少?●_u000 回车察看源程序中标志1处的下一条指令,其偏移地址是多少?将它作为断点地址_g 断点地址,回车_d000a, 回车察看变量d1的值变为了多少?●采用类似的方法将标志2处的下一条指令作为断点,运行至断点处, 察看变量d2的值变为多少?●将标志3处的下一条指令作为断点,运行至断点处, 察看AL的值为多少?●将标志4处的下一条指令作为断点,运行至断点处, 察看AL的值为多少?弄清das指令的作用●将标志5处的下一条指令作为断点,运行至断点处,察看变量z的值为多少?●_q 回车结束Debug,返回DOS提示符下。
汇编语言程序设计上机步骤与调试方法在汇编语言程序设计中,上机步骤与调试方法是非常重要的,它们能够帮助程序员更好地编写和调试程序。
本文将介绍汇编语言程序设计的上机步骤以及常用的调试方法,帮助读者更好地理解和应用这些知识。
一、上机步骤1. 准备工作在开始上机之前,我们需要做一些准备工作。
首先,确认计算机已经连接好必要的硬件设备,例如键盘、显示器等。
其次,确保操作系统和开发环境已经正确安装并能够正常运行。
最后,根据需要准备好所需的汇编语言文档和程序样例。
2. 创建新项目在开始编写汇编语言程序之前,我们需要创建一个新的项目。
在项目中,我们可以组织和管理相关的文件和代码。
通常,我们会选择一个合适的集成开发环境(IDE)来创建和管理项目。
3. 编写程序在创建项目之后,我们可以开始编写汇编语言程序。
首先,我们需要了解目标机器的指令集和寄存器,以便正确地编写程序。
然后,根据需求,我们可以使用不同的指令、寄存器和内存来实现所需的功能。
在编写程序的过程中,注意代码的可读性和易于维护性是非常重要的。
4. 调试程序编写完汇编语言程序后,我们需要进行调试,以确保程序的正确性和稳定性。
调试是一个迭代过程,通常包括以下步骤:- 设置断点:在程序中设置断点,以便在特定位置停止程序的执行。
- 单步执行:通过逐条执行程序的指令,我们可以观察程序的执行过程,并检查各寄存器和内存的值。
- 监视变量:在调试过程中,我们可以监视程序中的变量值,以验证其正确性。
- 查看输出:观察程序的输出结果,与预期结果进行比较,以确定程序是否按照预期执行。
- 修复错误:如果发现程序中存在错误,我们需要对程序进行修改和调整,直到问题解决为止。
5. 运行程序在完成程序的调试之后,我们可以运行程序并观察其运行效果。
在运行过程中,我们可以测试程序的各种功能,以确保其正常工作。
二、调试方法1. 打印输出在调试汇编语言程序时,打印输出是一种常用且简单有效的调试方法。
汇编语言上机操作一、建立子文件夹如:D:\hb\masm二、复制相关文件把masm.exe、link.exe、ml.exe三个文件复制到上述文件夹中。
三、进入DOS方式开始/运行/cmd当前提示符可能是:C:\documents and settings\administrator>四、常用DOS操作命令1、改变当前盘输入d: 并回车,屏幕显示:D:\>2、改变当前目录1)进入下一级目录D:\>cd hb 回车后,屏幕显示:D:\hb>cd masm 回车后,屏幕显示:E:\hb\masm>问题:可以一次进入下面二级或多级目录吗?2)返回上一级目录D:\hb\masm>cd.. 回车后,屏幕显示:D:\hb\>cd.. 回车后,屏幕显示:D:\>问题:可以直接返回根目录吗?D:\hb\masm>cd\ 回车后,屏幕显示:D:\>3、显示当前目录容D:\>dir /p 分页显示当前目录容问题:如何显示d:\text中的容?D:\>dir d:\text↙4、DOS方式下如何运行程序?DOS方式下的可执行文件(即程序文件)扩展名为.exe或.,运行时只需要在系统提示符下输入文件主名即可。
例如,有一个文件名为test.exe,存入在D:\hb\masm 中,运行时,可以这样做:D:\hb\masm>test↙五、汇编语言上机过程1、编辑源程序运行:edit 回车后,进入EDIT环境,输入完后存盘(file/save)并退出(file/exit)。
2、汇编D:\hb\masm>masm add5.asm↙生成目标程序文件add5.obj。
(如果有语法错误,会提示错误所在行号和错误类型)3、连接D:\hb\masm>link add5↙生成可执行文件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>DEBUG add5.exe (进入DEBUG,并装配add5.exe) 此时屏幕上出现一个短线,这表示可以使用DEBUG命令了。
如果启动DEBUG时没有指定要调试的文件名,则需要用N命令指定要调试的文件,再用L命令将其装入存。
操作如下:D:\hb\masm>debug↙- n add5.exe↙- l↙(二)DEBUG命令在说明每个命令之前,先说明一些共同信息:■DEBUG命令都是以一个英文字母开头,后面跟一个或多个参数。
■命令字母和参数可用大写或小写或混合形式。
■命令字母和参数中,相邻两个十六进制之间必须用逗号或空格分开.其它各部分之间有无空格或逗号都可以。
■执行任何命令期间都可用Ctrl+Break键方法结束命令的执行。
■打入命令字母和参数后必须打入回车键才能使命令有效。
■如果执行某种命令期间在显示器或打印机上的很长的输出,可以按Ctrl+Numlock键暂停继续显示,使显示屏幕停下来供观察。
再按任何其它键,则继续显示输出。
■在DEBUG程序状态下,控制键和DOS支持的编辑键继续有效。
■如果输入的命令有错误,将显示出来。
例如:dcs:100cs:110error这说明d命令的第二个address参数格式不对,它只能包括偏移地址部分,不能再有段地址部分。
它发现S不是十六进制数字符。
■DEBUG程序状态光标提示符为“-”。
下面按命令功能相近关系分组说明几个主要命令功能和使用的方法。
一)显示和修改寄存器或存贮单元的有关命令1.R(Register)命令R命令有三种功能:●显示单个寄存器容并等待修改这个寄存器容;●显示CPU部的所有寄存器的容和全部标志位的状态;●显示和修改所有标志位的状态。
⑴显示和修改单个寄存器容命令命令格式:R [寄存器名]说明:显示单个寄存器容。
R之后输入寄存器名。
例如命令- RAX↙将显示出AX的容和在下一行显示出冒号。
AX F1E4:-上面的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=011A NV UP DI NG NZ AC PE NC04BA:011A CD21 1NT 21前几行显示的是寄存器容和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(FilL)命令用途:在指定的存贮地址围置入容表给出的数值或字符代码。
格式: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打入等号和程序执行的起始地址。