资源描述:
《计算机硬件技术基础实验指导书v13》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、计算机硬件技术基础实验指导书东北大学计算中心二零一零年四月目录第1章汇编语言程序设计基础11.1汇编语言程序的语句11.1.1语句格式11.1.2数据定义11.2汇编语言程序的结构21.3汇编语言常用伪指令3第2章汇编语言程序调试过程62.1汇编语言程序的命令行开发调试过程62.1.1编緝源程序62.1.2汇编程序82.1.3连接程序102.1.4调试程序112.2汇编语言编程集成开发坏境PWB182.2.1编辑源文件192.2.2运行程序20第3章汇编语言程序设计实验313.1顺序程序设计313.2分支程
2、序设计333.3循环程序设计363.4综合程序设计38第4章实验报告撰写规范52附录55IASCII码表55II指令速查表56III伪指令表60IVDOS功能调用61V常用BIOS功能调用66VI错误码表68第1章汇编语言程序设计基础1.1汇编语言程序的语句1.1.1语句格式汇编与言语句一•般是由分隔符分成的四个部分组成,格式如下:[名字]助记符[操作数][;注释]其中带方括号的项可以省略。名字项是合法的标识符,包括标号、变量名、过程名、段名或符号名等。其中,标号后要跟冒号(:),用于指令Z前,表示指令的起
3、始地址。标识符由字母、数字以及_、$、?和@组成,并满足如下要求:(1)不能以数字开头;(2)不能单独使用或,它们有专门用途;(3)不能是系统的保留字,如指令名、寄存器名和伪指令名等。(4)一•个名字的最大有效长度为31,超过31的部分计算机不再识别。为了便于记忆,名字的定义最好能够见名知义,如用BUFFER表示缓冲区,SUB表示累加和等。助记符项可以是指令或伪指令。操作数项包含0个、一个或多个操作数,依赖于具体的指令或伪指令。多个操作数之间以逗号(,)分隔。注释项以分号(;)开始。汇编语言源程序中的每条语
4、句一般占一行,每行不超过132个字符(MASM6.0开始可以是512个字符),汇编语言对大小写是不敏感的。为了使程序具有较好的可读性,应该使各个项对齐。通常将名字项放在第一列,后而的儿项依次以一个或多个TAB分隔。1.1.2数据定义通过数据定义语旬可为数据项分配存储单元,并根据需要设置其初值。还可用符号代表数据项,此时符号就与分配的存储单元相联系。代表数据项的符号本身称为变量名,与之相对应的存储单元用于存放变量,所以常常就把这样的存储单元称为变量。[例1.1]定义字节数据COUNTDB100BUFFDB3+
5、4,5*6[例1.2]定义字数据FLAG1DW65530FLAG2DW0F020H;定义一・个字节的存储空间,存放100:定义一个字存储空间,;定义一个字存储空间,存放65530存放0F020H[例1.3]BUF1[例1.4]MESS1定义没有初值的数据项DW?,?定义字符串DB;定义两个字存储空间,没侑定义初值“HELLO!";定义一个字符串,内容是HELLO!;定义两个字节的存储空间,存放7,30MESS2DBHTETLTLTOTL;定义一个字符串,内容是HELLO![例1.5]重复操作符DUPBUF2
6、DB5DUP(O)淀义5个字节的存储空间,初值均为0[例1・6]使用EQU定义等值表达式COUNTEQU234;[例1.7]使用等号定义COUNT=234;[例1.8]使用$定义$是一个特殊的地址表达式,表示当前地址。XDW0,1,2,4,8,4,2,1,0;LENDB$-X;变量LEN的值等于181.2汇编语言程序的结构汇编语言源程序建立在段结构的基础上,一个段就是一些指令和数据的集合。所以一个汇编语言源程序,根据程序用途被划分成儿段,如数据段、堆栈段、附加段和程序段(代码段),用CS、DS、SS、ES段
7、寄存器存放段值。这样就构造了源程序的基本格式:DATASEGMENTIIDATAENDSEXTRASEGMENTIIIEXTRAENDSSTACK1SEGMENTI:ISTACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATAASSUMESS:STACK1,ES:EXTRASTART:MOVAX,DATAMOVDS,AXIIICODEENDSENDSTART结合上面的源程序结构格式,需要说明如F:(1)互和配对的SEGMENT和ENDS前的标号必须一样;(2)ASSUME语言使汇编
8、程序得知哪一段是数据段(DS),哪一段是堆栈段(SS),哪一段是附加段(ES),哪一段是代码段(CS)0除CS段以外,各个段寄存器的实际值还要用MOV指令來赋予;(3)ENDSTART表示源程序结束。下面,我们通过一个简单的汇编语言程序来说明汇编语言的结构DSEGSEGMENT;数据段开始DATA1DB13H,26HDATA2DW0DSEGENDS;数据段结束SSEGSEGMENTSTACK;堆栈段开始SKTOP