实验1_认识汇编语言

实验1_认识汇编语言
实验1_认识汇编语言

实验一 认识汇编语言

1.1 实验目的

(1)理解汇编语言的概念及其与高级语言的区别

(2)了解MASM6.11和TASM软件包的安装及配置

(3)了解常用汇编语言集成环境

(4)掌握汇编语言程序的上机过程

1.2 预备知识

1.2.1 系统环境

对汇编语言的初学者来说,DOS环境的优点是:DOS操作系统简单,程序员可以管理系统的所有资源,访问和修改系统中的所有内存(包括内存控制块、中断向量表),直接对I/O端口进行读写,便于对知识的学习和理解。其缺点是:单任务的DOS操作系统只有一个运行级别,任何进程与DOS操作系统都是同等级别的,致使系统中各个进程会相互影响。如果某个进程死机,整个系统就会瘫痪。

但是DOS系统已经退出历史舞台,目前的学生只熟悉Windows环境而对DOS知之甚少,继续要求学生在DOS系统的命令行界面下编写和调试程序,无疑存在巨大的困难。

目前,IBM PC及其兼容机配置的Intel系列微处理器可以工作在实模式、保护模式和虚拟86三种模式下。实模式是汇编语言入门的基础,是汇编语言教学中无法跨越的阶段。了解实模式是理解内存分段式管理和寻址方式的基础。保护模式是Windows系统的工作模式,虚拟86模式则是在保护模式下提供的模拟8086处理器工作的模式,为学习汇编语言提供了便利。DOS汇编程序在Win32环境中运行时,操作系统会模拟实模式运行16位进程。对于一些可能会影响整个操作系统工作的指令,windows操作系统会拒绝执行。64位的Windows 环境则不提供16位应用的虚拟环境。

因此,采用Win32环境进行汇编语言程序的编辑工作,在虚拟控制台环境中学习(汇编、连接和调试)汇编语言是最佳方案。下面我们将逐步给大家讲解如何安装和配置汇编语言的编译调试环境,并选择适合的编辑软件来组建汇编语言的集成环境。最后,叙述如何使用Visual Studio 2008 Express作为汇编语言的工作环境。

1.2.2 汇编语言上机过程

汇编语言程序需要经过编辑、汇编、连接、调试与执行等过程才能实现其具体功能。图1-1说明了汇编语言的上机过程。

第一步:编辑

使用编辑软件创建和编写汇编语言源文件,并以 .asm 作为文件名后缀。

第二步:汇编

使用汇编程序将源程序翻译成机器码形式的文件,以 .obj 为后缀的目标程序。汇编包括把源程序翻译成目标代码,并产生中间的.OBJ文件或模块。汇编程序的任务是为数据段中的每个数据项和代码段中的每条指令计算偏移值,并在所产生的.OBJ模块的前面直接建立一个头部来存储不确定的地址信息。在汇编时可以选择产生列表文件(.LST)和交叉引用文件(.CRF)。列表文件含有出错诊断信息,可以用来帮助检查源程序中的错误。交叉引用文件在编写大型程序时可以提供指令引用的数据项列表。

第三步:连接

使用连接程序完成对于目标程序的装配工作,生成可执行程序,以.exe或者.com为后缀的执行文件。连接程序的任务包括确定由汇编程序遗留下来的不确定的地址,并把分别汇

编的程序组合成一个可执行文件。

第四步:调试运行

使用调试程序完成调试改错的过程,并在DOS提示符下运行。执行是最终目的,系统的装入程序负责将可执行文件.EXE装入到存储器中,并最后确定任何无法确定的地址。

图1-1 汇编语言上机过程

1.2.3 常用汇编语言工具

常用的汇编语言工具有:

(1)Microsoft公司的宏汇编语言系列,如MASM5.0、MASM6.11、MASM6.13、MASM6.15,Visual Studio等。

(2)Borland公司的Turbo 汇编工具系列TASM。

(3)开源软件nasm,可以编译跨平台应用程序。

(4)汇编语言开发者自行组装的Win32开发软件包MASM32。

1.2.4 常用编辑软件

(1)PWB

在DOS环境下,MASM6.11软件包中提供了一个集成开发环境PWB,可以实现程序编辑、编译和调试工作。在Windows环境中,MASM和TASM两者都没有专用的汇编语言编辑软件。

(2)Notepad记事本

在Windows系统环境下编写汇编语言程序,可以采用Windows自带的Notepad记事本程序。但需要注意的是,由于Notepad默认编写文本文件,扩展名采用.txt命名。所以,Notepad 经常自动在已经命名的汇编语言源文件(.asm)后额外添加.txt后缀,引起编译时的问题。建议使用安装NotePad++替代。

(3)Editplus

EditPlus是一款可以处理文本、HTML页面以及程序语言格式的32位编辑器,可以完全取代Notepad记事本工具。EditPlus可以编辑多种类型的文件,例如HTML、XML、ASP、C/C++、Perl、Java等;提供多窗口功能,可以在工作区中打开多个文档;可以根据语言的语法自动识别关键字、标识符、字符串等内容,并用不同的颜色区别显示,提高输入效率,减少输入错误。要想实现汇编语言的语法识别可以下载并导入汇编语言的语法文件。虽然EditPlus只是一个编辑软件,但是可以通过设置外挂来配置为汇编语言的集成开发环境。

(4)UltraEdit

UltraEdit是一个与EditPlus功能类似的编辑软件,也可以通过配置使之成为汇编语言的集成环境。它的优点是可以对二进制文件进行编辑。

1.2.5 常用集成环境

1.MASMPlus

2.MASMEDIT

MasmEdit是一个国内开发人员编写的自由软件,用于汇编语言教学。其主要特点:(1)自动定时保存文件,可设定定时间隔

(2)多文件同时编辑,用剪贴板在多个文件之间交换代码

(3)内部集成编译器,无需自行安装MASM和TASM

(4)保存上次操作时的一切设置

注意事项:安装在符合DOS要求的目录下,汇编语言源文件也要存储在纯DOS目录下。

3.Visual Studio

Visual Studio是微软公司的开发工具集成环境。虽然其中没有提供MASM的开发,但是将其集成在Visual Studio产品中。通过为Visual C++环境进行配置可以作为汇编语言的学习和工作环境。

1.3 汇编环境安装

1.3.1 MASM6.11的安装

MASM6.11是微软公司的成熟、稳定、功能强大、操作简便的汇编语言编译工具环境。在可操作性方面,与MASM5.0相比它增加了集成环境,使用更方便。

下面介绍其安装过程。

首先,准备汇编语言工具包软件,将其存储在移动介质中(软盘或USB存储设备)或者复制到本地硬盘中(例如硬盘D的MASM611目录中)。下面以硬盘操作为例讲解操作过程。切记保存工具包的目录名要使用英文形式以便于在DOS模式下访问。

然后,进入DOS运行模式。启动开始菜单中的运行功能,在输入框中键入cmd或者command,单击确定按钮,打开DOS模式工作窗口(如图1-2)。在“命令提示符下”输入D:\和CD \MASM611命令,切换工作路径到汇编工具包软件目录下。

图1-2 进入DOS运行模式

步骤1:启动安装

在“命令提示符”下运行setup.exe安装程序(或者直接鼠标点击setup.exe程序),启动MASM安装程序如图1-3所示。

图1-3 启动安装程序

步骤2:进入主菜单

按回车键进入主菜单窗口(如图1-4所示),选择“Install the Microsoft Macro Assembler”菜单项开始安装宏汇编软件。

图1-4 安装主菜单

步骤3:选择安装项目

根据你使用的操作系统及安装需要选择后续各项配置。建议按下面方案进行选择(如图1-5):“DOS/Windows & NT”、“安装Windows文件”、“安装PWB”、“安装Brief compatibility”、“安装Microsoft Mouse Driver”、“安装MASM.EXE”、“安装帮助文件”、“安

装编程例子”。

图1-5 系统配置

步骤4:安装路径选择

由于大多数教学机房都已经安装了还原卡,在操作时应选择未被保护的驱动器,此处选择D驱动器为目的驱动器(如图1-6)。

软件安装的目录建议采用默认设置。相关子目录说明如下:

z Windows NT环境的执行文件将安装在 BIN子目录中;

z DOS环境的执行文件将安装在BINR子目录下

z库文件将安装在LIB子目录中

z包含文件将安装在INLCUDE子目录下

z PWD和CodeView的初始化文件安装在INIT子目录中

z帮助文件安装在HELP子目录中

z编程实例安装在SAMPLES子目录下

图1-6 选择安装位置

步骤5:开始安装

按回车键选择“NO CHANGES”菜单项开始安装(图1-7)。当出现“Installation Complete”窗口时,软件安装完成。

图1-7 开始安装

步骤6:环境设置

按回车键进入环境设置窗口(图1-8),安装程序给出“环境设置”,提示用户如何在DOS环境中修改计算机系统中有关配置文件。

注意:请同学记住各配置文件的用途和存放位置,便于下面配置操作。

NEW-V ARS.BAT和NEW-CONFIG.SYS文件的内容是DOS系统下的设备驱动和自动启动文件中应包含的内容。在Windows XP操作系统中,需要在系统的环境变量设置窗口中设置各项内容。按如下操作:

“我的电脑图标”点击右键-〉选择属性-〉高级选项卡-〉环境变量按钮-〉系统变量-〉新建。将NEW-V ARS.BAT文件中的每行信息按照图1-9编辑系统变量窗口所示进行设置。

图1-8 环境设置提示

图1-9 配置环境变量

PWB环境变量的设置,需要将TOOLS.PRE文件改名为TOOLS.INI或者将内容合并如TOOLS.INI文件。内容设置,对于Windows环境来说无需修改,但对于纯DOS环境来说需要按照说明设置。

也可以安装如下内容准备DOS窗口中的环境设置批处理文件。

1.模拟DOS环境批处理文件DOS16.BAT

@ECHO OFF

SET PATH=C:\MASM611\BIN;C:\MASM611\BINR;%PATH%

SET LIB=C:\MASM611\LIB

SET INCLUDE=C:\MASM611\INCLUDE

SET INIT=C:\MASM611\INIT

SET HELPFILES=C:\MASM611\HELP\*.HLP

SET ASMEX=C:\MASM611\SAMPLES

SET TMP=C:\WINDOWS\TEMP

%SystemRoot%\System32\https://www.360docs.net/doc/0110348053.html,

@ECHO ON

2.Win32控制台环境批处理文件WIN32.BAT

@ECHO OFF

SET PATH=C:\MASM611\BIN;C:\MASM611\BINR;%PATH%

SET LIB=C:\MASM611\LIB

SET INCLUDE=C:\MASM611\INCLUDE

SET INIT=C:\MASM611\INIT

SET HELPFILES=C:\MASM611\HELP\*.HLP

SET ASMEX=C:\MASM611\SAMPLES

SET TMP=C:\WINDOWS\TEMP

%SystemRoot%\System32\cmd.exe

@ECHO ON

步骤7:退出安装

在主菜单窗口中选择“Exit SETUP”退出安装程序。

1.3.2 TASM5.0的安装

TASM5.0是Borland公司的汇编语言编译工具环境。安装过程如下:

步骤1:启动安装

在“命令提示符”下运行TASM软件包中的install.exe安装程序(或者直接鼠标点击install.exe程序),启动安装程序如图1-10所示。

图1-10 启动安装程序

步骤2:选择软件包源路径

依据TASM5.0软件包的原始路径,输入所在驱动器的盘符(如图1-11),然后键入回车。

图1-11 确定源盘位置

步骤3:确定安装目的路经

根据需要修改TASM5.0软件包的安装位置。默认是源路径下的\TASM目录,建议修改为D驱动器(如图1-12)。

图1-12 确定安装目的位置

步骤4:开始安装

移动光条到“Start Installation”处,按回车键开始安装(如图1-13)。当出现“Create Program Groups”窗口时,选择确认。安装完成时,将显示帮助信息(如图1-14),按ESC键结束。环境配置参照MASM。

图1-13 开始安装

图1-14安装结束

1.4 MASM程序使用

1.4.1 MASM命令

MASM.EXE文件用于将汇编语言源程序汇编成目标文件。在完成MASM6.11的安装之后,进入DOS环境,在提示符后输入MASM /H命令,可以进入帮助窗口(如图1-15)。

图1-15 MASM帮助

命令格式:

MASM [option…] source(.asm), [out(.obj)], [list(.lst)], [cref(.crf)][;] 其中:

(1)source.asm 汇编源文件名称,扩展名.asm

(2)out(.obj) 输出目标代码文件,默认文件名与汇编源文件相同

(3)list(.lst) 输出列表文件,默认为NULL,不产生

(4)cref(.crf) 输出交叉参考文件,默认情况下不产生

(5);(分号)表示其后的选项采用默认设置

(6)option 编译选项,详见表1-1

表1-1option说明

选项含义选项含义

区分全局标识符的大小写

/H、/HELP 显示帮助 /MX

/L 生成列表文件 /T

隐藏成功汇编时的显示信息

/ML 区分所有标识符的大小写 /Zi 生成CodeView的行号信息

/I 查找包含文件(INC)的目录 /N 隐藏列表文件中的符号表

/La 生成全部列表文件 /W[0/1/2]

设置警告等级(0无1严重2警告)/MU 将全局标识符转换为大写 /Zd 生成CodeView的标识符信息如果源程序没有语法错误,那么,将生成目标文件,为最终生成可执行文件做准备,但如果源程序有错误,汇编程序将显示出错误位置和原因。使用列表文件可以查看出错位置和原因。

1.4.2 LINK命令

LINK.EXE用于将目标文件(.obj文件)连接为可执行文件(.exe或.com文件)。

命令格式:

LINK [option…] ,,,,[;]

(1)objs 指定目标文件的名称,可以有多个目标文件,以加号或空格符间隔(2)exefile 输出可执行文件的名称,默认与目标文件名相同,扩展名为.exe

(3)mapfile 指定输出的列表文件名,默认扩展名为.map。默认不生成列表文件(4)libs 指定连接时使用的库文件,默认扩展名为lib,可以使用多个库文件,以加号或空格间隔

(5)deffile 指定输出定义文件的名称,默认扩展名为.def。默认不生成改文件。

(6);(分号)表示其后的项目按默认情况处理。

LINK中最重要的几个选项说明如表1-2。

表1-2 LINK的重要选项

选项缩写含义

/Codeview /Co 加入Codeview的标识符号及列号,该选项与/Exepack不兼容/Exepack /E 压缩可执行文件的大小,与/Co和/Inc不兼容

/Farcalltranslation /F 优化远程调用,当使用/Tiny时自动使用/Farcall。

/Incremental /Inc 准备加入ilink连接,与/Exepack和/Tiny不兼容

/Map /M

将公共标识符加入到MAP文件

/Stack:Number /ST:NNN 设置堆栈段的最大字节数,不能超过64K

/Tiny /T

生成小模式的com文件,与/Inc不兼容

/?,/Help /?,/he 显示简要的帮助信息

1.4.3 ML命令

ML相当于MASM和LINK的总和,即汇编与连接一步完成。

命令格式:

ML [/options] filelist [/link linkoptions]

(1)/options ML的各种连接参数

(2)filelist 指定汇编源文件的名称,默认扩展名.ASM。可以有多个源文件,用空格分隔

(3)/link linkoptions 设定的连接参数,与LINK的参数一致

ML的重要选项参数如表1-3所示。

表1-3 ML的总要参数

选项含义选项含义

/AT 允许小模式 /c 仅汇编不连接

/Cp 区分用户标识符的大小

/Cu 将所有标识符映像为大写

/Cx 区分公共和外部标识符

的大小写

/F[hex] 设置堆栈大小

/Fe 设置可执行文件的名称 /Fl[file] 生成汇编代码列表文件

/Fo 设置目标文件的名称 /FPi 生成80x87模拟代码

/I 添加include文件的目录/link

libs>

连接选项和库

/Sn 隐藏列表文件中的符号

/Sx 列表文件中列举错误条件/WX 传回警告的错误码 /W[0/1/2] 设置警告等级(0无1严重

2警告)

/Zd 在目标文件中产生

Codeview行号/Zi 在目标文件中生成

CodeView的标识符信息

1.4.4 操作实例

下面给出了一个示例程序(如图1-16)。

图1-16 示例程序

使用编辑器输入该程序,并保存为hello.asm。然后用masm hello;命令进行汇编,结果如图1-17所示。检查该目录下可以见到生成的目标文件hello.obj。使用带参数的masm命令:masm /La /Zi /Zd hello.asm可以所生成.lst文件。

图1-17 masm汇编hello.asm

使用link hello;命令对目标文件进行连接,然后键入hello运行。

图1-18 连接并运行hello

上面的两步也可以用ML hello.asm对hello.asm文件进行联编,汇编链接一步完成。

前面的示例采用了small模式的段分配方式。对于这种代码较少的程序可以采用Tiny 模式生成小模式的COM文件。对于有多个数据段、堆栈段的汇编语言程序,建议将其汇编连接为EXE文件。如果程序的代码和数据比较少,可以将其汇编为COM文件。

EXE文件可以有多个段,每个段的最大空间为64K。程序执行时需要对多个段进行访问和管理,所以EXE文件的结构相对比较复杂。而COM文件只有一个段,执行代码与数据在同一个段中,其程序不能超过64K,因此COM文件比EXE文件更加短小精炼。对上面的程序进行改写保存为hello1.asm,内容如图1-19所示。

图1-19 com格式的hello文件

使用ml hello1.asm命令联编结果如图1-20。

图1-20 联编结果

1.5 配置汇编语言集成环境

1.5.1配置UltraEdit为MASM集成环境

通过配置UltraEdit可以实现多种语言的集成环境。通过配置工作,我们可以实现Windows平台下的汇编语言集成开发环境。该工作是通过设置新的菜单项实现的,即把DOS 下命令行中的汇编、连接、运行、调试等工作设置在菜单中。

下面以配置MASM为例,具体讲解操作过程如下(如图1-21):

1.选择菜单“高级”下的“工具栏配置”选项启动“工具栏配置”窗口。

2.点击“命令行”编辑框后边的“浏览”按钮,选择编译环境所在的路径,或者直接输入编译器所在路径。假设当前编译环境安装在“D:\MASM611\BIN\MASM.EXE”,可以直接输入编译器所在路径,然后跟上“%F”。%F表示当前活动文件的完整名称(包括路径名、文件名和后缀)。在“工作目录”编辑框里添入“%P”(生成的.OBJ文件将处于源文件相同的目录下)。在“菜单项目名称”编辑框里添写“编译(&C)”,确定显示在菜单上的选项名称。选中“保存活动文件”检查框,确保编译更改过的程序。在“命令行输出(DOS命令)”组框中,选择中“输出到列表方框”和“捕捉输出”选项。点击右边的“插入”按钮,设定“编译”菜单项。

图1-21 设定编译菜单项

3.按同样的步骤添加“连接(&L)”和“运行(&R)”菜单。“连接”菜单项的命令行为“D:\MASM611\BINR\LINK %P%N.OBJ;”。“运行”菜单项的命令行为“%P%N.EXE;”。其中,%P表示路径名,%N表示文件名。

在Ultra Edit工具配置里%F表示当前活动文件名,%P表示路径,%N表示文件名,%E 表示文件的后缀。例如文件D:\ASM\HELLO.ASM中,%F 表示D:\ASM\HELLO.ASM,%P 表示D:\ASM\,%N表示文件名HELLO,%E表示后缀.ASM。

1.5.2配置EditPlus为MASM集成环境

EditPlus本身是一个编辑软件,不带编译器和调试器。与UltraEdit一样,需要使用外挂实现编译和调试功能。首先要安装好MASM编译器。假设使用的编译器是MASM v6.11,安装路径为D:\MASM611,下面以这个路径为例来讲解整个配置过程。

1. 配置编译器工具

执行“工具”菜单->“配置用户工具”,在弹出的对话框中单击“添加工具”->“应用程序”,然后按照下面的内容填写对应文本框,并在动作下拉框中选择“捕捉输出”(如图1-22)。“菜单文本”设置为“编译(&C)”。“命令”设置为“D:\MASM611\BIN\MASM.EXE”。“参数”设置为$(FilePath)。“初始目录”设置为$(FileDir)。

图1-22 配置编译器

2. 配置连接器工具

“添加工具”->“应用程序”,然后按照下面的内容填写对应文本框,并在动作下拉框中选择“捕捉输出”。

“菜单文本”设置为“连接(&L)”。

“命令”设置为“D:\MASM611\BIN\LINK.EXE”。

“参数”设置为“$(FileDir)\$(FileNameNoExt).obj”。

“初始目录”设置为“$(FileDir)”。

3. 配置调试器

“添加工具”->“应用程序”,然后按照下面的内容填写对应文本框,并在动作下拉框中选则“退出时关闭窗口”。

“菜单文本”设置为“调试(&D)”。

“命令”设置为“DEBUG”。

“参数”设置为“$(Filedir)$\$(FileNameNoExt).EXE”。

“初始目录”设置为“$(FileDir)”。

4.设置联编工具

“添加工具”->“应用程序”,然后按照下面的内容填写对应文本框,并在动作下拉框中选则“退出时关闭窗口”。

“菜单文本”设置为“汇编与链接”。

“命令”设置为“D:\MASM611\BIN\ML.EXE”。

“参数”设置为“$(Filedir)$\$(FileNameNoExt).EXE”。

“初始目录”设置为“$(FileDir)”。

5.运行

“添加工具”->“应用程序”,然后按照下面的内容填写对应文本框。

菜单文本:运行(&R)

命令:$(FileNameNoExt).EXE

参数:

初始目录:$(FileDir)

5.配置语法高亮

“工具”->“参数设置”。在对话框的树形控件中选择“文件”->“设置和语法”。然后添加一个文件类型,并选择语法高亮文件。EditPlus用MASM v6.15的语法高亮代码参见附录。

图1-23 配置语法高亮

1.5.3配置Visual Studio 2008作为MASM集成环境

1.5.3.1 编辑器习惯设置

1. 制表符设置

启动Visual Studio,并从“工具”菜单选择“选项”。选择“文本编辑器”,选择“所有语言”,并选择“制表符”,设置制表位大小和缩进为5(如下图)。

图1-24 编辑器设置

2. MASM 语法高亮显示

当文本编辑器使用语法高亮时,语言的关键字,字符串和其他一些元素以不同的颜色显示。Visual Studio and Visual C++ Express 能够高亮MASM 保留字和字符串。这个功能不是自动实现的,但是你可以创建包含MASM关键字的语法定义文件Usertype.dat来实现。当Visual Studio启动时,会读取这个语法文件,并高亮显示 MASM关键字。

具体步骤如下:

1) 制作语法文件

Usertype.dat文件是纯文本格式,每个保留字占一行。你可以自行使用文本编辑软件编辑输入汇编语言的保留字,也可以使用其他编辑器的语法高亮文件进行修改。

2)复制Usertype.dat到C:\Program Files\Microsoft Visual Studio xx.x\Common7\IDE 文件夹。("xx" 可能是9.x或 10.x)

3) 打开 Visual Studio或Visual C++ Express,从“工具”菜单选择“选项”,选择“文本编辑器”,然后选择“文件扩展名”。在对话框的右侧(如图1-25),输入asm作为扩展名,从编辑器列表选择Microsoft Visual C++ ,并点击“添加”按钮。点击“确定”保存你的改变。关闭Visual Studio然后重新启动。打开一个ASM文件后,你将看到编辑器中实现了语法高亮显示。

图1-25设置扩展名

1.5.3.2 创建及配置项目

Visual Studio要求汇编语言源文件属于一个项目(一种容器)。一个项目含有配置信息,例如汇编器、连接器和需要的库的位置信息。一个项目有它自己的目录,它容纳所有属于它的文件的名字和位置信息。在汇编语言的学习过程中采用Win32控制台方式可以简化输入输出操作,便于对基础知识的理解和掌握。

1.创建空项目

选择“文件”菜单下的新建命令,选择“空项目”。

图1-26 创建空项目

2.定制VC++工程规则

打开创建的空项目,从“项目”菜单选择“自定义生成规则”。在对话框中勾选Microsoft Macro Assembleer(如图1-27),点击“确定”按钮关闭对话框。

图1-27 自定义规则

3.配置项目属性

从“项目”菜单选择“项目属性”,展开“配置属性”,然后展开名字为“Microsoft Macro Assembler”的项目。如图1-28所示

图1-28 配置属性窗口

点击“Microsoft Macro Assembler”下的“常规”。设置Include Paths 项为c:\Irvine 目录(你的汇编语言学习包的位置)。这是告诉汇编器在哪里找扩展名为".inc"的文件。如图1-29。

图1-29 配置路径参数

接下来,选择“Listing File ”,设置汇编代码列表文件(如图1-30)。输入一个宏名(以$开始) 指示源输入文件名,带有.lst的文件扩展名。假使你的程序被命名为main.asm,列表文件将被命名为main.lst。

图1-30 配置列表文件参数

找到配置属性下的连接器。选择“输入”,并加入“附加依赖项”两个文件:user32.lib 和irvine32.lib(如图1-31)。user32.lib文件是标准的MS-Windows 文件。irvine32.lib 文件是连接库(支持教学实验的)。必须有至少一个空个分开着两个文件。

图1-31 配置库文件参数

接下来,选择配置属性下的连接器,并选择“常规”。附加库目录选项等于c:\Irvine,这样连接器能找到 Irvine32.lib 库文件。

图1-32 配置附加库

选择配置属性下的连接器,并选择调试。“常规”调试信息选项设置为是。

图1-33 配置生成调试信息

计算机组成原理实验1-汇编语言实验

微处理器与接口技术 实验指导

实验一监控程序与汇编语言程序设计实验 一、实验要求 1、实验之前认真预习,明确实验的目的和具体实验内容,设计好主要的待实验的程序,做好实验之前的必要准备。 2、想好实验的操作步骤,明确通过实验到底可以学习哪些知识,想一想怎么样有意识地提高教学实验的真正效果。 3、在教学实验过程中,要爱护教学实验设备,认真记录和仔细分析遇到的现象与问题,找出解决问题的办法,有意识地提高自己创新思维能力。 4、实验之后认真写出实验报告,重点在于预习时准备的内容,实验数据,实验过程、遇到的现象和解决问题的办法,自己的收获体会,对改进教学实验安排的建议等。善于总结和发现问题,写好实验报告是培养实际工作能力非常重要的一个环节,应给以足够的重视。 二、实验目的 【1】学习和了解TEC-XP16教学实验系统监控命令的用法; 【2】学习和了解TEC-XP16教学实验系统的指令系统;

【3】学习简单的TEC-XP16教学实验系统汇编程序设计。 三、实验注意事项 (一)实验箱检查 【1】连接电源线和通讯线前TEC-XP16实验系统的电源开关一定要处于断开状态,否则可能会对TEC-XP16实验系统上的芯片和PC机的串口造成损害。 【2】五位控制开关的功能示意图如下: 【3】几种常用的工作方式【开关拨到上方表示为1,拨到下方为0】 (二)软件操作注意事项 【1】用户在选择串口时,选定的是PC机的串口1或串口2,而不是TEC-XP16实验系统上的串口。即选定的是用户实验时通讯线接的PC机的端口; 【2】如果在运行到第五步时没有出现应该出现的界面,用户需要检查是不是打开了两个软件界面,若是,关掉其中一个再试; 【3】有时若TEC-XP16实验系统不通讯,也可以重新启动软件或是重新启动PC再试; 【4】在打开该应用软件时,其它的同样会用到该串口的应用软件要先关掉。

汇编语言实验报告

汇编语言实验报告 专业: 班级: 姓名: 学号: 2011年12月14日

目录 实验1 利用DEBUG调试汇编语言程序段 (3) 实验2 初级程序的编写与调试实验(一) (11) 实验3 初级程序的编写与调试实验(二) (20) 实验4 汇编语言程序上机过程 (28) 实验5 分支程序实验 (33) 实验6 循环程序实验 (40) 实验7 子程序实验 (45)

实验1 利用DEBUG调试汇编语言程序段一.实验目的 1.熟悉DEBUG有关命令的使用方法; 2.利用DEBUG掌握有关指令的功能; 3.利用DEBUG运行简单的程序段。 二.实验内容 1.进入和退出DEBUG程序; 1)开始—运行,输入cmd,点确定进入命令窗口 2)在命令窗口中输入dubug进入debug程序 3)进入debug窗口后,输入q命令退出debug 2.学会DEBUG中的 1)D命令(显示内存数据D 段地址:偏移地址) 例1:-D100;显示DS段, 0100开始的128个节内容

说明:指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。 ①DSEGREG[起始地址] [L 长度] ;显示SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的内容. ② D SEGREG[段地址:偏移地址] ;显示SEGREG段中(缺省内默认为DS), [段地址:偏移地址]开始的[L 长度] (缺省内默认为128)个字节内容 -D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H) -D DS:100 ;显示DS段, 0100H开始的128个字节内容 -D CS:200 ;显示CS段, 0200H开始的128个字节内容 -D 200:100 ;显示DS段, 0200:0100H开始的128个字节内容

汇编语言程序设计实验报告

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH, 97H,64H,BBH,7FH,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 第1页

99223344H = xxxxxxxxH 四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

图5 移动次数显示5.0 程序运行结果

汇编语言综合实验报告

XXXX大学XX学院 实验报告 课程名称:汇编语言 学号: 姓名: 系: 专业: 年级: 指导教师: 职称: 20xx~20xx学年第一学期

实验项目列表 序号实验项目名称成绩指导教师 1 实验一汇编程序的汇编及运行 2 实验二顺序程序设计 3 实验三分支循环程序设计 4 实验四 DOS功能调用 5 实验五子程序设计 总平均

福建农林大学金山学院实验报告 系:专业:年级: 姓名:学号:实验课程:汇编语言 实验室号:__ __ 实验设备号:实验时间: 90分钟 指导教师签字:成绩: 实验一汇编程序的汇编及运行 1.实验目的和要求 (1)熟悉汇编程序的汇编、连接、执行过程 (2)生成LST文件,查看LST文件 (3)生成OBJ文件,修改语法错误 (4)生成EXE文件 (5)执行 2.实验环境 IBM—PC机及其兼容机 实验的软件环境是: 操作系统:DOS 2.0以上;调试程序:https://www.360docs.net/doc/0110348053.html,;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。 3.实验内容及实验数据记录 (1)将数据段输入,取名1.txt,保存在MASM文件夹下。生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少? DA TA SEGMENT ORG 20H NUM1=8 NUM2=NUM1+10H DA1 DB ‘IBM PC’ DA2 DB 0AH, 0DH COUNT EQU $-DA1

实验1_认识汇编语言

实验一 认识汇编语言 1.1 实验目的 (1)理解汇编语言的概念及其与高级语言的区别 (2)了解MASM6.11和TASM软件包的安装及配置 (3)了解常用汇编语言集成环境 (4)掌握汇编语言程序的上机过程 1.2 预备知识 1.2.1 系统环境 对汇编语言的初学者来说,DOS环境的优点是:DOS操作系统简单,程序员可以管理系统的所有资源,访问和修改系统中的所有内存(包括内存控制块、中断向量表),直接对I/O端口进行读写,便于对知识的学习和理解。其缺点是:单任务的DOS操作系统只有一个运行级别,任何进程与DOS操作系统都是同等级别的,致使系统中各个进程会相互影响。如果某个进程死机,整个系统就会瘫痪。 但是DOS系统已经退出历史舞台,目前的学生只熟悉Windows环境而对DOS知之甚少,继续要求学生在DOS系统的命令行界面下编写和调试程序,无疑存在巨大的困难。 目前,IBM PC及其兼容机配置的Intel系列微处理器可以工作在实模式、保护模式和虚拟86三种模式下。实模式是汇编语言入门的基础,是汇编语言教学中无法跨越的阶段。了解实模式是理解内存分段式管理和寻址方式的基础。保护模式是Windows系统的工作模式,虚拟86模式则是在保护模式下提供的模拟8086处理器工作的模式,为学习汇编语言提供了便利。DOS汇编程序在Win32环境中运行时,操作系统会模拟实模式运行16位进程。对于一些可能会影响整个操作系统工作的指令,windows操作系统会拒绝执行。64位的Windows 环境则不提供16位应用的虚拟环境。 因此,采用Win32环境进行汇编语言程序的编辑工作,在虚拟控制台环境中学习(汇编、连接和调试)汇编语言是最佳方案。下面我们将逐步给大家讲解如何安装和配置汇编语言的编译调试环境,并选择适合的编辑软件来组建汇编语言的集成环境。最后,叙述如何使用Visual Studio 2008 Express作为汇编语言的工作环境。 1.2.2 汇编语言上机过程 汇编语言程序需要经过编辑、汇编、连接、调试与执行等过程才能实现其具体功能。图1-1说明了汇编语言的上机过程。 第一步:编辑 使用编辑软件创建和编写汇编语言源文件,并以 .asm 作为文件名后缀。 第二步:汇编 使用汇编程序将源程序翻译成机器码形式的文件,以 .obj 为后缀的目标程序。汇编包括把源程序翻译成目标代码,并产生中间的.OBJ文件或模块。汇编程序的任务是为数据段中的每个数据项和代码段中的每条指令计算偏移值,并在所产生的.OBJ模块的前面直接建立一个头部来存储不确定的地址信息。在汇编时可以选择产生列表文件(.LST)和交叉引用文件(.CRF)。列表文件含有出错诊断信息,可以用来帮助检查源程序中的错误。交叉引用文件在编写大型程序时可以提供指令引用的数据项列表。 第三步:连接 使用连接程序完成对于目标程序的装配工作,生成可执行程序,以.exe或者.com为后缀的执行文件。连接程序的任务包括确定由汇编程序遗留下来的不确定的地址,并把分别汇

汇编语言实验2

计算机工程系实验报告 课程名称:汇编语言 实验项目名称:用机器指令和汇编语言指令编程 班级:15级计科4班姓名:梁红梅学号:15091413 一、实验目的: 1.学习Debug中D命令的使用方法,掌握查看指定内存单元的内容的指令,其中本实验中 主要掌握“d段地址:偏移地址”的格式; 2.了解Debug 中D命令程序的执行者:CPU,了解D命令的执行过程; 3.掌握CPU在访问内存单元时的主要过程; 4.学习怎样利用在Debug中cs、ds、ss、es这4个段寄存器,简化debug命令格式。 二、实验要求: 使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。Mov ax,ffff Mov ds,ax Mov ax,2200 Mov ss,ax Mov sp,0100 Mov ax,[0] ;ax= Add ax,[2] ;ax= Mov bx,[4] ;bx= Add bx,[6] ;bx= Push ax ;sp= 修改的内存单元的地址是内容为 Push bx ;sp= 修改的内存单元的地址是内容为 Pop ax ;sp= ;ax= Pop bx ;sp= ;ax= Push [4] ;sp= 修改的内存单元的地址是内容为 Push [6] ;sp= 修改的内存单元的地址是内容为

三、实验数据记录: 1.进入Debug后使用-a命令将程序写入内存 2.通过使用-t命令将写入内存的程序逐一执行,直到命令执行完毕

三、实验结果及分析: 1.mov ax,[0] 执行完成后 ax=C0EA; 2.add ax,[2]执行完成后ax=C0FC; 3.mov bx,[4] 执行完成后 bx=30F0; 4.add bx,[6]执行完成后 bx=6021; 5.push ax 执行完成后 sp= 00FE 修改的内存单元的地址是 2200:00FE 内容为C0FC 6.push bx 执行完成后 sp= 00FC 修改的内存单元的地址是 2200:00FC 内容为6021

汇编语言综合实验报告

综合性设计性实验报告 班级:计算机科学与技术专2014 级 4 班实验项目名称:循环显示1 0 个数字符号 实验项目性质:综合性 实验所属课程:计算机组成原理与汇编语言 实验室(中心):实验室(4 0 7 ) 指导教师: 实验完成时间: 2016 年 5 月 27

一、实验目的 (1)掌握子程序的定义和调用方法。 (2)掌握子程序的编写方法及参数传递的方法。 二、实验内容及要求 本实验内容主要是编写一个显示过程汇编程序,使得在屏幕上依次显示10 个数字符号,每一行13 个字符,然后循环进行显示。实验要求是在代码段中编写这个过程,并要求用主程序调用该过程。 三、实验设备及软件 实验室(407)电脑一台以及编译器DEBUG MASM LINK软件。 四、设计方案 ㈠题目(老师给定或学生自定) 循环显示10个字符 ㈡设计的主要思路 首先,先定义一个数据段和代码段。数据段内定义一个名称为prl大小为一个字节的字符串,即本人学号。代码段内首先借助段寻址伪指令ASSUME规定好代码段和数据段分别在段寄存器CS、DS。然后start内将数据段段地址放入DS中。接下来定义一个子程序dgdsp,其实现的功能主要是先将bl(字符数目控制)清零,dl(字符范围0-9)赋值为字符0的ascll码。然后定义一个lp循环,循环内调用DOS2号功能显示字符,并bl、dl自增,接着比较dl与字符9的ascll码值的大小,若大于就将dl重置为字符0的ascll码。若小于则跳转到next循环,next循环中主要比较bl与13的大小,若小于则跳转到lp,若大于就进入bbb子程序。bbb子程序主要是先保护DX将其压栈,然后使用DOS9号功能显示prl字符串,最后将DX出栈。然后进入next循环将DX压栈,分别使用DOS0a、02号功能将dl输入显示,最后将DX出栈。分别将bl、al清零,最后跳转到lp子程序继续循环执行。 流程图如下:

汇编语言实验报告——累加

《汇编语言》实验报告 ——累加器制作 2014级计算机科学与工程学院 学号: 姓名 一、实验要求: 1.显示 INPUT N :,提示用户输入数字字串 2.检测输入字串的合法性,非法给出提示 3.将输入数字字串转化为数值,存入变量n 4.累加1~n ,存入变量sum 5.以十进制显示sum 二、流程图: 开始 输入 判断是否为回车 判断是否为数字 是 转化为数值,将堆栈中 的高位数字乘10然后与低位数字相加,放入堆 栈 否 显示“error ” 结束 否 是 判断cx=0 否 将CX加到A X中 是 得出sum的值 将结果除以10并将余数存入堆栈,累计位数cx,直至商为0 将堆栈中的数字依次输出显示,直至cx=0

三、源代码: DATAS SEGMENT str1 db "Input N:","$" str2 db "sum=","$" str3 db 0ah,"error","$" n dw 0 sum dw 0 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX LEA dx,str1;输出提示符 mov ah,9 int 21h input: mov ah,01;输入数字 int 21h cmp al,0dh;判断是否为回车 jz step1 cmp al,"0";判断字符合法性 jb error cmp al,"9" ja error sub al,"0";转化为ASCII码 mov ah,0;此段将高位乘10 push ax mov ax,n shl ax,1 push ax mov cl,2 shl ax,cl

汇编语言实验一

淮阴工学院 汇编语言程序设计实验报告 选题名称:实验一调试工具的使用方法训练 系(院):计算机工程学院 专业:计算机科学与技术 班级: 1101 姓名:康志杰学号: 1101301132 指导教师:王福德 学年学期:2013 学年第 2 学期 2013 年 4 月15 日

实验一利用DEBUG调试程序调试程序段 <1 > 实验目的: (1)熟悉DEBUG有关命令的使用方法 (2)利用DEBUG掌握有关指令的功能 (3)利用DEBUG运行简单的程序段 <2 > 实验内容 (1)进入和退出DEBUG程序 1)开始——运行,输入cmd,点确定或回车键进入DOS环境 2)在命令窗口输入debug进入debug程序 3)进入debug程序后,按q退出

(2) 学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。对于U命 令、N命令、W命令等,也应试一下。 1 显示存储器单元命令D 格式:D [<地址范围>] 功能:显示指定地址范围内的存储区数据,包括十六进制数据形式及其对应的ASCII码字符显示。 2 写存储器单元命令E 格式:E <地址> [<字符串>] 功能:逐个修改指定单元内容或将字节串写入指定的一组连续单元。 例:将字节串′computer′写入以100H为起始地址的存储器区。 -E 100′computer′ 3显示和修改某个指定寄存器内容, 格式为:-R 寄存器名 例如打入:-R AX 系统将响应如下: AX 0000

: 表示AX当前内容为0000,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如: -R BX BX 0000 :1000 则BX内容由0000改为1000 4显示和修改标志位状态, 命令格式为:-RF 系统将给出响应,如 NV UP EI PL NZ NA PO NC- 这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。如 NV UP EI PL NZ NA PO NC-ZR CY

大学课程汇编语言的实验报告

实验报告 实验课程: 学生姓名: 学号: 专业班级:电气信息类III班 2011年12月20日

目录 (1)汇编语言程序上机过程 (2) (2)字符串处理程序实验 (6) (3)子程序实验 (13) (4)中断程序实验 (21) (5)C++调用汇编子程序 (25)

南昌大学实验报告 ---(1)汇编语言程序上机过程学生姓名:学号:专业班级: 实验类型:□验证■综合□设计□创新实验日期:2011.11.12/13实验成绩:一、实验目的 熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。了解汇编语言程序的汇编、运行环境。 二、实验内容 1.掌握常用的编辑工具软件(如WORD、EDIT)、MASM和LINK的使用; 2.伪指令:SEGMENT,ENDS,ASSUME,END,OFFSET,DUP; 3.利用的INT21H的1号功能实现键盘输入的方法; 三、实验环境 PC微机 DOS操作系统或Windows操作系统 MASM.EXE,LINK.EXE,https://www.360docs.net/doc/0110348053.html,或宏汇编集成环境 四、实验要求 1.仔细阅读有关伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的内容; 2.了解利用的INT21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT21H4C号功能返回系统的方法; 3.阅读下面程序段。 五、主要实验步骤 程序: data segment message db'This is a sample program of keyboard and disply' db0dh,0ah,'Please strike the key!',0dh,0ah,'$' data ends stack segment para stack'stack' db50dup(?) stack ends code segment assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax mov dx,offset message mov ah,9 int21h again:mov ah,1

汇编语言第1-2章考前复习题

1. 知识点:0202(基于微处理器的计算机系统构成) 在下列的选项中,能够组成计算机系统的是(A )。选项A)硬件系统和软件系统 选项B)CPU、存储器、输入/输出设备 选项C)操作系统、各种语言 选项D)系统软件和应用软件 2. 知识点:01 (基础知识) 汇编语言属于(B) 选项A)用户软件 选项B)系统软件 选项C)高级语言 选项D)机器语言 5知识点:0203(中央处理机) 中央处理器CPU是由(D)组成的 选项A)运算器 选项B)控制器 选项C)寄存器组 选项D)前三者 答案:D 6. 知识点:0201(80x86微处理器) IBM PC机的DOS是属于(B)。 选项A)用户软件

选项B)系统软件 选项C)系统硬件 选项D)一种语言 8. 知识点:0203(中央处理机) 8086/8088 CPU的寄存器组中,8位的寄存器共有(C)个 选项A)4 选项B)6 选项C)8(al ah bl bhcl chdl dh) 选项D)10 9. 知识点:0203(中央处理机) 8086/8088 CPU的寄存器组中,16位的寄存器共有(D)个。 AX,BX,CX,DX,DS,CS,SS,ES,FS,GS,DI,SI,BP,SP 选项A)10 选项B)12 选项C)13 选项D)14 10. 知识点:0204(存储器) 8086/8088 CPU执行算术运算时PSW共有(C)个标志位会受影响。SF,ZF,PF,CF,OF,AF 选项A)4 选项B)5 选项C)6

11. 知识点:0204(存储器) 在程序执行过程中,IP寄存器始终保存的是(C)。选项A)上一条指令的首地址 选项B)本条指令的首地址 选项C)下一条指令的首地址 选项D)需计算有效地址后才能确定地址 12. 知识点:0204(存储器) IBM PC机的存储器可分(D)个段。 选项A)4 选项B)256 选项C)512 选项D)65536 13知识点:0204(存储器) 当使用BP作编程地址时,此时使用的是(D)段。选项A)CS 选项B)DS 选项C)ES 选项D)SS(堆栈段) 17知识点:0204(存储器) 存储器的一个字节表示( A)位。 选项A)8

汇编语言实验

实验四屏幕字符显示程序 实验目的: 通过实验掌握下列知识: 1、8088指令: JMP,ROR,XOR,HLT。 2、利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法。 3、直接向视频RAM(VRAM)送ASCII码进行屏幕显示的方法。 4、IBM-PC机的ASCII码表及控制字符。 5、命令(。COM)文件及使用方法。 6、利用^Break退出程序的方法及局限性。 实验内容及步骤: 一、利用INT 21 0AH号功能调用显示字符串。 1、用A命令在100H处键入下列程序: MOV AH, 9 MOV DX,110 INT 21 INT 20 2、用A命令在110H处键入下列字符串的ASCII码: DB 'This is a sample!$' 3、用N命令和W命令将此程序(包括数据区)存入文件名为AA。COM的磁盘文件中。(存入前BX:CX必须置为文件长度值)。 4、用Q命令退出DEBUG。 5、在DOS命令下打AA,运行此程序,即在屏幕上显示'This is a sample!'字符串,若不出现,用DEBUG检查程序有无错误。

二、利用INT 21H 2号功能显示字符: 1、用A命令在100H处键入下列程序: XOR DL,DL MOVCX,100 LOP:MOV AH,2 INT 21 INC DL PUSH CX MOV CX,8 DELY: PUSH CX MOV CX,0 J: LOOP J POP CX LOOP DELY POP CX LOOP LOP INT 20 2、用G命令运行程序,即在屏幕上依次缓慢的显示256个ASCII字符。仔细观察每个字符,和IBM-PC ASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同? 3、按CTRL+BREAK退出此程序,若一次不行可多做几次。

汇编程序调试实验报告

微机原理与接口技术 作 业 班级: 目录 一、........................................................... 实验目的:2 二、............................................................. 实验环境2 三、............................................................. 实验过程3 (一)................................................. 基础知识储备3

(二)............................................. 汇编语言程序设计3

(三)汇编程序调试 (3) 四、............................................................. 调试实例4 (一)....................................................... 实例一4 (二)....................................................... 实例二6 (三)....................................................... 实例三9 (四)....................................................... 实例四12五、............................................................. 实验总结15 (一)..................................................... 实验收获15 (二)..................................................... 实验感悟16 一、实验目的: 汇编语言是一种用助记符表示的程序设计语言。用汇编语言编写的源程序生成的目标 代码短,占内存少,执行速度快,适合于系统软件、实时控制软件、I/O接口驱动等程序设计。通过本次实验,熟练掌握汇编程序的调试,深入了解MAS汇编语言及其程序设计方法。 、实验环境 EDIT编辑器、MASME编程序、LINK连接程序、TD调试程序

汇编语言-课程设计1

) 汇编语言课程实验报告 实验名称 课程设计1 实验环境 硬件平台:Intel Core i5-3210M 操作系统:DOSBox in Windows 软件工具:Turbo C , Debug, MASM 实验内容 《 将实验7中的Power idea公司的数据按照下图所示的格式在屏幕上显示出来。 实验步骤 1.要完成这个实验,首先我们需要编写三个子程序。第一个子程序是可以显示字符串到屏 幕的程序,其汇编代码如下: ;名称:show_str

;功能:在屏幕的指定位置,用指定颜色,显示一个用0结尾的字符串 ;参数:(dh)=行号,(dl)=列号(取值范围0~80),(cl)=颜色,ds:si:该字符串的首地址 ;返回:显示在屏幕上 ¥ show_str: push ax push cx push dx push es push si push di mov ax,0b800h - mov es,ax mov al,160 mul dh add dl,dl mov dh,0 add ax,dx mov di,ax mov ah,cl . show_str_x: mov cl,ds:[si] mov ch,0 jcxz show_str_f mov al,cl mov es:[di],ax inc si inc di 【 inc di jmp show_str_x show_str_f: pop di pop si pop es pop dx pop cx } pop ax ret 2.第二个程序是将word型数据转换为字符串,这样我们才能调用第一个程序将其打印出

实验一基础汇编语言程序设计

实验一基础汇编语言程序设计 实验目的 1.学习和了解TEC-XP十六位机监控命令的用法; 2.学习和了解TEC-XP十六位机的指令系统; 3.学习简单的TEC-XP十六位机汇编程序设计。 实验内容 1.使用监控程序的R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容; 2.使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行该程序,用T、P命令单步运行并观察程序单步执行情况。 3.学习联机使用TEC-XP教学试验系统和仿真终端软件。 实验要求 在使用该教学机之前,应先熟悉教学机的各个组成部分及其使用方法。 实验步骤 1.关闭电源,将大板上的COMl口与PC机的串口相连; 2.接通电源,在PC机上运行PCEC.EXE文件,设置所用PC机的串口为“l”或“2”,其它的设置一般不用改动,直接回车即可; 3.置控制开关为001110(连续、内存读指令、组合逻辑、16位、联机),开关拨向上方表示“1”,拨向下方表示“0”,“X”表示任意。其它实验相同; 4.按一下“RESET”按键,再按一下“START”’按键,主机上显示: 5.用R命令查看寄存器内容或修改寄存器的内容 1.用R命令查看寄存器或修改寄存器内容 1)在命令行提示符状态下输入: R↙;显示寄存器的内容 注:寄存器的内容在运行程序或执行命令后会发生变化。

2)在命令行提示符状态下输入: R R0↙;修改寄存器R0的内容,被修改的寄存器与所赋值之间可以无空格, 也可有—个或数个空格 主机显示: 寄存器原值:xxxx 在后面输入新的值0036 再用R命令显示寄存器内容,则R0的内容变为0036。 2.用D命令显示存储器内容 在命令行提示符状态下输入: D 2000↙ 会显示从2000H地址开始的连续128个字的内容; 连续使用不带参数的D命令,起始地址会自动加128(即80H)。

汇编语言程序设计实验报告三(子程序设计实验)

汇编语言程序设计实验报告三(子程序设计实验) 一、实验目的 1、掌握主程序与子程序之间的调用关系及其调用方法。 2、掌握子程序调用过程中近程调用与远程调用的区别。 3、熟练掌握码型变换的程序。 二、实验内容 1、从键盘输入二位非压缩BCD数,存入AX寄存器中,编程实现将其转换为二进制 数,并在屏幕上显示。要求码型转换程序用远程子程序编写,字符显示用近程子程序编写。数据可循环输入,遇‘00’结束。 三、实验准备 1、预习子程序设计的基本方法,根据实验内容要求编写出实验用程序。 2、熟悉键盘输入和字符显示的程序段的编制。 四、实验步骤 1、编辑、汇编源程序,生成可执行文件。 2、执行程序,检查输入、输出结果,看是否正确。如不正确,用DEBUG检查,修改 源程序,再汇编、运行,直到程序正确为止。 3、用DEBUG的T命令或P命令跟踪程序的执行,观察在远程和近程调用过程中,堆 栈的变化情况。 五、实验报告要求 1、分析近程调用和远程调用的主要区别。用DEBUG命令观察执行过程有何不同。 2、分析实验结果及所遇到的问题的解决方法。 主程序流程图 转换子程序TRAN流程图

七、程序清单 STA SEGMENT STACK ’STACK’ DB 100 DUP(0) STA ENDS GSAG SEGMENT PARA ‘CODE’ ASSUME CS:CSAG MAIN PROC FAR STRA T: PUSH DS SUB AX,AX PUSH AX REV: MOV AH,1 INT 21H MOV BL,AL INT 21H MOV AH,AL MOV AL,BL CMP AX,3030H JE ENDTRAN CALL NEAR PTR TRAN CALL FAR PTR CON MOV AL,0DH CALL FAR PTR DISP MOV AL,0AH CALL FAR PTR DISP MOV AL,0AH CALL FAR PTR DISP JMP REV ENDTRAN: RET MAIN ENDP TRAN PROC NEAR AND AX,0F0FH MOV BL,AL MOV BL,AL MOV CL,3 SHL AL,CL MOV CL,1 SHL BL,CL ADD AL,BL ADD AL,AH RET TRAN ENDP CSAG ENDS CSBG SEGMENT PARA’CODE’ ASSUME CS:CSBG

汇编语言实验(1)

课程名称汇编语言与微机原理实验名称字符串显示实验 实验目的、要求 1.掌握汇编语言程序设计的编写链接调试运行的完整过程 2.掌握利用masm.exe、link.exe等进行汇编、连接的方法及执行目的程序的方法。 3.初步认识ASCII码 4.初步认识利用DOS系统功能调用显示字符与字符串的方法 5.认识汇编源程序结构(框架)。 实验原理 利用DOS的中断调用在屏幕上显示字符串”Hello World”。 主要设备 计算机一台汇编语言软件 实验步骤及原始数据记录 程序源代码 1.显示数据区中的字符串"Hello World" assume cs:code,ds:data,ss:stack stack segment stack dw 256 dup (0) stack ends data segment msg db 'Hello World!',0dh,0ah,$ data ends code segment start: mov ax,data mov ds,ax mov ah,09h mov dx,offset msg int 21h exit: mov ah,4ch int 21h code ends end start

四、操作步骤: 1.在C盘生成一个新文件夹,例如P1,在该文件夹中拷入masm.exe、link.exe、debug.exe等工具程序 2.打开记事本,将上面第1个程序复制生成纯文本文件,文件名以.asm为扩展名。例如:A1.ASM。(注意保存时要选择保存类型为“所有文件”)。 3.从“开始”→程序→附件→命令提示符,进入DOS命令界面。 4. 使用CD命令,进入新文件夹,例如:P1,命令为:CD C:\P1 5. 执行MASM <文件名>,对源程序进行编译。 6. 执行LINK.EXE <文件名>,连接生成执行程序。例如:LINK A1 7. 执行生成的程序,记录屏幕响应的情况。例如:A1 可以不带扩展名EXE。程序运行正常的话,应该要显示字符串"Hello World!"。 实验结果 程序运行之后,屏幕上显示字符串“Hello World”。 闲来无聊,想重新学习一下汇编,第一个helloworld,想起绝影的一句话"你们学高级语言,但是高级语言会变,我学低级语言,学了永远也不会变!" - -b stack segment stack ; 定义堆栈段 db 100 dup(?) ;堆栈段长100字节, 这里db就是字节的意思,如果是用dw就是字,100 dup(?) 中的dup是重复的意思,这句话是重复100遍,一遍定义一个字节,每个字节里全填0 stack ends ; 堆栈段结束 data segment ;数据段 szHello db 'hello,world',0dh,0ah,'$' ;定义szHello , 0dh,0ah分别是回车键,换行键的ASCII码, '$'是DOS功能调用INT 21H中9号功能要求的要显示字符串的结束标志,写成szHello db

单片机汇编语言实验教程(1).

本文由zaoangy贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 实验一熟悉MCS-51寻址方式及传送类指令 一.实验目的: 1.熟悉uVision2集成调试环境 2.熟悉 MCS-51寻址方式及传送类指令二.uVision2集成调试环境的使用uVision2是德国Keil Software公司用于多种嵌入式微处理器的一个理想、快速、 可靠的程序调试器。此调试器包含一个高速模拟器,能够让你模拟整个8051 系统,包括片上外围.....器件和外部硬件。 1.创建项目uVision2是以项目来管理你的任务,它可以使你的8051应用系统设计变得简单。要创建一个应用,你需要按下列步骤进行操作:①第一次使用,首先为我们编写的实验程序在D盘上新建一个文件夹D:\单片机实验;②启动uVision2,新建一个项目文件并从器件库中选择一个器件,操作步骤如下:直接在桌面上点击uVision2程序图标就可以启动它。要新建一个项目文件,从uVision 2的Project菜单中选择New Project,这将打开一个标准的Windows对话框,此对话框要求你输入项目文件名,例如为实验一新建项目:D:\单片机实验\ex1.vu2。紧接着,Select Device for Target,即为你的项目选择一个CPU。我们选择Gene ric下的8032。 2.新建一个源文件你可以用菜单选项File-New来新建一个源文件。这将打开一个空的编辑窗口让你输入你的源代码。编辑后,我们把我们的实验程序保存为D:\单片机实验\dpj1.asm。 3.将你的源文件加入到你的项目中在你的P roject Workspace窗口双击Target1及Suorce Group1,将你的目标系统一直展开到看到源文件组,如图1(a所示。右击Suorce Group1,出现Add files选项, 选择它可打开一个标准的文件对话框,从对话框中选择你刚刚生成的文件dpj1.asm 。 (a (b

汇编语言实验报告

汇编语言程序设计实验报告 学院:计算机科学与技术 专业:计算机科学与技术 指导教师: ** 班级: ** 学号: ** 姓名:**

实验一集成环境及调试工具 一、实验题目 认识Tddebug集成操作软件 二、分析设计思想,绘制实验原理图、流程图 (一)、汇编语言程序的开发过程如图1.1所示,这个过程主要有编辑、编译、链接几个步骤构成。 图1.1 汇编语言程序开发过程 1、源程序的编辑 E: > EDIT TEST.ASM 编辑过程就是将源程序输入内存,生成一个扩展名为ASM的文本文件并存入硬盘。2、源程序的编译 E:>TASM TEST.ASM 编译也称为汇编,就是利用汇编器(如TASM或MASM)对源程序进行编译,生成扩展名为OBJ的目标文件。在编译过程中,检查语法错误,若有错,则不生成目标代码文件,并给出错误信息。根据错误信息应返回到编辑状态,修改源程序。 3、目标程序的链接 E:> TLINK TEST.OBJ 链接过程是利用链接程序(如TLINK或LINK)将用户目标程序和库文件链接、定位,生成扩展名为EXE的可执行文件。链接时,如果链接文件找不到所需要的链接信息,则发出错误信息,不生成可执行文件。 4、调试可执行程序 E:>TD TEST.EXE 如果生成的EXE文件运行后,并没有按照设计意图运行,就需要对程序进行调试,找出错误。再对源程序进行修改,即重复进行编辑、编译、链接、调试,直到生成完全正确的可执行文件为止。 (二)、Tddebug集成操作软件使用说明 1.该软件是集编辑(Edit.exe)、编译(Tasm.exe)、连接(Link.exe)和调试(TD.exe)

汇编语言实验

循环与分支程序设计 实验目的 ⒈进一步熟悉掌握上机操作。 ⒉练习循环分支程序的编写方法。 3.掌握利用DEBUG修改参数、检查结果的方法。 实验内容: 1.设有10个学生的成绩分别为56、69、84、82、73、88、99、63、100和80分。试编制程序分别统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的人数存放到s5、s6、s7、s8、s9及s10单元中。datarea segment grade dw 56,69,84,82,73,88,99,63,100,80 s5 dw 0 s6 dw 0 s7 dw 0 s8 dw 0 s9 dw 0 10 dw 0 datarea ends main proc far assume cs:prognam, ds:datarea start: push ds sub ax,ax push ax mov ax,datarea mov ds,ax mov s5, 0 mov s6, 0 mov s7, 0 mov s8, 0 mov s9, 0 mov s10, 0 mov cx, 10 mov bx, offset grade compare: mov ax, [bx] cmp ax, 60 cmp ax, 70 cmp ax, 80 cmp ax, 90 cmp ax, 100 jmp short change-addr nine: inc s9 jmp short change-addr

eight: inc s8 jmp short change-addr seven: inc s7 jmp short change-addr six: inc s6 jmp short change-addr five: inc s5 change-addr: add bx, 2 loop compare ret main endp end start

汇编实验一实验报告

汇编语言程序设计实验报告 课程名称汇编语言程序设计 班级 姓名 学号 指导教师

汇编语言程序设计 实验一DEBUG 程序使用技巧 1.寄存器和内存 开始Debug 程序。输入“Q ” 退出程序。再次启动Debug。 输入“r ”来显示CPU的当前状态和寄存器中的当前内容。 输入“r AX ”和“1234”,AX 寄存器中的内容变为1234。 输入“r DS ”和“2000”,DS 寄存器中的内容变为2000。 输入“d DS:1000 ”来显示数据段中80H 字节数据,把数据抄在这里: 输入“f DS:1000 1100 77 ”再显示一次这80H 字节。判断这条指令的作用是什么? 答:从DS:1000地址七,将1100H字节的内容赋值为77H 再输入“d 2000:1000 ”来显示数据段中80H 字节数据。观察与前面的数据有无不同。 输入“d 1900:0100 ”和“d 1ff0:0100 ”来显示两个存储段中的内容。比较其中2000:0000 段中的数据。相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。 答:相同段落中的数据相同, 程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。

2.输入机器码,使用单步和断点 退出Debug,再重新启动Debug。 输入“r ”观察CPU 的状态,下一条指令是什么? 答:下一条指令是ADD [BX+SI],AL 使用两种方式输入一段程序,第一种方式:直接输入机器码。 输入“u ”来显示程序段中的指令序列。然后输入“d CS:100 ” 来显示代码段中的数据。观察显示内容。 “u CS:100 106 ”做反汇编,就是显示出汇编语句。将这几句汇编语句记录下来: 使用输入“r ”观察CPU 的状态,使用“t ”来跟踪程序,直至最后一条指令执行完毕。注意,跟踪程序前,要让IP 寄存器中的值是100H。一直监视AX 和IP 寄存器的内容变化,尤其是标志位的变化。 第二种方式,是输入汇编语句。重启Debug 程序。 先输入“a CS:100 ”,然后输入: MOV AX, FF00 ADD AX,01F0 MOV BX,AX NEG BX ADD AX,BX

相关文档
最新文档