《汇编伪指令》PPT课件.ppt

上传人:w****2 文档编号:16568198 上传时间:2020-10-13 格式:PPT 页数:36 大小:2.48MB
返回 下载 相关 举报
《汇编伪指令》PPT课件.ppt_第1页
第1页 / 共36页
《汇编伪指令》PPT课件.ppt_第2页
第2页 / 共36页
《汇编伪指令》PPT课件.ppt_第3页
第3页 / 共36页
点击查看更多>>
资源描述
第 5章 汇编语言程序设计 学习重点: 汇编语言程序的书 写规则、语句基本格 式及程序的分段结构。 常用的伪指令语句 的格式、功能及应用。 顺序结构、分支结 构、循环结构程序和 子程序的基本结构和 设计方法。 常用 DOS功能调用 的方法,包括键盘输 入、显示输出和系统 时间的功能调用。 第 5章 汇编语言程序设计 1 汇编语言的程序与语句 2 汇编语言的伪指令 3 汇编语言程序设计基础 4 中断服务程序设计 5 模块化程序设计 5.1 汇编语言的程序与语句 5.1.1 汇编 语言 程序 的行 1、 8086/8088汇编语言程序是 以段为基本单位 的, 段是由若干行组成 的,每一行可以是一条指令、伪 指令,也可以是变量定义。 2、汇编语言程序段是由若干个段组成的,段是汇编 语言程序中一个 相对独立 的程序模块,每个 段都必 须定义 ,段定义是通过汇编语言的伪指令来实现的。 5.1 汇编语言的程序与语句 1、段定义的一般方法 定义段是通过“ SEGMENTENDS 伪操作来实现。 格式: 段名 SEGMENT 【定义类型】【组合类型】【类型名】 。 ;指令串或变量定义 段名 ENDS 说明:段名的 起名规则与标号的定义规则基本相同 , SEGMENT 表示定 义段的开始, ENDS表示定义段的结束。汇编语言中代码段、数据段、堆 栈段和附加段都是用这种方法定义的,仅从结构上无法区别各段。因此 可将用” SEGMENT.ENDS定义的段称为逻辑段。 功能:定义 当前段的名字与具体内容 ,同时规定段在存储器中的 定义要求 以及 与其他段之间的连接关系 等。 5.1 汇编语言的程序与语句 硬件系统在读取指令时,自动到代码段中读取,读取数据时自动到数据段。那么 CPU怎么知道哪个是代码段 、 哪个是数据段呢? 指定段寄存器伪指令 可以解决这 个问题。 格式: ASSUME CS: 段名 功能:建立 逻辑段 与 代码段寄存器 CS之间 的对应关系。 ASSUME 伪指令 一般放在代码段的顶端 ,汇编系统会根据它的指示 自动将代 码段的段地址装入 CS段寄存器中;而数据段、堆栈段和附加段则无此功能, 需用 MOV指令将段基址装入 相应段寄存器中。 2、指定段寄存器伪指令 5.1 汇编语言的程序与语句 例如:若数据段的名字是 MY-DATA,可用如下方法建立 MY- DATA与 DS之间的关系: MOV AX, MY-DATA MOV DS, AX 以上必须先将 MY-DATA的段基址装入 AX寄存器,然后再通过 AX装入 DS,不能直接将 MY-DATA的段基址装入 DS寄存器。 5.1 汇编语言的程序与语句 3、汇编语言源程序完整段结构 NAME 模块名 EQU 定义语句 ;通常这部分可以不写 数据段名 SEGMENT ;段名都由咱们自己定义,可允许存在多个段 . 数据段名 ENDS 代码段名 SEGMENT ASSUME CS:CODE,DS:DATA . START: . CODE ENDS ;结束标志不可缺省 END START 5.1 汇编语言的程序与语句 4、简化的段定义方法 简化段结构如下: .MODEL SMALL ;定义独立的代码段,独立的数据段 .STACK n ;定义堆栈段 n个字单元 上面所讲段定义方法略显复杂,为此使用一种简化的段定义方 法从大家学习简单的实际控制系统设计的角度来说很有意义。 DATA ;数据段开始标记 . CODE ;代码段开始标记 标号: . ;程序开始 END 标号 ;结束 5 .1 汇编语言的程序与语句 汇编段结构 补充 MODEL :内存模式 SMALL:独立代码段,独立数据段 DATA:定义数据段 DS; STACK:定义堆 栈段 SS CODE:定义代码段 CS; EXTRA:定义附加 段 ES STARTUP:程序开始; EXIT:返回 5.1 汇编语言的程序与语句 例如:说明用 SEGMENT/ENDS ASSUME 来定义段。 DATA SEGMENT ;数据段 XX DB ? DATA ENDS ;数据段结束 EXTRA SEGMENT ;附加段 RSS1 DW? . EXTRA ENDS ;结束 STACK SEGMENT ;堆栈段 DW 50 DUP() . STACK ENDS ;结束 CODE SEGMENT ;代码段 ASSUME CS:CODE,DS:DATA ASSUME ES:EXTRA,SS:STACK START:MOV AX, DATA;装入 段基址 MOV DS, AX MOV AX, EXTRA MOV ES, AX 。 CODE ENDS ;结束 END START 5.1 汇编语言的程序与语句 1、在一个代码段中,如果 没有 另 外的 ASSUME语句重新设置 ,原来 设置的 ASSUME语句 一直有效 。 2、每条 ASSUME语句 可设置 1-6个 段寄存器 。 ASSUME语句来完成段分 配时,要注意以下几点: 3、可用 NOTHING删除以前的设置 例如: ASSUME ES:NOTHING 删除 ES与某段的联系 ASSUME NOTHING 删除全部 6 个段寄存器的设置。 4、段寄存器的装入:任何指令执 行时都将用到 CS、 DS、 ES、 SS 寄存器段基址才能形成真正的物理 地址。在执行这些指令之前, 必须 先设置这些段寄存器的值, 即 段基 址 。 5.2 汇编语言的伪指令 1、表达式赋值伪操作 EQU 指令格式: 符号名 EQU 表达式 功能:为常数或表达式取一个名字, 即把 常数的值赋给 EQU左边的名字 , 供以后引用。 表达式 可以是常数,变量,标号, 指令助记符,字符串 等。 5.2.1符号定义伪指令 例如: CONST EQU 10H SUM EQU CONST+12 ADDR EQU 8003H NAME EQU CLASS . MOV CX, CONST ;引用 MOV DX, ADDR 本例中,两条执行性指令等价于: MOV CX, 0010H MOV DX, 8003H 等值伪指令相当于 C语言中的宏定 义“ #define,它主要用于定义外 部设备地址。对调试程序很有益。 5.2 汇编语言的伪指令 5.2.1 符号定义伪指令 2、等号伪操作 “ =” 指令格式:符号名 = 表达式 例如: EMP=6 ; EMP=6 EMP=EMP+6 ;新的 EMP=16 EMP EQU 6;经 EQU定义后, EMP的内容将永远为 6 功能:与 EQU类似,区别在于 EQU伪操作不允许在同一个源程 序中对同一个变量重复定义,而 用“ =”则 可重复定义 变量名 。 由此可见, EQU不能与 = 同时使用。 5.2 汇编语言的伪指令 1、变量定义伪指令 指令格式: 【变量名】 数据定义符 操作数项表 功能: 定义变量名 并 为变量分 配存储单元 ,同时将 初值赋给 相应的存储单元。 5.2.2数据定义伪指令 说明: 变量名的命名规则与标号的命名 规则相同。其中,变量名是可选项, 定义符是必选项 ,用于说明操作数 项的类型属性。 操作数项 可以是常数、表达式、 字符串和 ? , 问号用于预留存储空 间, 当操作数项为 字符串时,必须 用单引号括起 ,且字符是以 ASCII 码形式存放在存储单元中的。 5.2 汇编语言的伪指令 常用的变量定义符如下: DB:定义 字节型 变量,每个变量 占 1个字节 的位置。 DW:定义 字型 变量,每个变量 占 2个字节 的位置。 DD:定义 双字型 变量,每个变量 占 4个字节 的位置。 DQ:定义 四字型 变量,每个变量 占 8个字节 的位置。 DT:定义 十字节型 变量,每个变量 占 10个字节 的位置。 上述定义符中,前两个使用最多,其他很少使用。 5.2 汇编语言的伪指令 例如: X DB 20H Y DW 4344H Z DD 12345678H BUFF DB 1,2,3,4,5 VABB DW ? VARW DB abcdxyz123 ARRAY DW 0,0,0,0,0,0 本例中, X、 Y、 Z相当于高级语 言中 单个变量 的定义,而 BUFF、 VABB、 VARW、 ARRAY相当 于高级语言中 数组的定义 。即 定义一个数据块。 使用变量时注意: 一:最好 按变量定义的类型 使用 ,尽量 避免在不同类型 的变量 和寄存器之间 进行操 作。 二:变量在指令中的 寻找方 式为直接寻址 ,即出现在指 令中的变量两个含义: 确定 的类型、确定的偏移地址。 5.2 汇编语言的伪指令 2、重复定义伪指令 上个例题中, ARRAY被赋了 6个元素的数组,并且在定义同时还给它赋 了初值( 6个 0),如果数组的长度再大些,按上述方法定义就不太好了, 为此,汇编系统专门设置了一条重复定义伪指令 DUP. 指令格式: n DUP (操作数 , ) 功能:对操作数项表的内容进行 n次重复分配、定义 及 预置存储单元 。 5.2 汇编语言的伪指令 重复定义伪指令 例如: BUF1 DW 6 DUP(0) BUF2 DW 10 DUP(?),20 DUP (7) ONE DB 10 DUP (5) TWO DB 2 DUP (10H,A, ) STRING DB 3 DUP (TEST 0K) 本例中 BUF1预留了 6个 0, BUF2预留了 10个空间, 20 个 7,。 TWO定义一个简单的二维数组, STRING重复 3次“ TEST 0K! 5.2 汇编语言的伪指令 1、段定义伪指令 指令格式: SEGMENT 和 ENDS 功能: 指出段名 及 段的各 种属性 ,并指示 段的起始 位置和结束位置 。 5.2.3 段定义伪指令 说明:上述指令格式中, SEGMENT和 ENDS必须成对 出现, 段名是段的标示符, 由用户自行指定。用来指示 汇编程序为该段分配的存储 单元的起始位置,其具有段 地址和偏移地址两种属性。 后面定位类型、组合类型 不做要求。 , 5.2 汇编语言的伪指令 2、段定义说明伪指令 ASSUME 见上节内容 3、组定义伪指令 GROUP 格式:组名: GROUP 【段名,段名,。】 功能 :用于将程序中 若 干个不同名的段集合成 一组 ,使它们 都装在一 个物理段中 ,并赋予这 个段集合一个组名。 说明: 同一段组内的 段的数 目不受限制 ,且同一段 组内 各段的组合类型和 类别可以不同 ,但段组 的 总字节数不能超过 64KB。 当程序在组内不同类 型的段间进行时, 可共 用一个段寄存器 ,组内 各段间的转移视为段内 转移。 5.2 汇编语言的伪指令 3、定位伪指令 ORG 指令格式: ORG 表达式 ORG $+表达式 功能:格式 1:可直接将表达式的值 0- 65535)置入地址计数器, 格式 2:将语句 ORG前程序计数器的 现行值 $加上表达式的值 后置 入地址地址计数器。 5.2 汇编语言的伪指令 例如:段定义伪指令示例 DATA SEGMENT ORG 10H ;在数据段 10H偏移地址处开始存放 20H, 30H X DB 20H,30H ORG $+5 ;在数据段 17H偏移地址处开始存放 OK Y DB OK 5.2 汇编语言的伪指令 5.2.4 过程定义伪指令 过程也称子程序,在程序中任何地方都可以调用 它。控制从主程序转移到过程被称为 “调用”。 过程 结束后 返回主程序 。 使用过程可以 简化源程序 ,并 节省存储空间 及程 序设计所花的时间,使 程序结构简洁清晰、减少编程 工作量。 过程定义伪指令格式: 5.2 汇编语言的伪指令 过程定义伪指令 过程名 是 过程入口的符号地址 ,过程也有 3种属性: 段, 偏移量,类型 。过程属性由过程定义伪指令指定,为 NEAR或 FAR。 NEAR属性指该过程是一个段内调用, FAR则指段间的调用,如果不指明过程的属性,则汇 编程序 默认其属性为 NEAR。 汇编语言中,用 CALL指令 来调用过程,用过程中 RET 指令结束过程并返回到 CALL指令的下一条指令。 一个过程可以有多个 RET指令,但至少要执行到一个 RET指令。 5.2 汇编语言的伪指令 过程定义伪指令 过程调用指令格式如下: CALL 过程名 说明: 一个段中可以有多个过程, 且过程的定义和调 用 均可以嵌套 ,一个过程中可以包括多个过程定义, 堆栈的大小决定嵌套的深度 ,但过程 不允许交叉 。另 外过程还可以调用过程自身。 5.2 汇编语言的伪指令 例如:过程定义伪指令示例 SEGX SEGMENT . SUBT PROC FAR ; 调用程序过程名 SUBT . RET SUBT ENDP CALL FAR PTR SUBT ;第一次调用过程 . SEGX ENDS SEGY SEGMENT . CALL FAR PTR SUBT ;第二次调用过程 . SEGY ENDS Cycle Diagram ADD YOUR TITLE TEXT TEXT TEXT TEXT TEXT TEXT Diagram YOUR TITLE YOUR TITLE YOUR TITLE welcome to use these powerpoint templates, New Content design, 10 years experience welcome to use these powerpoint templates, New Content design, 10 years experience welcome to use these powerpoint templates, New Content design, 10 years experience Diagram ADD YOUR TITLE welcome to use these powerpoint templates welcome to use these powerpoint templates welcome to use these powerpoint templates welcome to use these powerpoint templates Diagram welcome to use these powerpoint templates, New Content design, 10 years experience welcome to use these powerpoint templates, New Content design, 10 years experience welcome to use these powerpoint templates, New Content design, 10 years experience Diagram welcome to use these powerpoint templates, New Content design, 10 years experience welcome to use these powerpoint templates, New Content design, 10 years experience welcome to use these powerpoint templates, New Content design, 10 years experience welcome to use these powerpoint templates, New Content design, 10 years experience Diagram welcome to use these powerpoint templates, New Content design, 10 years experience welcome to use these powerpoint templates, New Content design, 10 years experience welcome to use these powerpoint templates, New Content design, 10 years experience welcome to use these powerpoint templates, New Content design, 10 years experience welcome to use these powerpoint templates welcome to use these powerpoint templates Diagram Title1 Title2 Title3 Title4 A B C D E F Diagram 例如:段定义伪指令示例 DATA SEGMENT ORG 10H ;在数据段 10H偏移地址处开始存放 20H, 30H X DB 20H,30H ORG $+5 ;在数据段 17H偏移地址处开始存放 OK Y DB OK welcome to use these powerpoint templates, New Content design, 10 years experience welcome to use these powerpoint templates, New Content design, 10 years experience Diagram 2006 2007 2008 2009 welcome to use these powerpoint templates, New Content design, 10 years experience welcome to use these powerpoint templates, New Content design, 10 years experience welcome to use these powerpoint templates, New Content design, 10 years experience welcome to use these powerpoint templates, New Content design, 10 years experience 请尊重作者劳动成果 转载请注明出处:
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!