桂 林 理 工 大 学
实 验 报 告
班级 软件工程16-1班 学号 3162052051116 姓名 张识虔 同组实验者
实验名称 基本认识实验 日期 2018年 11 月11 日
一、实验目的:
二、实验环境:
三、实验内容:
1.2 源文件的编辑与输入
1.2.1 源文件的命名与输入 汇编语言源文件的编辑输入过程中需要注意下面几点: (1) 可以使用的文本编辑器有:DOS 下的 EDIT、写字板、记事本等。不能 使用带格式控制的文本编辑工具。例如,不能使用 Word 文档; (2) 除注释外,源程序中的字符和标点符号必须是英文状态下字符和标点符 号(半角); (3) 注释中的符号可以使用任何可显示可打印的符号; (4) 源程序的命名可以使用英文、数字等,并且字符的长度不超过 8 个(最 多 8 个)。扩展名必须使用.asm(或大写.ASM),存盘路径不能出现中文或长字符;
(5) 在 E 盘中建立一个文件夹 MYCODE,如 E:\MYCODE,进入文件夹 MYCODE 中,在文件夹中编辑的源文件。 1.2.2 DOS 环境 (1) 进入 DOS “开始”菜单“运行”输入 cmd确定,可进入 DOS 环境。如图 1-2-1 所示。
图 1-2-1 使用指令方式进入 DOS 环境
或“开始”菜单“所有程序”“附件”“命令提示符”。如图 1-2-2 所示。
图 1-2-2 从程序方式进入 DOS 环境
即可进入 DOS 方式。在 DOS 方式下,DOS 界面如图 1-1-3 所示。
WIN系统运行不了 只能用这个DOSBOX来运行了 原理都一样
图 1-2-3 DOS 环境编辑界面
(2) 在DOS 提示符下,键入 E: 回车,进入E盘根目录,这时提示符变为 E:/>。
(3) 建立文件夹 MYCOED 的方法是:DOS 命令提示符 E:/>下输入
E:\> MD MYCODE 回车,建立自己的文件夹(或叫做子目录)MYCODE。
我的文件放在 myassembly文件夹 所有 cd myassembly
(4) 进入 MYCODE 文件夹,方法是:在 DOS 命令提示符 E:/>下输入
E:\> CD MYCODE 回车,进入文件夹(或叫做子目录)MYCODE,进入后,
提示符变为“ E:\MYCODE/> ”。进入 DOS 下创建的文件夹 MYCODE 如图 1-2-4 所示。
图 1-2-4 进入 DOS 下创建的文件夹 MYCODE
从 Windows 进入 DOS 模式,可能只有小窗口显示,在 DOS 窗口右击鼠标, 点击属性,选择全屏模式,可以全屏显示,如图 1-2-5 和图 1-2-6 所示。
图 1-2-5 DOS 环境属性
图 1-2-6 DOS 环境窗口全屏设置
在 DOS 环境下输入指令 EXIT 回车可退出 DOS 环境,如图 1-2-7 所示。
输入 exit后直接退出DOSBox窗口
图 1-2-7 退出 DOS 环境
1.2.3 DOS 环境下 EDIT 的使用 (1)Windows 环境下用记事本编辑源程序 新建一个记事本,在记事本中输入源程序,将文件名保存为.asm 文件。 (2)DOS 环境下用 EDIT 编辑源程序 在 DOS 界面输入命令:“EDIT”可打开源程序编辑界面,如图 1-2-8 所示。
图 1-2-8 使用 EDIT 命令进入源程序编程界面
在编辑界面中直接输入汇编源程序,如图 1-2-9 所示。
图 1-2-9 在编辑界面输入汇编源程序
编辑源程序完毕后,对源程序进行保存和退出,如图 1-2-10 所示。在编辑 界面中可以通过鼠标或键盘操作,按“Alt”+菜单首字母键可把光标在编辑框和 菜单栏间切换,如“Alt+F”、“Alt+E”、“Alt+S”、 “Alt+V”等快捷键选择。光 标在菜单栏时可以使用鼠标或者键盘的“上下左右”方向键移动光标位置,回车 键确认选择。退出 EDIT 编辑界面后则进入 DOS 界面。
图 1-2-10 对源程序保存和退出
8
EDIT 命令是一个简单的编辑软件,我们经常用它来编辑一些程序和批处理 文件。例如,在 c 盘根目录下编辑一个简单的批处理文件,要求无论当前盘和当 前目录如何,每次只需输入一个字符 w,然后回车即可运行 c 盘 windows 目录下 的 windows 程序。要编辑一个文件名为 w.bat 的批处理文件,可以在提示符下敲
入 edit w.bat 回车(就是编辑 w.bat 文件的意思)。
进入编辑状态后,输入以下内容:c: cd\windows win 如图 1-2-11 所示。
我在edit里边写了 hello my friends
图 1-2-11 DOS 环境下 EDIT 编辑界面
输入完后,按 Alt+F 键激活 File 菜单,按向下的箭头选择退出(Exit),如图 1 -2-12 所示。
图 1-2-12 退出 EDIT 编辑界面
9
这时已经编辑完 w.bat 文件,又回到了提示符状态,用前面讲过的 type 命令 就可以查看刚才编辑的 w.bat 文件,只需输入 type w.bat 回车即可,如图 1-2-13 所示。
图 1-2-13 查看 w.bat 文件
1.3 汇编程序 MASM 的作用和使用方法
1.3.1 宏汇编程序 宏汇编程序--MASM 汇编就是把用汇编语言编写的源程序翻译成机器语言 的目标程序。其基本工具是汇编程序。可使用小汇编程序(ASM),也可以使用 微软公司产品宏汇编程序(MASM)。
1.3.2 汇编工具 MASM5.0 使用简介 MASM 5.0 宏汇编程序用于 DOS 环境下,MASM 5.0 是最常用的汇编链接 软件,其简单操作为:使用 MASM 命令将.asm 文件编译为.obj 文件,用 LINK 命令将.obj 文件链接为.exe 文件,如图 1-3-1 所示。
汇编源程序文件 *.asm (助记符)
可执行文件 *.exe (二进制指令代码)
目标文件 *.obj (纯二进制的中间 代码)
汇编
masm.exe 工具
编译 链接
link.exe 工具
图 1-3-1 汇编过程
使用 MASM5.0 汇编工具时,不用预先安装,可直接将 MASM5.0 拷贝到 PC 机的磁盘中运行。拷贝时最好放在磁盘的根目录下,这样方便在 DOS 系统操作。 本例程中将 MASM5.0 解压放在 D 盘的根目录下,文件夹命名为 MASM5.0,在 该文件夹中有 MASM.EXE 和 LINK.EXE 两个重要的编译连接文件。
- 进入 E:\MYCODE 目录
在 E 盘根目录下建立一个文件夹 MYCODE,用于存放编写的.asm 文件。若 在此目录下存在可用的 hello.asm 文件,编译和链接此文件的方法如下。编写好 源代码后,进入 DOS 系统打开 E:\MYCODE 所在目录,方法:“开始”“运行” 输入 cmd 可进入 DOS 系统,依次输入 E:CD MYCODE,可打开 E:\MYCODE 目录。
2. 编译 asm 文件
格式:MASM asm 源文件及路径 1 obj 文件目标路径 2(省去则默认当 前路径)
例如当前目录是MYCODE,而 MASM.exe在宏汇编文件夹D:\MASM5.0中, 要执行 MASM.exe 程序,需要给出 MASM.exe 程序的完整路径名。
例如当前目录是用户目录 MYCODE,这时的 DOS 命令提示符为:
E:\MYCODE\>
如果有一个汇编语言源程序名字为 HELLO.ASM,要执行 D:\MASM5.0 文件 夹下的 MASM.EXE 程序对汇编源程序 HELLO.ASM 进行汇编,应该在 DOS 命 令提示符下输入
E:\MYCODE\>D:\MASM5.0\MASM HELLO.ASM 回车(键盘输入)
在界面输入 D:\MASM5.0\MASM HELLO.ASM 之后连续 3 次回车。程序无 错则在 E:\MYCODE 中增加文件 HELLO.OBJ。
- 链接 obj 文件
生成的 obj 文件并不是一个可执行文件,还需要经过 LINK 链接之后才能生 成.exe 文件。 格式:LINK obj 文件路径 1
如:E:\MYCODE\>D:\MASM5.0\LINK HELLO.OBJ 回车(键盘输入)
在界面输入 D:\MASM5.0\LINK. HELLO.OBJ 之后连续 3 次回车,可在 E:\MYCODE 目录下发现一个 hello.exe 文件。 编辑好的源文件需要汇编(用 MASM.EXE 工具),链接(用 Link.EXE 工具) 链接成可执行文件,才能在 PC 上调试或运行。
1.3.3 MASM.EXE 的使用
MASM.EXE 用于将汇编源程序汇编成目标文件。
例如:用一个汇编程序说明 MASM.EXE 的使用方法。汇编程序名称为 HELLO.ASM,内容如下:
DATA SEGMENT
MSG DB ‘Hello, word.’,0DH,0AH,’$’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MSG
MOV AH,09H
INT 21H
MOV AX,4C00H
INT 21H CODE ENDS
END START
输入“masm hello;”指令,指令后的分号表示一切按缺省情况进行。运行后 显示以下内容: Microsoft (R) MASM Compatibility Driver Copyright (C) Microsoft Corp 1993. All rights reserved.
Invoking: ML.EXE /I. /Zm /c hello.asm
Microsoft (R) Macro Assembler Version 6.11 Copyright (C) Microsoft Corp 1981-1993. All rights reserved.
Assembling: hello.asm 程序没有语法错误,并生成目标文件 HELLO.OBJ。
1.3.4 LINK.EXE 的使用 LINK.EXE 用于将目标文件链接成可执行文件。
例如:将刚才用 MASM.EXE 汇编出来的目标程序进行链接。目标程序名称 为 HELLO.OBJ。
输入“link hello;”指令,指令后的分号表示一切按缺省情况进行。运行后显 示以下内容:
Microsoft (R) Segmented Executable Linker Version 5.31.009 Jul 13 1992 Copyright (C) Microsoft Corp 1984-1992. All rights reserved.
LINK : warning L4021: no stack segment 链接警告没有定义栈段,这不影响程序的运行。
接下来可以运行 HELLO.EXE,看看显示结果是不是 Hello, world.。
1.4 程序的调试(DEBUG)
1.4.1 DEBUG的作用
DEBUG 是 DOS 提供的用于程序调试的系统,作为 DOS 的外部命令随 DOS 的其它外部命令一起由 DOS 的提供产商向用户提供。因此用户在使用 DEBUG 系统时一定要注意当前用户所使用的 DOS 的外部命令中是否提供该命令(若 DOS 命令不全,有可能没有此命令)。
1.4.2 DEBUG的使用
由于DEBUG是DOS的外部命令,因此必须在DOS的提示符状态下进行调用。 调用的方法如下:
E:\MYCODE>DEBUG FILENAME.EXE 回车(键盘输入)
此处 FILENAME 应是文件的全名,即应包括文件的主名和扩展名(若文件 有扩展名),如文件不在当前目录,则还因包括文件所存放的目录名。 输入上述命令后若在当前目录中能找到相应的文件,则系统在屏幕的左边显 示一短杠:“-”;若在当前目录中能找不到相应的文件,则系统在屏幕上显示:“file not find”,并在屏幕的左边显示一短杠:“-”。 注意:DEBUG调试程序只能调用当前目录的文件。
常用的调试命令如下:
-u 反汇编;
-r 寄存器或片内 RAM 区显示与修改。
操作后屏幕显示 CS=XXXX DS=XXXX IP=XXXX AX=XXXX,若需要显示并修改特定寄存器内容,则选择 R 寄存器名回车操作,如 RAX 回车则显示:AX=XXXX,键入回车键,结束该
命令;
-g =[address1][address2][address3]
执行到断点行, g 格式表示无断点连续运 行程序,连续运行程序中,当遇到断点或按下 Ctrl+C 键时,终止程序运行;
-t =[address][value]
单步运行指定的程序。每次按照指定的地址或 IP/PC 指 示的地址,单步执行一条指令后则显示运行后的 CPU 寄存器情况;
-p =[address][value]
单步运行命令,类似于 t 命令,可以用于跟踪和调试程 序中的各条指令的命令,同样可以用于单条命令的跟踪,和多条命令的跟踪。不 同的只是该命令对于任何指令(包括过程调用指令)均当成一条指令来处理,因 此对于调试一些诸如像包括有子程序调用、BIOS、DOS 功能调用等指令的程序 的时候特别好用;
-d 显示一段地址单元中的数据。
d 命令执行后屏幕上显示一段地址单元中 的数据,在显示过程中,可用 Ctrl+S 来暂停显示,用任意键继续;也可以用 Ctrl+C 键终止数据显示,返回监控状态;
-e[address][value]
编辑指定地址单元中的数据。该命令执行后,则按字节 显示或修改数据,可通过“空格”键进入下一高地址单元数据的修改,使用“-” 键则进入下一地地址单元进行数据的修改,并可填入新的数据来修改地址单元的内容。若输入回车,则结束 e 命令。
-q 退出返回操作系统。
例如,对A1.ASM源文件进行调试,如图1-4-1、1-4-2和1-4-3所示。
图 1-4-1 对 A1.ASM 调试和反汇编
图 1-4-2 查看寄存器的内容和查看数据
图 1-4-3 单步调试观察寄存器的值
四、心得体会:
在win10系统不能正常使用DOS 只能借助DOSBOX软件来进行操作 这些之前在汇编语言课程已经学过 都是挺简单的操作 在EDIT编译比较麻烦 如果有修改 不怎么方便修改,在电脑创建TXT文件 然后在TXT文件打入代码后 在把文件名改成asm文件这样就好运行了
在DOS 输入代码时 要注意英文的符号 和中文的符号有所不同 比如 MSG DB ‘Hello, word.’,0DH,0AH,’$’ 这条语句中 ‘ ‘ 两个是不同的符号 前者是英文符号 后者是中文符号 在DOS系统中 无法识别中文符号,如果打入中文符号 程序就出现报错 MASM之后无法生成.OBJ文件 那么 后面的 link 步骤无法运行 所以也就不能生成且运行.EXE文件