《汇编语言程序设计》 实验指导书2012.5.24)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《汇编语言程序设计》课程实验指导书(Assembly Language Programming)

计算机科学与技术系

杨定安编写

佛山科学技术学院

2012 年 5 月

摘要

汇编语言实验主要使学生掌握DEBUG或DEB2000调试程序中各命令的使用方法,掌握MASM汇编程序对汇编语言源程序进行编辑、汇编、连接、装配、调试到运行的上机操作方法。本实验大纲要求学生熟练掌握汇编语言指令练习、顺序程序设计、分支程序设计、循环程序设计和子程序设计。

目录

实验一宏汇编程序(MASM)及汇编语言上机过程 (4)

实验二程序的基本结构练习 (8)

实验三汇编编译器的使用及程序调试 (11)

实验四分支程序设计 (17)

实验五循环程序设计 (19)

实验六子程序设计 (23)

实验七汇编语言与C语言混合程序设计 (29)

实验一宏汇编程序(MASM)及汇编语言上机过程

一、实验目的

1.通过实验了解和熟悉微机系统的配置。

2.学习在DEBUG状态下输入汇编源程序的方法。

3.初步掌握调试(在DEBUG状态下)的过程。

二、实验原理

1. 本实验要求在DEBUG状态下输入汇编源程序,并用DEBUG命令进行调试。用单步跟踪的方法验证指令的功能。

2. 以下是给定的参考程序,并在实验时在每条指令的“;”符号右边按要求填写指令的执行结果。

注:⑴微机进入DEBUG状态下之后,一切立即数和地址数据均被默认为十六进制数,在输入时数的后面不加后缀“H”;

⑵在DEBUG状态下执行程序时,“INT 20H”指令可使系统执行完该指令前的程序时返回到“-”提示符状态,并且恢复CS和IP寄存器原来的值。

三、实验仪器

微机一台,U盘一块。

四、实验步骤

1.开机和关机操作顺序

开机:先打开微机外部设备电源开关,如显示器,最后打开主机电源开关。

关机:与开机相反,先关掉主机电源开关,然后关闭所有外设的电源开关。

2. 装入DEBUG程序

若计算机系统启动正常,可以进入MASM文件夹或MASM5文件夹从磁盘上调用DEBUG,程序到内存。如是WINDOWS环境下,先运行CMD命令,然后运行CD MASM命令,再运行DEB2000命令。一般C盘上装有DEBUG和DEB2000软件,若没有,可以用复制命令从其它盘拷贝过来,然后从装有DEBUG和DEB2000软件的磁盘上调用DEBUG和DEB2000软件程序。例如:

C :\MASM> DEB2000↙(↙回车符)

-(-DEBUG 提示符)

当显示器出现提示符“-”时,说明已进入DEBUG状态,这时,可用DEBUG命令进行操作。

4. 用DEBUG的Register命令检查所有寄存器内容,并作记录。命令格式:

R [寄存器名]

检查和修改寄存器内容的命令R,它有三种方式:

1)显示CPU内部所有寄存器内容和标志位状态;格式为:-R

R命令显示中标志位状态的含义如下表所示:

标志名置位复位

溢出Overflow(是/否)OV NV

方向Direction(减量/增量)DN UP

中断Interrupt(允许/屏蔽)EI DI

符号Sign(负/正)NG PL

零Zero(是/否)ZR NZ

辅助进位Auxiliary Carry(是/否)AC NA

奇偶Parity(偶/奇)PE PO

进位Carry(是/否)CY NC 2)显示和修改某个指定寄存器内容,格式为:

-R 寄存器名

例如打入:-R AX

系统将响应如下:

AX FIF4

表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如:

-R BX

BX 0369

:059F

则BX内容由0369改为059F

3)显示和修改标志位状态,命令格式为:

-RF

系统将给出响应,如

OV DN EI NG ZR AC PE CY-

这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。如

OV DN EI NG ZR AC PE CY-PONZDINV

5. 用DEBUG的Assemble命令输入汇编源程序。格式:

A [内存地址]

注:用“[ ]”符号括起来的部分表示可以省略。

该命令的功能是从指定的内存地址开始(括号不要输入)逐条输入汇编语言源程序并汇编成机器码存入内存。若地址缺省,则接上一个A命令最后一条指令之后输入汇编语句,若没有用过A 命令,则从CS:0100H地址开始输入。例如:

-A

0CD3:0100-

在输入A命令之后,或每输入一条指令之后,显示器的左端给出了内存的段地址和偏移地址。

每条指令均用回车(↙)结束。若输入的指令有语法错误,DEBUG拒绝接收,并给出提示,此时可以重新输入。程序的最后一条指令输入完之后,再按一次回车键(↙),即可结束汇编命令,回到DEBUG提示符“-”状态。

6. 用DEBUG的Unassemble命令反汇编。命令格式:

U [起始地址[终止地址]]

该命令的功能是从起始地址到终止地址反汇编目标码,缺省值是接上一个U命令或从CS:

0100H地址开始。例如:

-U

显示器上将显示程序的内存地址、指令机器码的汇编源程序三列对照清单。

7. 用DEBUG的Trace命令单步跟踪程序。命令格式:

T [ =起始地址] [指令条数] 注意:=符号不能缺

该命令的功能是从指定的起始地址开始逐条执行指令,每执行完一条指令,屏幕显示所有寄存器内容和下一条指令地址和指令。若[=起始地址]缺省,则T命令从CS:IP地址开始执行指令。

例如:

-T↙

重复这一过程,即可看到每条指令执行后,所有寄存器和标志寄存器的标志位内容。此时,要检查内存单元的数据,可用DEBUG的Dump命令,命令格式:

D[起始地址[终止地址]]

该命令的功能是从起始地址到终止地址,连续显示存贮器单元的内容。若地址缺省,则接上一个D命令或从DS:0100H地址开始显示。例如:

-D↙

参考程序:

MOV AX, 2000 ; AL=

MOV DS, AX ; DS=

NOT AX ; AX=

XOR AX, AX ; AX=

DEC AX ; AX=

INC AX ; AX=

MOV BX, 2030 ; BH=

MOV SI, BX ; SI=

MOV [SI], BL ; [2030H]=

MOV WORD PTR[SI], 10F ; [2030H]= [2031H]=

MOV DI, SI ; DI=

MOV [DI+50], BH ; [DI+50H]=

MOV BH, [SI] ; BH=

MOV BL, [DI+50] ; BL=

MOV SP, 5000

PUSH AX ; AX= [SS:4FFEH]= [SS:4FFFH]=

PUSH BX ; BX= [SS:4FFCH]= [SS:4FFDH]=

POP AX ; AX=

POPF ; F=

NEG BX ; BX=

相关文档
最新文档