第五章汇编语言程序结构 教学重点 本章重点掌握: √程序的格式、开发方法 √参数的表达、变量的定义汇编语言程序格式 变量和标号的属性
教学重点 本章重点掌握: ✓程序的格式、开发方法 ✓参数的表达、变量的定义 ✓变量和标号的属性 第五章第一章汇编语言程序结构 基础知识
概念 机器语言—计算机能够直接认别并执行的二进制机器指令序列 优点:开销小、运行速度快; 缺点:难以编写和理解,编程效率很低。 汇编语言( Assembly Language)一用助记符号表示机器指令 代码、变量地址,标号等的符号指令序列。 优点:易记、易理解,易编写程序,大大提高了编程效率; 问题:需要将助记符号翻译为机器语言。 汇编语言源程序:用汇编语言编写的程序。 汇编程序:将助记符号翻译为机器语言的语言处理程序,以便 计算机能够识别。 汇编:将助记符号翻译为机器语言的过程 理解以上几个名词概念 汇编语言、汇编语言源程序、汇编程序、汇编
第一章 基础知识 机器语言—计算机能够直接识别并执行的二进制机器指令序列 优点:开销小、运行速度快; 缺点:难以编写和理解,编程效率很低。 汇编语言(Assembly Language) —用助记符号表示机器指令 代码、变量地址,标号等的符号指令序列。 优点:易记、易理解,易编写程序,大大提高了编程效率 ; 问题:需要将助记符号翻译为机器语言。 汇编语言源程序:用汇编语言编写的程序。 汇编程序:将助记符号翻译为机器语言的语言处理程序,以便 计算机能够识别。 汇编:将助记符号翻译为机器语言的过程。 理解以上几个名词概念: 汇编语言、汇编语言源程序、汇编程序、汇编 概 念
第一节:汇编程序功能及上机过程 汇编程序功能 汇编程序依赖于硬件,不同机型的系统有自已的汇编程序。 汇编程序的主要功能如下 1)检测语法错 显示错误信息 (2)源程序文件—二进制目标文件(并输出*LST文件) (3)展开宏指令 一般汇编程序都应具有如下功能: 宏汇编功能 支持地址和数据的符号表示 支持内存管理 支持程序的模块化组织 支持多种类型的数据表示等
第一节:汇编程序功能及上机过程 汇编程序功能 汇编程序的主要功能如下: (1)检测语法错 显示错误信息 (2)源程序文件 二进制目标文件(并输出*.LST文件) (3)展开宏指令 一般汇编程序都应具有如下功能: • 宏汇编功能 • 支持地址和数据的符号表示 • 支持内存管理 • 支持程序的模块化组织 • 支持多种类型的数据表示等 汇编程序依赖于硬件,不同机型的系统有自己的汇编程序
上机过程 修改漮程序错误 上机过程 编辑程序 如图所示 FLLE. ASM→ 人理EL8T[汇编程字M FLE○B. 否 正确 是 理EMAP)x连接程LK FILE EXE 否 正确? 是 运行 FILE EXE 图31·汇编语言程序调试上机过程
上机过程 上机过程 如图所示
第五章m 义数拇段 4d(*) ;定义尔存区及赦拇 data nds 汇编语言源程序的 extra segment s定义附加段 41d(?) ;定义目的存储区 extra nds 附加段结 源程序由段 segment para stack 'stad 定义段 组成,每段有 100d(0) ;堀栈长磨为100字竹 个段名, segment stack ;绁栈段结水 疤义代码段 定义段起点, rain fat 定义主过程开始 ends定义段结東 assume cs: code, ds: data, es: extra, ss: stack 点。每段由若千 程序执拧的起始地址 ;为返国DOSm写的三条语句 语句行组成,源 s 程序以end结束 mov ax data ;用数拇段地址初始化DS段奇存器 now 汇编语言源程 ax, extra ;用附加段地址初始化ES畏奇存器 序是段结构的: 代码段、数据 ;字符串衛区首址SI倚器 di. buffer ;目的字符串存储区首址送D倚拌器 段、堆栈段 ;设置才向标志(DF-0 附加段 mov cx,40 ;字符串长度谦《奇器 rep movsb ;传送字符串 ;返DoS nain 主过程结 ;世码段结枣 end ;乐程序结枣
第五章第一章汇编语言程序结构 基础知识 汇编语言源程序的结构与书写格式 汇编语言源程 序是段结构的: 代码段、数据 段、堆栈段、 附加段 源程序由段 组成,每段有一 个段名,segment 定义段起点, ends定义段结束 点。每段由若干 语句行组成,源 程序以end结束。 例字符串传送
指令和伪指令 指令使CPU产生动作、并在程序执行时才 处理的语句,就是前一章学习的处理器指令 伪指令( Directive)不产生CPU动作、在 程序执行前由汇编程序处理的说明性语句,例 米本课程采用微软宏汇编程序MASM5.0 序的版本有关
指令和伪指令 • 指令——使CPU产生动作、并在程序执行时才 处理的语句,就是前一章学习的处理器指令 • 伪指令(Directive)——不产生CPU动作、在 程序执行前由汇编程序处理的说明性语句,例 如,数据说明、变量定义等等 • 伪指令与具体的处理器类型无关,但与汇编程 序的版本有关 本课程采用微软宏汇编程序 MASM 5.0
第二节:汇编语言语句格式与分类 汇编语言语句一般格式为 [标识符/语句标号]指令名[操作数序列][;注释] 标识符用来为变量、段及过程等命名 语句标号标识符后加’:′,提供转移地址 指令名—指令可分为三类:机器指令、伪指令和宏指令。 机器指令:指令系统中的指令,程序运行时由CPU执行; 伪指令:汇编程序执行的操作,规定汇编程序如何按要求 进行汇编及分配内存 宏指令:由一系列指令或伪指令构成,汇编时展开成若干 条机器指令,用于提高编程效率。 (伪指令和宏指令由汇编程序在汇编期间处理) 操作数序列可以是常量、变量、表达式、寄存器名或 标号等,用逗号隔开。 注释符—≤;”后可给出语句注释,提高可读性和可理解性
汇编语言语句一般格式为: [标识符/语句标号] 指令名 [操作数序列] [;注释] 标识符——用来为变量、段及过程等命名 语句标号——标识符后加 : ,提供转移地址 指令名——指令可分为三类:机器指令、伪指令和宏指令。 机器指令:指令系统中的指令,程序运行时由CPU执行; 伪指令:汇编程序执行的操作,规定汇编程序如何按要求 进行汇编及分配内存 。 宏指令:由一系列指令或伪指令构成,汇编时展开成若干 条机器指令,用于提高编程效率。 操作数序列——可以是常量、变量、表达式、寄存器名或 标号等,用逗号隔开。 (伪指令和宏指令由汇编程序在汇编期间处理 ) 注释符—— “; ”后可给出语句注释,提高可读性和可理解性。 第二节:汇编语言语句格式与分类
常量、变量、标号 1)常量 00110110B389D4670B407H MOV AL.A 3.475E+5 ' Input a number mov (2)变量 段起点 变量名:存储单元的符号地址 变量值:存储单元中的数据 偏移量 变量的三种属性: 50 段值(SEG):变量所在段的起始地址 偏移量( OFFSET):段起点距离变量所在存储单 元位置的字节数 类型(TYPE):变量占用的字节数
(1)常量 00110110B 389D 467O B407H 3.475E+5 'Input a number' (2)变量 变量名:存储单元的符号地址 变量值:存储单元中的数据 MOV AL, 'A' mov al, 'a' 变量的三种属性: 段值(SEG):变量所在段的起始地址 偏移量(OFFSET):段起点距离变量所在存储单 元位置的字节数 50 偏 移 量 段起点 类型(TYPE):变量占用的字节数 常量、变量、标号
(3)标号 标号:存放指令的存储单元的符号地址,常用作转移地址。 CMP AX. BX JNE NEXT NEXT: MOV AX. 0 标号的三种属性 段值(SEG):标号所在段的起始地址 偏移量( OFFSET):段起点距离标号所指存储单 元位置的字节数 类型(TYPE):NEAR,FAR NEAR:2字节转移地址(偏移地址)短指针(近指针)段内转移 FAR:4字节转移地址(段、偏移地址)长指针(远指针)段间转移
(3)标号 标号:存放指令的存储单元的符号地址,常用作转移地址。 NEAR :2字节转移地址 … CMP AX,BX JNE NEXT … NEXT: MOV AX,0 … 标号的三种属性: 段值(SEG):标号所在段的起始地址 偏移量(OFFSET):段起点距离标号所指存储单 元位置的字节数 类型(TYPE): NEAR , FAR (偏移地址) 短指针(近指针) 段内转移 FAR :4字节转移地址(段、偏移地址)长指针(远指针) 段间转移
第五章汇编语言程序结构 汇编语言程序的语句类型 1、程序执行指令语句。 、伪操作语句 3、宏指令语句。 伪操作的功能:伪操作又称为伪指令,它不象机器指令那样是在程序运行期间由 计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的操作, 们可以完成如下功能: (1)符号定义伪指令 (2)数据定义伪指令 (3)段定义伪指令 (4)过程定义伪指令 (5)条件汇编伪指令 (6)宏指令 (7)结构与记录 一、数据定义及存储器分配伪操作 格式 VAriable] Mnemonic Operand,., Operand [ Comments 变量( Variable)字段:是可有可无的,它用符号地址表示,其作用与指令语句 前的标号相同,但它的后面不跟冒号。如果语句中有变量则汇编程序使其记以第 个字节的偏移地址
第五章第一章汇编语言程序结构 基础知识 汇编语言程序的语句类型: 1、程序执行指令语句。 2、伪操作语句。 3、宏指令语句。 伪操作的功能:伪操作又称为伪指令,它不象机器指令那样是在程序运行期间由 计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的操作,它 们可以完成如下功能: (1)符号定义伪指令 (2)数据定义伪指令 (3)段定义伪指令 (4) 过程定义伪指令 (5)条件汇编伪指令 (6)宏指令 (7)结构与记录 一、数据定义及存储器分配伪操作 格式: [Variable] Mnemonic Operand , … , Operand [;Comments] 变量(Variable)字段:是可有可无的,它用符号地址表示,其作用与指令语句 前的标号相同,但它的后面不跟冒号。如果语句中有变量则汇编程序使其记以第 一个字节的偏移地址