汇编语言实验一 指导书

  • 格式:doc
  • 大小:44.50 KB
  • 文档页数:3

实验一:汇编上机指导及例示

一、实验目的

 了解汇编语言程序的运行环境和所需的系统程序;

二、实验要求

 掌握如何编辑、汇编、连接和运行汇编程序;

 掌握常用的DEBUG命令。

三、实验原理

题:在屏幕上显示一条'THIS IS A SAMPLE PROGRAM OF KEYBOARD AND DISPLAY'提示信息,如从键盘上输入ESC键,则结束程序,如输入的不是大写字母,则在显示器上显示出来,如输入的是大写字母,则转换为小写字母输出。

四、实验设备

计算机

五、实验步骤

1、用用文字编辑工具(常用EDIT或记事本)将源程序输入,其扩展名为.ASM。

2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。

3、用TYPE命令显示产生的.LST文件。

4、用LINK将.OBJ文件连接成可执行的.EXE文件。

5、在DOS状态下运行LINK产生的.EXE文件。

用于调试程序时的输入格式:

DEBUG FILENAME.??? 回车

其中FILENAME是主文件名,???是扩展文件名,例如我们在此前已编译好了一个文件,它的名字为:djx.exe 要对它进行调试时就在DOS提示符下打:DEBUG djx.exe 回车,便可见到 '-' 提示符,如无任何提示说明正确,可进行调试按ESC键可返回DOS。若未出现预期结果,用DEBUG检查程序。

附: 基本debug操作

1、显示内存单元的内容:-d [地址] 或 [范围]

2、修改内存单元的内容:

-e 地址 内容表 或 -e 地址

3、显示CPU内部寄存器和标志位状态:-r

4、显示和修改某个寄存器的内容:-r 寄存器名

5、汇编命令:-a 地址

6、逐条指令追踪:-t [=地址] (无地址则执行IP所指示的指令)

7、退出debug:-g

8、多条指令追踪:-t [=地址] [n]

注:该指令从指定地址起执行n条命令后停下来

9、运行命令:-g [=地址1] [地址2 [地址3...]]

地址1规定了运行起始地址,后面的地址均为若干断点地址

10、反汇编命令:

(1) -u [地址]

该命令从指定地址开始,反汇编32个字节,若省略地址,则从上一个u命令的最后一条指令的下一单元开始显示32个字节

(2) -u 范围

该命令对指定范围的内存单元进行反汇编

如:-u 04ba:0100 0108

等价于: -u 04ba:0100 L9

下面给出一些常见出错信息,以便查对:

1、Register already defined 汇编内部出现逻辑错误

2、Unknown symbol type 在符号语句的类型中,有些不能识别的东西

3、Symbol is multi-defined 重复定义一个符号 4、Symbol not defined 符号没有定义

5、Syntax error 语句的语法与任何可识别的语法不匹配

6、Symbol is reserved word 企图非法使用一个汇编程序的保留字(例:定义add为一变量)

7、Not proper align/combine type SEGMENT参数不正确

8、One operand must be const 这是加法指令的非法使用

9、Operands must be same or 1 abs 这是减法指令的非法使用

10、Already have base register 试图重复基地址

11、Illegal size for item 引用的项的长度是非法的,(如:双字移位)

12、Illegal register value 指定的寄存器值不能放入“reg” 字段

13、Must be AX or AL 某些指令只能用AX或AL

14、Improper use of segment reg 段寄存器使用不合法(如:mov ds,0)

15、Division by 0 or overflow 给出一个用0作除数的表达式

16、Value is out of range 数值大于需要使用的

17、CS register illeal usage 试图非法使用CS寄存器

18、DUP is too large for linker DUP嵌套太长,以至于从连接程序不能得到所要的记录