




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.1 4.1 汇编语言的格式汇编语言的格式 4.2 4.2 语句行的构成语句行的构成 4.3 4.3 指示性语句(指示性语句(Directive statementsDirective statements) 4.4 4.4 指令语句指令语句 4.5 4.5 汇编语言程序设计及举例汇编语言程序设计及举例 退出退出 第第 4 4 章章 汇编语言程序设计汇编语言程序设计 4.1 4.1 汇编语言的格式汇编语言的格式 80868086的汇编语言的源程序是分段的,由若干个段的汇编语言的源程序是分段的,由若干个段 形成一个源程序。源程序的一般格式为:形成一个源程序。源程序的一般格式为: NAME1 SEGMENTNAME1 SEGMENT 语句语句 语句语句 NAME1 ENDSNAME1 ENDS NAME2 SEGMENTNAME2 SEGMENT 语句语句 语句语句 NAME2 ENDSNAME2 ENDS END END 标号标号 每一个段有一个名字,以符号每一个段有一个名字,以符号SEGMENTSEGMENT作为段作为段 的开始,以语句的开始,以语句ENDSENDS作为段的结束。这两者都必须有作为段的结束。这两者都必须有 名字,而且名字必须相同。名字,而且名字必须相同。 由若干个段组成一个源程序,整个源程序以语句由若干个段组成一个源程序,整个源程序以语句 ENDEND作为结束。作为结束。 总之,总之,80868086的源程序是由若干段组成的,而一个的源程序是由若干段组成的,而一个 段又是由若干个语句行组成的。所以,语句行是汇编段又是由若干个语句行组成的。所以,语句行是汇编 语言源程序的基础。语言源程序的基础。 4.2 4.2 语句行的构成语句行的构成 4.2.1 4.2.1 标记(标记(TokenToken) 1 1IBMIBM宏汇编的字符集宏汇编的字符集 IBMIBM宏汇编中所使用的字符集仅是宏汇编中所使用的字符集仅是ASCIIASCII和和 EBCDICEBCDIC(扩展的(扩展的BCDBCD码)字符集的一个子集。它由码)字符集的一个子集。它由 以下几部分组成:以下几部分组成: (1 1)字母)字母 (2 2)数字)数字 (3 3)特殊字符)特殊字符 2 2界符(界符(DelimitersDelimiters) 界符是一些特殊字符,利用它们可以表明某个标界符是一些特殊字符,利用它们可以表明某个标 记的结束,它们本身也有一定的意义,这一点就与分记的结束,它们本身也有一定的意义,这一点就与分 隔符(空格)不同。隔符(空格)不同。 3 3常量(常量(ConstantsConstants) 凡是出现在凡是出现在80868086源程序中的固定值(它在程序运源程序中的固定值(它在程序运 行期间不会变化),就称为常量。行期间不会变化),就称为常量。 IBMIBM宏汇编中允许的常量有数字常量和字符串常宏汇编中允许的常量有数字常量和字符串常 量两种。量两种。 (1 1)数字(整数)常量)数字(整数)常量 二进制常量二进制常量 以字母以字母B B结尾的由一串结尾的由一串“ “0”0”和和“ “1”1”组成的序列。例如组成的序列。例如 ,00101100B00101100B。 十进制常量十进制常量 由若干个由若干个0 0到到9 9的数字组成的序列,可以以字母的数字组成的序列,可以以字母D D作作 结尾,或没有任何字母作结尾。例如,结尾,或没有任何字母作结尾。例如,1234D1234D或或12341234。 八进制常量八进制常量 以字母以字母QQ结尾,由若干个结尾,由若干个0 0到到7 7的数字组成的序列。的数字组成的序列。 例如例如255Q255Q、377Q377Q等。等。 十六进制常量十六进制常量 以字母以字母HH结尾,由若干个结尾,由若干个0 09 9的数字或的数字或A AF F的字的字 母所组成的序列。母所组成的序列。 为了避免与标识符相混淆,十六进制数在语句中为了避免与标识符相混淆,十六进制数在语句中 必须以数字打头。所以,凡是以字母必须以数字打头。所以,凡是以字母A AF F开始的十六开始的十六 进制数,必须在前面加上数字进制数,必须在前面加上数字0 0。例如。例如56H56H、0BA3FH0BA3FH 等。等。 (2 2)字符串常量)字符串常量 字符串常量是由包含在单引号内的字符串常量是由包含在单引号内的1 1至至2 2个个ASCIIASCII字字 符构成的。汇编程序把它们表示成一个字节序列,一符构成的。汇编程序把它们表示成一个字节序列,一 个字节对应一个字符,把引号中的字符翻译成它的个字节对应一个字符,把引号中的字符翻译成它的 ASCIIASCII码值。例如码值。例如 AA等价于等价于 41H41H, ABAB等价于等价于4142H4142H 。 4 4标识符(标识符(IdentifiersIdentifiers) 标识符是由程序员自由建立起来的、有特定意义标识符是由程序员自由建立起来的、有特定意义 的字符序列。的字符序列。 一个标识符是由最多为一个标识符是由最多为3131个字母、数字及规定的个字母、数字及规定的 特殊字符(特殊字符(? ? _ _ $ $)等组成的,且不能用数字打头()等组成的,且不能用数字打头( 以免与十六进制数相混淆)。以免与十六进制数相混淆)。 5 5保留字(保留字(Reserved wordsReserved words) 保留字看上去像标识符,但是它们在语言中有特保留字看上去像标识符,但是它们在语言中有特 殊的意义,而且不能用它们作为标识符。实际上凡是殊的意义,而且不能用它们作为标识符。实际上凡是 80868086的指令助记符、汇编语言中的命令(伪指令)、的指令助记符、汇编语言中的命令(伪指令)、 寄存器名等都是保留字。寄存器名等都是保留字。 6 6注释(注释(CommentComment) 为了使汇编语言的源程序更便于阅读和理解,常为了使汇编语言的源程序更便于阅读和理解,常 在源程序中加上注释。注释是在分号(;)后面的任在源程序中加上注释。注释是在分号(;)后面的任 意的字符序列,直到行的结尾。在汇编时,汇编程序意的字符序列,直到行的结尾。在汇编时,汇编程序 对它们并不进行处理。在可打印的文件中,注释和源对它们并不进行处理。在可打印的文件中,注释和源 程序一起打印。程序一起打印。 4.2.2 4.2.2 符号(符号(SymbolSymbol) 在汇编语言源程序中,为了使程序更具有普遍性在汇编语言源程序中,为了使程序更具有普遍性 ,及便于程序的修改,用户常用符号(,及便于程序的修改,用户常用符号(SymbolSymbol)等代)等代 替存储单元、数据、表达式等等。替存储单元、数据、表达式等等。 在实际使用中的符号可以分成五类,即寄存器、在实际使用中的符号可以分成五类,即寄存器、 变量、标号、数、其它。变量、标号、数、其它。 每个符号都具有一定的属性,以允许汇编程序使每个符号都具有一定的属性,以允许汇编程序使 用它来代表所需的信息。用它来代表所需的信息。 4.2.3 4.2.3 表达式(表达式(ExpressionsExpressions) 表达式是由上面讨论过的标记(表达式是由上面讨论过的标记(TokenToken)、符号()、符号( SymbolSymbol)通过运算符组合起来的。)通过运算符组合起来的。 1 1操作数(操作数(OperandsOperands) 一个操作数或者是一个寄存器名,或是一个常量一个操作数或者是一个寄存器名,或是一个常量 (数字常量或字符串常量),或是一个存储器操作数(数字常量或字符串常量),或是一个存储器操作数 。 (1 1)常量操作数)常量操作数 (2 2)存储器操作数)存储器操作数 2 2运算符(运算符(OperatorsOperators) 算术运算符(算术运算符(Arithmetic OperatorsArithmetic Operators);); 逻辑运算符(逻辑运算符(Logical OperatorsLogical Operators);); 关系运算符(关系运算符(Relational OperatorsRelational Operators);); 分析运算符(分析运算符(Analytic OperatorsAnalytic Operators);); 合成运算符(合成运算符(Synthetic OperatorsSynthetic Operators);); 4.2.4 4.2.4 语句(语句(StatementsStatements) 一个汇编语言的源程序是由一条条语句组成的,一个汇编语言的源程序是由一条条语句组成的, 语句就是完成一个什么动作的说明。语句就是完成一个什么动作的说明。 4.3 4.3 指示性语句(指示性语句(Directive Directive statementsstatements) 4.3.1 4.3.1 符号定义语句符号定义语句 1 1等值语句等值语句EQUEQU 2 2等号(等号(Equal signEqual sign)= =语句语句 3 3解除语句解除语句PURGEPURGE 4.3.2 4.3.2 数据定义语句数据定义语句 数据定义语句,为一个数据项分配存储单元,用数据定义语句,为一个数据项分配存储单元,用 一个符号名与这个存储单元相联系,且为这个数据提一个符号名与这个存储单元相联系,且为这个数据提 供一个任选的初始值。供一个任选的初始值。 与数据项相联系的符号名称为变量。数据定义语与数据项相联系的符号名称为变量。数据定义语 句的例子为:句的例子为: THING THING DBDB? ? ; 定义一个字节定义一个字节 BIGGER_THINGBIGGER_THINGDWDW ? ? ; 定义一个字定义一个字 BIGGEST_THING DDBIGGEST_THING DD? ? ; 定义一个双字定义一个双字 THINGTHING是一个符号名,它与在存储器中的一个字是一个符号名,它与在存储器中的一个字 节相联系,即它是一个字节变量。节相联系,即它是一个字节变量。BIGGER_THINGBIGGER_THING 也是一个符号名,它与在存储器中的一个字相联系,也是一个符号名,它与在存储器中的一个字相联系, 即它是一个字变量。即它是一个字变量。BIGGEST_THINGBIGGEST_THING也是一个符号也是一个符号 名,它与在存储器中的一个双字相联系,即它是一个名,它与在存储器中的一个双字相联系,即它是一个 双字变量。双字变量。 可以用可以用DBDB数据定义语句在内存中定义一个字符串数据定义语句在内存中定义一个字符串 。字符串中的每一个字符用它的。字符串中的每一个字符用它的ASCIIASCII码表示为一个码表示为一个 字节,故字符串的定义必须用字节,故字符串的定义必须用DBDB命令。有两种定义字命令。有两种定义字 符串的方法:一种是字符串中的每一个字符分别定义符串的方法:一种是字符串中的每一个字符分别定义 ,每一个字符之间用逗号分隔;另一种方法是在整个,每一个字符之间用逗号分隔;另一种方法是在整个 字符串的前后都加单引号。字符串的前后都加单引号。 4.3.3 4.3.3 段定义语句段定义语句 80868086的存储器是分段的,所以的存储器是分段的,所以80868086必须按段来组必须按段来组 织程序和利用存储器。这就需要有段定义语句。段定织程序和利用存储器。这就需要有段定义语句。段定 义的主要命令有(义的主要命令有(1 1)SEGMENTSEGMENT,(,(2 2)ENDSENDS,(,(3 3 )ASSUMEASSUME,(,(4 4)ORGORG。 SEGMENTSEGMENT和和ENDSENDS语句把汇编语言源程序分成段语句把汇编语言源程序分成段 。这些段就相应于存储器段,在这些存储器段中,存。这些段就相应于存储器段,在这些存储器段中,存 放相应段的目标码。放相应段的目标码。 4.3.4 4.3.4 过程定义语句过程定义语句 过程是程序的一部分,它们可被程序调用。每次过程是程序的一部分,它们可被程序调用。每次 可调用一个过程。当过程中的指令执行完后,控制返可调用一个过程。当过程中的指令执行完后,控制返 回调用它的地方。回调用它的地方。 在在80868086中调用过程和从过程返回的指令是中调用过程和从过程返回的指令是CALLCALL和和 RETRET。这些指令可以有两种情况:段内的和段交叉的。这些指令可以有两种情况:段内的和段交叉的 。 段交叉指令把过程应该返回处的段地址和段内偏段交叉指令把过程应该返回处的段地址和段内偏 移量这两者都入栈保护(移量这两者都入栈保护(CALLCALL指令)和退栈(指令)和退栈(RETRET 指令)。指令)。 段内的调用与返回指令只入栈和退栈段内的地址段内的调用与返回指令只入栈和退栈段内的地址 偏移量。偏移量。 过程定义语句的格式为:过程定义语句的格式为: PROCEDURE_NAME PROC PROCEDURE_NAME PROC NEARNEAR 或或 PROCEDURE_NAME PROC FARPROCEDURE_NAME PROC FAR RETRET PROCEDURE NAME ENDPPROCEDURE NAME ENDP 用段内用段内CALLCALL指令调用的过程,必须用段内的指令调用的过程,必须用段内的RETRET 指令返回,这样的过程是指令返回,这样的过程是NEARNEAR过程;用段交叉过程;用段交叉CALLCALL 指令调用的过程,必须用段交叉指令调用的过程,必须用段交叉RETRET指令返回,这样指令返回,这样 的过程是的过程是FARFAR过程。过程。 4.3.5 4.3.5 结束语句结束语句 除了一个例外以外,每一个结束语句(除了一个例外以外,每一个结束语句( Termination Termination StatementsStatements)都与某个开始语句成对出现)都与某个开始语句成对出现 。 唯一的例外就是唯一的例外就是ENDEND语句,它标志着整个源程序语句,它标志着整个源程序 的结束。的结束。 4.4 4.4 指令语句指令语句 4.4.1 4.4.1 指令助记符指令助记符 大多数指令助记符(大多数指令助记符(Instruction Instruction MnemonicsMnemonics)与)与 80868086指令的符号操作码名相同。指令的符号操作码名相同。 4.4.2 4.4.2 指令前缀指令前缀 80868086指令,允许指令用一个或多个指令前缀(指令,允许指令用一个或多个指令前缀( Instruction PrefixesInstruction Prefixes)开始。有三种可能的前缀:()开始。有三种可能的前缀:(1 1 )段超越()段超越(Segment overrideSegment override),(),(2 2)重复()重复(RepeatRepeat ),(),(3 3)锁定()锁定(LockLock)。)。 4.4.3 4.4.3 操作数寻址方式操作数寻址方式 8086 8086 CPUCPU提供了各种操作数寻址方式,提供了各种操作数寻址方式,IBMIBM宏汇宏汇 编在写指令语句时,每一种寻址方式都有一种表达式编在写指令语句时,每一种寻址方式都有一种表达式 。 4.5 4.5 汇编语言程序设计及举例汇编语言程序设计及举例 4.5.1 4.5.1 算术运算程序设计(直线运行程序)算术运算程序设计(直线运行程序) 最简单的程序是没有分支、没有循环的直线运行最简单的程序是没有分支、没有循环的直线运行 程序。程序。 4.5.2 4.5.2 分支程序设计分支程序设计 在一个实际的程序中,程序始终是直线执行的情在一个实际的程序中,程序始终是直线执行的情 况是不多见的,通常都会有各种分支。况是不多见的,通常都会有各种分支。 4.5.3 4.5.3 循环程序设计循环程序设计 在程序中,往往要求某一段程序重复执行多次,在程序中,往往要求某一段程序重复执行多次, 这时候就可以利用循环程序结构。一个循环结构由以这时候就可以利用循环程序结构。一个循环结构由以 下几部分组成:下几部分组成: (1 1)循环体:就是要求重复执行的程序段部分。)循环体:就是要求重复执行的程序段部分。 其中又分为:循环工作部分和循环控制部分。循环控其中又分为:循环工作部分和循环控制部分。循环控 制部分每循环一次检查循环结束的条件,当满足条件制部分每循环一次检查循环结束的条件,当满足条件 时就停止循环,往下执行其它程序。时就停止循环,往下执行其它程序。 (2 2)循环结束条件:在循环程序中必须给出循环)循环结束条件:在循环程序中必须给出循环 结束条件,否则程序就会进入死循环。常见的循环是结束条件,否则程序就会进入死循环。常见的循环是 计数循环,当循环了一定次数后就结束循环。在微型计数循环,当循环了一定次数后就结束循环。在微型 机中,常用一个内部寄存器(或寄存器对)作为计数机中,常用一个内部寄存器(或寄存器对)作为计数 器,通常这个计数器的初值置为循环次数,每循环一器,通常这个计数器的初值置为循环次数,每循环一 次令其减次令其减1 1,当计数器减为,当计数器减为0 0时,就停止循环。也可以时,就停止循环。也可以 将初值置为将初值置为0 0,每循环一次加,每循环一次加1 1,再与循环次数相比较,再与循环次数相比较 ,若两者相等就停止循环。循环结束条件还可以有好,若两者相等就停止循环。循环结束条件还可以有好 多种。多种。 (3 3)循环初态:用于循环过程的工作单元,在循)循环初态:用于循环过程的工作单元,在循 环开始时往往要置以初态,即分别给它们赋一个初值环开始时往往要置以初态,即分别给它们赋一个初值 。循环初态又可以分成两部分,一是循环工作部分初。循环初态又可以分成两部分,一是循环工作部分初 态,另一是结束条件的初态。例如,要设地址指针,态,另一是结束条件的初态。例如,要设地址指针, 要使某些寄存器清零,或设某些标志等等。循环结束要使某些寄存器清零,或设某些标志等等。循环结束 条件的初态往往置为循环次数。置初态也是循环程序条件的初态往往置为循环次数。置初态也是循环程序 的重要的一部分,不注意往往容易出错。的重要的一部分,不注意往往容易出错。 4.5.4 4.5.4 字符串处理程序设计字符串处理程序设计 1 1确定字符串的长度确定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临时变更合同(标准版)
- 餐饮企业加盟合同(标准版)
- 2025年学历类自考中国古代文学史(二)-中级财务会计参考题库含答案解析(5卷)
- 教师招聘之《幼儿教师招聘》复习试题及参考答案详解(夺分金卷)
- 2025年学历类自考中国古代文学史(一)-学前心理学参考题库含答案解析(5卷)
- 2025年学历类自考中国古代文学作品选(一)-管理会计(一)参考题库含答案解析(5卷)
- 竞赛试题及答案解析
- 教师招聘之《小学教师招聘》考试彩蛋押题附参考答案详解【突破训练】
- 识图竞赛试题及答案
- 教师招聘之《幼儿教师招聘》练习题附参考答案详解ab卷
- 纺织企业安全生产知识培训
- 小区物业合伙管理协议书
- 2025年全国小学生“学宪法、讲宪法”活动知识竞赛题库及答案
- 小学心理健康教育四级预警汇报流程
- 教案2025秋形势与政策纪念抗战胜利坚定民族信念抗战胜利80周年
- 2025年学法减分试题及答案
- 《智能建造概论》高职完整全套教学课件
- 2025年中小学教师师德师风考试题库及答案
- DGTJ08-2090-2020 绿色建筑评价标准
- 2025年商业店铺出租合同(标准版)(可修改可打印)
- 设备采购质保金管理制度
评论
0/150
提交评论