汇编语言程序设计是计算机软件设计技术的基础,也是计算机各专业人员的一门必修课程.
它对于深入了解计算机的工作原理,掌握程序设计技术,从事计算机高层次应用和软,硬件开发以及计算机接口技术具有重要的作用.
汇编语言是介于计算机能直接理解的机器语言与使用者容易理解的高级语言之间的一种语言.它除有与代码指令一一对应的符号(助记符)指令外,还增加了专用于定义变量,常量,符号,过程,分配存储空间,定位程序起始地址等一系列称之为伪指令的符号指令.它面向机器,能全面反映计算机硬件的功能和特点,但是比机器语言易于阅读,编写,和修改程序.因此,使用汇编语言可编写出运行速度快,占存储空间少,充分利用硬件资源,进行适时控制的程序.尽管目前存在着独立于计算机的上千种高级语言,汇编语言仍作为一种强有力的软件工具显示出它的重要性.汇编语言是面向机器的语言,它因计算机的类型不同而异.本语言是属IBM PC及其兼容机系列(80X86/8088),但是用汇编语言进行程序设计的基本概念,基本技巧和方法是普遍使用的,掌握一种系列的汇编语言程序设计,其它便可触类旁通.
用汇编语言进行程序设计比用高级语言复杂和困难的多.因此,学习汇编语言需要更多的上机实践;这对于加深理解课程的基本概念和掌握语言编程技术至关重要.根据<<计算机应用>>专业对<<汇编语言程序设计>>教学大纲的要求并结合多年的教学实践和参考其他院校的资料编写了这本实验指导书,其中包括一周的课程设计指导.
本书共分两大部分.第一部分共包括十四个实验共三十多道题,内容覆盖了本科教学大纲要求的范围.实验一,二主要目的是熟悉汇编语言程序设计中常用的工具软件以及对汇编语言有一个初步了解.实验三到十三的内容是汇编语言程序设计中的基本组成.其余是有关接口的实验.在二十个机时的实验中,要求学生至少完成其中十道关于各章节的基本题,其余的题供有余力的同学选做或在课余时间完成(专科学生按教学大纲要求相应减少).第二部分是课程设计指导,包括八道综合性程序设计题;它要求学生在一周近二十个机时内至少完成其中的一道大题.书中对于每道题都有提示,有些给了流程图.但是,这些都只供参考;它们不一定是最佳方案,更不是唯一的.在有限的语句和语法范围内,为同一目的的编程可以是多种多样,风格迥异;这就象写同一题目的作文一样,可以千差万别.为了提高上机实践的效率,希望同学们提前做好预习,最好能提出一个或多个设计方案.
本实验指导书是在原试用稿的基础上全面扩充完成,希望使用者继续发现不足之处,提供意见和建议,以便今后的进一步完善.
前言
实验一
[实验目的]
学习汇编语言程序设计的基本步骤,即编辑(EDIT)程序、汇编(MASM)、连接(LINK)和和运行。其中包括源程序的书写格式,一种全屏幕编辑软件、宏汇编软件MASM、连接软件LINK的使用。通过实验对汇编语言程序设计有一个初步的认识。 [实验内容]
1、 学习使用全屏幕文本编辑软件EDIT。用EDIT输入一段给定的源程序(例1、例2)。 2、 用MASM对已存盘的源程序进行汇编,形成目标文件(.OBJ);如有错误,再返回到EDIT
进行修改。
3、 用LINK对上述形成的目标文件进行连接,形成可执行文件(.EXE) 4、 在DOS提示符下运行该可执行文件。 [有关EDIT的使用方法]
编写源程序可用多种文本编辑软件,如行编辑EDLIN、WORDSTAR(WS)某些高级语言集成开发环境的编辑器等等;这里简要介绍EDIT的使用方法。EDIT是DOS5.0以上版本提供的一种简洁方便易学且流行风格的全屏幕编辑软件,一般微机都有。
1. 进入EDIT;在DOS提示符下键入EDIT回车,即可进入EDIT环境。可以看到它的主菜
单包括:File(文件)、Edit(编辑)、Search(查找)、Option( 选择)、Help(帮助)。
2. 可用键盘或鼠标操作选择菜单。这里只介绍键盘操作方法。按Alt键激活主菜单。用← →
键移动光标选择主菜单,或按下菜单名中高亮字符键进行选择。也可一开始就按Alt+主菜单中第一字符键选择主菜单。
3. 每个主菜单被选择后,会出现一对应的下拉菜单。用↑↓键移动光标选择某项功能,或直 接按某项高亮字符,即可。
4.主菜单FILE的使用。在FILE中有NEW,OPEN,SAVE,SAVE AS,PRINT,EXIT等项,分述如 下:
(1)NEW建立一个新文件;其实在一进入EDIT后就是该功能项。此时,文件的标题是 UNTILED(无名);可进行文件输入。
(2)OPEN…打开一个已存在的磁盘文件;此时会出现一个大窗口,你可用TAB键(或 SHIFE+TAB)进入各小窗口选择响应的磁盘符,目录及文件名。你也可以在要进入EDIT时,在DOS提示符下键入EDIT后再键入(盘符,路径)文件名,回车即可。
(3)SAVE把编写或修改过的文件存盘;若是一个无名新文件,则有一窗口提示你输入一文件名;有名文件直接存盘。此项操作后不退出EDIT。
(4)SAVE AS…把在编辑文件改用另一名称存盘;不退出EDIT。 (5)PRINT…打印(此项省略)。
(6)EXIT退出EDIT。若是一新文件或修改过的文件,则有一窗口提示,问你当前文件是否要存盘,当前选项YES是存盘,直接按回车;若不想存盘,按键‘N’,或用TABLE键选NO,按回车。次项操作有退出EDIT。
5,主菜单EDIT的使用。在EDIT中有CUT,COPY,PASTE,CLEAR等项。EDIT提供的“块操作”功能给文本编辑带来很大方便。步骤如下:
(1)要用块操作功能,首先要在编辑的文本的屏幕上定义一个“块”;否则,该菜单各 项不被激活而呈灰色。定义“块”的法官年法是:把光标移动到要定义的块首,然后按下 SHIFT键,再按下SHIFT,再按下→或←键(块向行方向扩展),再按下↑或↓键(块向列方向扩展)。被定义的块以反显颜色呈现。
(2)选择菜单EDIT,其中CUT,COPY,CLEAR等项激活;选CUT,就是把定义块“剪下”放在一个所谓的剪贴板上(此处看不见);选COPY,就是把定义块复制到剪贴板上;选CLEAR,就是把定义块清除掉。
(3)定义块被CUT或COPY后,菜单PASTE(粘贴)被激活后,说明剪贴板上有内容。此时,把光标移动到你要插入“块”的位置,然后选PASTE,剪贴板上的内容就复制到光标所在处。 注:“剪贴板”只能存放一个“块”的内容;“剪贴板”上的内容可多次“粘贴”。 6。主菜单SEARCH的使用。此菜单包括FIND。。。REPEAT LAST FIND,CHANGE等项。它们提供在被编辑的文本中查找或替换某一指定的字符串的功能。
(1)FIND……:此选项,出现一对话框,首先输入查找的字符(串),然后有两项选 择:[--]Math Upper/Lomercase是否区分字符的大小写?用空格键选择,[]中出现×表示 要。[--]Whole word所选字符(串)在文件中是否为一完整单词?选择方式同上。例如:在 文中有FOR,INFORMATION,FORMAT等字符串,现在要查找‘FOR’,若作为一完整单词,就只能找到FOR,否则其他包含‘FOR’的字符串也可查找到。 (2)REPEAT LAST FIND:上述FIND只能找到第一个目标(从光标位置开始);而REPEAT 项可继续向后重复上一次的查找。此项可按F3键执行。
(3)CHANGE:替换字符串。选此项,出现一对话框;首先在‘Find What’窗口输入查找内容,然后按TAB键进入下一窗口‘Change To’输入替换内容;接下来的两项选择同FIND项。最后的选择是〈Find and Verify〉,〈Change All〉,〈Cancel〉等;用TABLE键选
择。它们分别是:找到一个目标后再选择是否替换,把所有查找到的目标一次性替换,取 消。
7,主菜单OPTION:其主要功能是改变屏幕前景和背景颜色。〈省略〉
8,主菜单HELP:提供帮助。除此之外,在文本编辑的过程中,你可随时按F1键求得及时帮助。
[汇编语言程序的编写格式]
汇编语言程序一般由几个段组成,它们分别是堆栈段,数据段,代码段。任何一个源程序 至少必须有一个代码段和一条作为源程序结束的伪指令END。段的定义有两种格式,分述如 下:
1,完整的段定义格式(教科书中常用的): 一个段由段头,段体,段尾组成,形式如下:
段名 SEGMENT[定位类型][组合类型][‘类别’] … …
段名 ENDS
其中SEGMENT后的参数一般可省略,详细说明参阅后面的有关章节。
2,简化的段定义格式(MASM5.0版本提供)每段以 开始后跟固定的段名,一般形式如下:
DOSSEG
.MODEL 存储类型 ;“存储类型”可选择为SMALL。 .STACK[大小];堆栈段,“大小”指定堆栈的字节数。 .DATA;数据段。
.CODE[名字];代码段;一般只有一个代码段,名字可缺少 …
.
…
例1:用完整的段定义编写一源程序。 NAME EXAM1;可以省略
DATA SEGMENT;定义数据段,以下是数据段的内容 STR1 DB “ HELLO,WELCOME!”,13,10,‘$’ STR2 DB “DO YOU LIKE COMPUTER?(Y/N)”,13 10,‘$’ STR3 DB “NICE!”,13,10,‘$’ STR4 DB “SORRY!”,13,10,‘$’
STR5 DB “UNKNOW,ANSWER AGAIN!(Y/N)”, DB 13,10,‘$’
STR6 DB “SEE YOU NEXT TIME!”,13,10,‘$’ DATA ENDS ;数据段结束 CODE SEGMENT ;定义代码段
ASSUME CS:CODE;DS:DATA;以下是代码段内容 START: MOV AX,DATA;给数据段寄存器赋值 MOV DS, AX
MOV AH,9;显示一字符串的功能号
MOV DX,OFFSET STR1;显示字符串STR1的偏址 INT 21H; DOS功能调用
ASK : MOV DX,OFFFSET STR2;显示字符串STR2 INT 21H
MOV AH,1;键盘输入一字符的功能号 INT 21H;键入的字符ASCⅡ码在AL NOT AL;求反 TEST AL,‘Y’;是否按下‘Y’或‘y’键 JE NEXT1 TEST AL,‘y’ JE NEXT1 TEST AL,‘N’;是否按下‘N’键或‘y’键
JE NEXT2 TEST AL, ‘n’
JE NEXT2
MOV DX,OFFSET STR5;不是按上述键 MOV AH,9 INT 21H
JMP ASK;再返回ASK NEXT1: MOV DX,OFFSET STR3;是按下‘Y’或‘y’键 MOV AH,9 INT 21H JMP BYE NEXT2: MOV DX,OFFSET STR4;是按下‘N’或‘n’键 MOV AH,9 INT 21H BYE: MOV DX,OFFSET STR6
INT 21H MOV DL,7;喇叭响的ASCⅡ码 MOV AH,2 INT 21H MOV AH,4CH;退回DOS INT 21H
CODE ENDS;代码段结束
END START;源程序结束
注:源程序中的每一行注释语句前一定要加分号‘;’,下同。
例2;用简化的段定义编写一源程序。 TITLE HELLO;可省略 . MODEL SMALL . STACK 100H ; 可省略 . DATA ;数据段开始
MESSAGE DB“MAKE THE WORLD FULL WITH LOVE!”,DB 13,10,‘$’ . CODE ;数据段结束,代码段开始 GO: MOV AX,@DATA MOV DS,AX;给数据段寄存器赋值 LEA DX,MESSAGE MOV AH,9 INT 21H MOV CX,10 MOV AH,2
NEXT: MOV DL,7;喇叭连续响10次并显示10个‘*’ INT 21H MOV DL,‘*’ INT 21H LOOP NEXT MOV AH,4CH INT 21H END GO
[宏汇编程序MASM的使用]
MASM是一个系统文件,它最主要的功能是把由汇编语言编写的源程序翻译成机器码,即目标代码。除此之外,它还完成对源程序进行语法格式检查,给出错误信息,分配存储区域,把各种进制的数转换成二进制,把字符转换成ASCⅡ码,并计算表达式的值(具体过程可参阅清华出版的教科书第13章第一节)。
源程序编写好并存盘后,接着的工作是用MASM对源程序进行编写,以产生相应的机器码目标程序。下面为了叙述方便,我们假设MASM和名为MY.ASM的源程序都存放在C盘。有两类运行MASM的方式,分述如下: 方式1. 使用提示的汇编 C》MASM 回车 ;启动MASM 屏幕上显示有关MASM版本的说明《略》;以下按屏幕提示输入: Source filename[.ASM]:MY回车;输入源程序文件名
汇编语言实验讲义
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)