《汇编语言》实验讲义

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

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

实验一汇编语言程序上机过程以及调试

一、预习内容

1. 工具软件MASM、LINK的使用

2. 常用DEBUG命令的使用: G,D,R,T,U,Q

3. 完整程序设计方法的格式。

二、目的要求

1. 掌握常用工具软件MASM、LINK的使用

2. 掌握常用DEBUG命令: G,D,R,T,U,Q 能灵活使用这些命令调试程序

3. 掌握完整程序设计方法的格式,能正确书写数据段,代码段等。

三、实验内容

比较两个字符串string1和string2所含的字符是否相同,如果相同则显示’Match'否则显示’No match’.请读程序,并将程序补充完整。

DSEG SEGMENT

string1 db 'Move the cursor backward.'

string2 db 'Move the cursor backward.'

mess1 db 'Match.',13,10,'$'

mess2 db 'No match.',13,10,'$'

DSEG ENDS

CSEG SEGMENT

assume cs:CSEG, ds:DSEG, es:DSEG,

MAIN PROC FAR

start: mov ax, dseg

mov ds, ax

mov es, ax

lea si ,string1

cld

repz cmpsb

jz match

lea dx,mess2

jmp short disp

match:

lea dx,mess1

disp: mov ah,09h

int 21h

mov ax, 4c00h

int 21h

MAIN ENDP

CSEG ENDS

end start

实验步骤:

1)用文字编辑工具(记事本或EDIT)将源程序输入完整后保存在D:\masm50下,注意保存时将文件扩展名改为.asm(如lab1.asm)。

2)打开桌面的“命令提示符”程序进入dos命令操作,先用cd masm50 命令改变路经,接着用”masm + 文件名” (如 masm lab1,这里文件名可以不带扩展名) 对源文件进行汇编,产生.obj文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。

3)用”link + 文件名” (如 link lab1) 将.obj文件连接成可执行的.exe文件(lab1.exe)。

4)在DOS状态下直接运行link产生的.exe文件(如 lab1),即在屏幕上显示Match.

5)用debug调试程序,熟悉debug命令的使用:

(1)打 debug lab1.exe 进入debug 控制,显示提示符‘- ‘。

(2)用命令g执行程序,可得与步骤4相同的结果,也可用T命令逐条运行这些指令,每运行一行检查

并记录有关寄存器及IP的变化情况,并注意标志位有无变化。

(3)用命令u检查键入的程序并记录,特别注意左边的机器码和指令地址。如果一条u命令没有显示

完全,可以再次输入u命令,该命令会紧接着上一个命令的输出继续显示。

(4)用命令’g+地址’设置断点,如g06,表示将断点设置在代码段的偏移地址为06h的指令前,并执行

到该断点前。其中,命令中的地址项可以从上条命令u的运行结果获得。

(5)用命令r查看各寄存器的情况。

(6)用命令d0查看数据段的情况,0表示从偏移地址0开始,也可以指定其他偏移地址值。

(7)用命令‘e+地址’的方式修改数据区的字符串,其中’地址’指需要修改的数据段内存单元偏移地

址,可根据上条d0命令获得。如e29 表示从偏移地址29h开始修改数据。试用此命令将数据段变量string1的内容修改为’Move the cursor forward.’

(8)再次用命令g执行程序,查看执行结果。

(9)用命令q退出debug,如果在上述步骤中碰到异常,可以先用q命令退出后再进入调试。

四、实验报告或作业

1.分析程序,画出程序流程图

2.汇编,连接及调试时产生的错误,其原因及解决办法。

3.思考:

1) 上述实验中用e修改数据段的内容,是否改变原文件lab1.asm的内容?

2) 用单步执行命令t运行程序,运行到mov ax, 4c00h, int 21h指令后,cs和ip寄存器内容前后有何变化,产生变化的原因是什么?

附:DEBUG 使用:

1.打 DEBUG 进入 DEBUG,显示提示符‘- ‘。

2.退出DEBUG命令:Q

3.显示内存命令:D 起始地址结束地址

4.修改内存命令:E 起始地址,连续修改打空格键。打回车键退出E命令。

5.检查寄存器命令:R

标志位显示 1 0

CF CY NC

ZF ZR NZ

SF NG PL

AF AC NA

OF OV NV

PF PE PO

DF DN UP

IF EI DI

6.修改寄存器命令:R 寄存器名

7.小汇编命令:A 起始地址,不输入指令打回车键退出A命令。8.反汇编命令:U 起始地址结束地址

9.文件命名命令:N 盘号:文件名

10.读文件命令:L 内存地址

11.写文件命令:W 内存地址

10.读扇区命令:L 内存地址盘号(0--A:,1--B:) 扇区号扇区数11.写扇区命令:W 内存地址盘号扇区号扇区数

12.运行命令:G=起始地址结束(断点)地址

13.单步命令:T=起始地址运行指令数,进入子程序内部。14.单步命令:P=起始地址运行指令数,不进入子程序内部。15.内存搬家命令:M 起始地址结束地址目的地址

标志位显示 1 0

CF CY NC

ZF ZR NZ

SF NG PL

AF AC NA

OF OV NV

PF PE PO

DF DN UP

IF EI DI

6.修改寄存器命令:R 寄存器名

7.小汇编命令:A 起始地址,不输入指令打回车键退出A命令。8.反汇编命令:U 起始地址结束地址

9.文件命名命令:N 盘号:文件名

10.读文件命令:L 内存地址

11.写文件命令:W 内存地址

10.读扇区命令:L 内存地址盘号(0--A:,1--B:) 扇区号扇区数11.写扇区命令:W 内存地址盘号扇区号扇区数

12.运行命令:G=起始地址结束(断点)地址

13.单步命令:T=起始地址运行指令数,进入子程序内部。14.单步命令:P=起始地址运行指令数,不进入子程序内部。15.内存搬家命令:M 起始地址结束地址目的地址

实验二顺序程序设计

一、预习内容

1.常用工具软件MASM、LINK和DEBUG的使用

2.完整程序设计方法的格式

3.汇编语言顺序结构程序的设计方法

二、目的要求

相关文档
最新文档