文档详情

汇编语言–程序格式.ppt

发布:2017-05-04约7.39千字共33页下载文档
文本预览下载声明
示例2:查表 要求:内存单元TAB首地址开始存放了0~9的平方数。直接利用查表方式完成将由A单元给定数(小于等于9)的平方值送B单元保存并打印出来。 其中,红色方框内的内容可替换为: XLAT(translate)为换码指令 格式:XLAT (通常无需指定操作数,其操 作数有默认的寄存器进行设定) 功能: (AL)? ((BX)+ (AL)) 这也充分说明了学好汇编语言的重要前提是学习好指令系统。 本章学习要点: (1)常见的伪指令及它们的用法 (2)汇编语言的结构 一、汇编语句的种类和格式 1. 语句的种类 汇编语言有多种类型的语句,指令语句、伪指令语句、宏指令语句。 汇编语言在对源程序进行汇编时,把指令语句翻译成机器指令,也就是说指令语句有着与之对应的机器指令。 伪指令语句没有与其对应的机器指令,只是指示汇编程序如何对源程序进行汇编,包括符号的定义、变量的定义、段的定义等。通俗点讲,它实际上是属于一种说明语句。 2.语句的格式 指令语句格式: (标号)指令助记符(操作数(,操作数))(;注释) 伪指令语句的格式如下: (名字)伪指令定义符(参数,…,参数)(;注释) 伪指令定义符:规定了伪指令的功能 参数:说明伪指令操作的对象,如常数(数值表达式)等 名称:给所定义的内容起的名称。 在汇编语言中,名字和标号很容易区分,名字后面没有冒号,而标号后一定用冒号。 标号和名字最多由31个字母、数字及规定的特殊字符组成,并且不能以数字来开头。 标号和名字不能是汇编语言的保留字,如不能是“MOV”。 汇编语言不区分保留字中字母的大小写。如“MOV AX ,03H”等同于“mov ax , 03h” 伪指令有多种,常见的如: (1)段定义伪操作 (2)数值数据定义及存储器分配 (3)符号数据定义 (4)程序开始和结束伪操作 (5)表达式赋值伪操作 此外还有基数控制伪操作、对准伪操作等。 看看下列代码有哪些伪指令: 二、常见的伪指令/伪操作 (1)段定义语句 为了与存储器的分段结构相对应,汇编语言的源程序也是由若干个段组成。 1. 段开始和段结束语句 段定义的一般格式如下: 段名 SEGMENT [定位类型] [组合类型] [‘类型’] …… 段名 ENDS 例:一个简单的段如下所示: DSEG SEGMENT MESS DB ‘HELLO’ , 0DH , 0AH , ‘$’ DSEG ENDS 2. 段使用设定语句 汇编程序根据段开始语句和段结束语句判断出源程序的段划分,为了有效地产生目标代码,汇编程序还要了解各程序段与段寄存器间的对应关系。这种对应关系由段使用设定语句说明。 ASSUME 段寄存器名:段名[,段寄存器名:段名……] 段寄存器名可以是CS,DS,SS和ES。 段名就是段开始和段结束语句中规定的段名。 例如:CS寄存器对应CSEG段,DS寄存器对应DSEG段。 ASSUME CS : CSEG , DS : DSEG ASSUME伪指令中段名也可以是一个特别的关键字NOTHING,它表示某个段寄存器不与任何段有对应关系。 DSEG1 SEGMENT VARW DW 12 DSEG1 ENDS DSEG2 SEGMENT XXX DW 0 DSEG2 ENDS CSEG SEGMENT ASSUME CS:CSEG , DS: DSG1 , ES : DSG2 MOV AX , DSEG1 MOV DS , AX MOV AX , DSEG2 MOV ES , AX …… ASSUME DS: DSG2 , ES :NOTHING MOV AX , DSEG2 MOV DS , AX …… DSEG ENDS (2)关于数值数据定义语句及存储器分配 通过数值数据定义语句可以为数据项分配存储单元,并根据需要设置其初值。 还可以用符号代表数据项,此时符号就与分配的存储单元相联系。代表数据项的符号本省称为变量名,与之相对应的存储单元用于存放变量。 1. 数据定义的格式 数据定义语句是最常用的伪指令语句。一般格式如下: [变量名] 数据定义符 表达式[,表达式,……,表达式][;注释] 例如:VARB DB3 WARW DW -1234 BUFF DB 100 , 3+4 , 5*6 1)定义字节数据项(DB) 每一个字节数据项只占用一个字节存储单元 例:COUNT DB 100 DB 0DH ,0AH , ‘$’ TABL
显示全部
相似文档