汇编语言实验指导书

更新时间:2024-05-04 17:28:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

汇编语言实验指导书

邹先霞

暨南大学计算机系

二○一三年三月

目 录

实验一 汇编源程序的上机调试操作基础训练 ................................................. 3 实验二 顺序与分支程序设计 ............................................................................. 8 实验三 循环与子程序程序设计 ......................................................................... 9 实验四 算术运算与代码转换程序设计 ........................................................... 11 实验五 字符串的匹配与替换程序设计 ........................................................... 12 实验六 输入输出程序设计 ............................................................................... 13

1

《汇编语言程序设计》课程实验教学一览表

序号 实验项目名称 学时 实验类型 1 汇编语言硬指令及Debug的使用 2 验证性 2 顺序与分支程序 6 验证性 3 循环与子程序 8 验证性 4 算术运算与代码转换程序 6 综合性 5 字符串的匹配与替换程序 6 综合性 6 输入输出程序 8 综合性 2

实验一 汇编源程序的上机调试操作基础训练

一.实验目的:

例:使用masm6.15过程,将解压的所有文件1. 掌握DEBUG 的基本命令及其功能 放到c:\\masm615 运行Cmd进入DOS环境 2. 学习数据传送和算术运算指令的用法

键入cd c:\\masm615 3.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。 开始编辑、编译、连接、运行的过程 二.实验内容: (一)DEBUG命令的使用

DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 1、DEBUG程序的启动

在DOS提示符下,可键入命令:

C>DEBUG[d:][path][文件名][ 参数1][参数2]

其中文件名是被调试文件的名称,它须是执行文件(EXE),两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。

在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。 2、DEBUG的主要命令 (1) -A[地址]

该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。 (2)

反汇编命令U,有两种格式: 汇编命令A,格式为:

1)-U[地址]

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

3

该命令对指定范围的内存单元进行反汇编,例如: -U 04BA:0100 0108或 –U 04BA:0100 L9 此二命令是等效的。 (3)

运行命令G,格式为:

-G [=地址1][地址2[地址3。。。]]

其中地址1规定了运行起始地址,后面的若干地址均为断点地址。 (4)

追踪命令T,有两种格式:

1)逐条指令追踪:

-T[=地址]

该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。

2)多条指令追踪:

-T[=地址][值]

该命令从指定地址起执行n条命令后停下来,n由[值]确定。 (5)

显示内存单元内容的命令D,格式为:

-D[地址]或-D[范围] (6)

修改内存单元内容的命令E,它有两种格式:

1)用给定的内容代替指定范围的单元内容:

-E地址 内容表

例如:-E 2000:0100 F3 “XYZ” 8D

其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。 2)逐个单元相继地修改:

-E地址 例如:-E 100:

18E4:0100 89.78

此命令是将原100号单元的内容89改为78。78是程序员键入的。

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

(7)

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

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

4

标 志 名 溢出Overflow(是/否) 方向Direction(减量/增量) 中断Interrupt(允许/屏蔽) 符号Sign(负/正) 零Zero(是/否) 辅助进位Auxiliary Carry(是/否) 奇偶Parity(偶/奇) 进位Carry(是/否) 2)显示和修改某个指定寄存器内容,格式为:

-R 寄存器名 例如打入:-R AX 系统将响应如下:

AX FIF4 :

置 位 OV DN EI NG ZR AC PE CY 复 位 NV UP DI PL NZ NA PO NC 表示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

命名命令N,格式为:

(8)

-N 文件名

此命令将文件名格式化在CS:5CH的文件控制块内,以便使用L或W命令把文件装入内

5

存进行调试或者存盘。 (9)

装入命令L,它有两种功能:

1)把磁盘上指定扇区的内容装入到内存指定地址起始的单元中,格式为: -L 地址 驱动器 扇区号 扇区数 2)装入指定文件,格式为: -L [地址]

此命令装入已在CS:5CH中格式化的文件控制块所指定的文件。 在用L命令前,BX和CX中应包含所读文件的字节数。 (10)写命令W,有两种格式:

1)把数据写入磁盘的指定扇区: -W 地址 驱动器 扇区号 扇区数 2)把数据写入指定文件中: -W [地址]

此命令把指定内存区域中的数据写入由CS:5CH处的FCB所规定的文件中。在

用W命令前,BX和CX中应包含要写入文件的字节数。 (11)退出DEBUG命令Q,该命令格式为

Q

它退出DEBUG程序,返回DOS,但该命令本身并不把在内存中的文件存盘,如需存

盘,应在执行Q命令前先执行写命令W。 (二)程序的调试与运行

编写程序比较两个字符串string1和string2所含的字符是否相同。若相同显示’match’,否则,显示’no match’ 三.实验要求:

实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。 四.调试步骤

1.编辑源程序,建立一个以后缀为 .ASM的文件.

2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。无错时继续第3步。

3.连接目标程序,产生可执行程序。

6

4.用DEBUG程序调试可执行程序,观察每次比较的结果。

datarea segment

string1 db 'move the cursor backward,' string2 db 'move the cursor forward.' ;

mess1 db 'match.','$' mess2 db 'no match!','$' datarea ends; prognam segment main proc far

assume cs:prognam,ds:datarea,es:datarea start: push ds sub ax,ax push ax

mov ax,datarea mov ds,ax mov es,ax lea si,string1 lea di,string2 cld

mov cx,25 repz cmpsb jz match lea dx,mess2 jmp short disp match:

lea dx,mess1 disp:

mov ah,09 int 21h ret

main endp prognam ends; end start

7

实验二 顺序与分支程序设计

一 、实验目的

1) 掌握顺序程序设计方法。

2) 掌握分支程序的结构及分支程序的设计,调试方法。 学习数据传送及算术和逻辑运算指令的用法。

3) 熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。 二、实验内容

1) 有一字变量BUF1是以原码表示的有符号数,要求将其转换为反码和补码,分别存入BUF2和BUF3单元,并在屏幕上显示出来。

2)有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。

3) 在BUF和BUF+1、BUF+2单元分别放有一个无符号字节型数,编程序将其中最大数存入MAX单元,并在屏幕上显示。

4) 从键盘上接收两个一位十六进制数X和Y,然后再输入一个A-D之间的一个字符,按下列要求计算。

a) 当输入字符为A,则计算X+Y,并以十六进制形式显示出来 b) 当输入字符为B,则计算|X-Y|,并以十六进制形式显示出来 c) 当输入字符为C,则计算X*Y,并以十六进制形式显示出来 d) 当输入字符为D,则计算X/Y,并以十六进制形式显示出来 三、实验设备

PC机一台

四、实验准备

1) 分析题目,将程序中的原始数据和最终结果的存取方法确定好。 2) 画出流程图。 3) 写出源程序。

4) 对程序中的结果进行分析,并准备好汇编程序及汇编调试的过程。 五、实验步骤 1) 输入源程序。

2) 汇编、连接程序,生成 .EXE文件,执行文件,检查结果。 六、实验报告的要求

8

1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。 2) 说明程序中各部分所用的算法。 3)说明主要符号和所用到寄存器的功能。

4) 总结为什么在设计分支程序时必须解决三个问题:判断、转向和定标号。 5) 说明标志位CF、SF和OF的意义。 6) 上机调试过程中遇到的问题是如何解决的。 7) 对调试源程序的结果进行分析。

实验三 循环与子程序程序设计

一、实验目的

9

本文来源:https://www.bwwdw.com/article/qzdg.html

Top