- 1、本文档共78页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机课件(第三章)精要
第三章 汇编语言程序设计 本章重点 3.1 汇编语言基础 ——3.1.1计算机设计语言 机器语言 汇编语言 高级语言 2. 汇编语言 汇编语言源程序 2. 汇编语言——汇编程序 汇编程序的主要功能 3.1.2 汇编语言程序结构 汇编语言源程序通常由一个或几个程序 模块组成,每个模块一般由三个逻辑段组成: 数据段——存放数据、变量 堆栈段——堆栈区域 代码段——存放程序指令 基本的汇编语言程序框架 3.1.3 汇编语言程序语句——类型 3.1.3 汇编语言程序语句——格式 指令性语句: [标号: ]指令助记符[目的操作数],[源操作数] [;注释] 3.1.3 汇编语言程序语句——格式 区分标号和名字 标号后有冒号,在指令性语句前;名字后不加冒号,在指示性语句前。 英文字母、数字及专用字符组成,最大长度不能超过31个,且不能由数字打头,不能用保留字(如寄存器名,指令助记符,伪指令)。 3.1.4 汇编语言操作数 寄存器 存储器单元 常量 变量或标号 表达式 3.1.4 汇编语言操作数——常量 常量:指在汇编时已经有确定数值的量。 数字常量:没有任何属性的纯数值 二进制数,以B结尾。。 十进制数,如85。 十六进制数,以H结尾。第1个数字为A-F时,前面应加0,如0F160H。 字符串常量:用引号括起的1个字符或多个字符 例:‘A’,‘ERROR!’ 3.1.4 汇编语言操作数——常量的应用 在程序中,常量主要出现在: 1)指令语句源操作数中做立即数,它应与目的操作数的位数相一致,可以是8位或16位的。 2)在指令语句中的基址加变址的寻址方式中作位移量。 3)在数据定义伪指令中。 例如: MOV AX,1234H MOV BX,[SI+32H] DB 12H ;定义一个字节数据 3.1.4 汇编语言操作数——变量 变量——即内存中的存储单元或数据区的符号表示。这些数据在程序运行期间随时可以修改。 变量名——是存储单元(数据区)的符号地址或名字。即是数据的地址或数据区的首地址。可由数据定义伪指令定义。 变量也有三个属性: 段地址—变量所在段的段地址 偏移量—变量单元地址与段首地址之间的位移量。 类 型—有BYTE、WORD和DWORD三种。 3.1.4 汇编语言操作数——变量的定义与预置 定义变量就是给变量分配存储单元,且对这个存储单元赋予一个符号名,即变量名,同时将这些存储单元预置初值。 VAR-DATA SEGMENT DATA1 DB 12H DATA2 DB 34H DATA3 DW 9876H VAR-DATA ENDS 3.1.4 汇编语言操作数——变量属性 定义变量是用数据定义伪指令DB,DW,DD等。经过定义的变量,每个变量均有三个属性: (1)段属性(SEG) (2)偏移量属性(OFFSET) (3)类属性(TYPE) 3.1.4 汇编语言操作数——变量段属性 段属性(SEG):表示变量存放在哪一个逻辑中,即变量所在段的段基值。 例如: VAR-DATA SEGMENT DATA1 DB 12H DATA2 DB 34H DATA3 DW 9876H VAR-DATA ENDS 三个变量都存放在VAR_DATA逻辑段中。当在指令中要对这些变量进行存取操作时,事先要把它们所在段的段基值存放在某一个段寄存器中。 3.1.4 汇编语言操作数——变量偏移量属性 偏移量属性(OFFSET):表示变量在逻辑段中离段起始点的字节 数。 例如:变量DATA1的偏移量为0,而DATA2的偏移量为1,DATA3的偏移量为2。 段属性和偏移量属性构成了变量的逻辑地址。 3.1.4 汇编语言操作数——标号 标号——指令所在内存单元的符号地址 有三个属性: 段地址:即标号所在段的段地址; 偏移量:标号所代表存储单元的段内偏移地址; 类 型:NEAR或FAR: NEAR—表示标号所在语句与转移指令/ 调用指令在同一码段内,跳转时 只需改变IP即可。 FAR—标号所在语句与转移指令/调用 指令不在同一代码段内。 若没有对类型进行说明,默认为NEAR。 标号通
文档评论(0)