好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

汇编语言程序设计本章学习目标通过本章的学习应当掌握以.ppt

65页
  • 卖家[上传人]:宝路
  • 文档编号:48215215
  • 上传时间:2018-07-11
  • 文档格式:PPT
  • 文档大小:167.57KB
  • / 65 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第4章 汇编语言程序设计 本章学习目标通过本章的学习,应当掌握以下内容: •了解汇编语言的基本知识和特点 •熟悉汇编语言的程序结构、段定义以及语句的格式 •掌握汇编语言常用伪指令的使用方法 •熟练掌握汇编语言程序设计的基本方法:顺序结构、 •分支结构、循环结构和子程序结构 •掌握程序设计中的宏指令和常用的系统功能的调用方 法4、1 机器语言、汇编语言与高级语言 程序设计语言通常分为3类:机器语言(Machine Language)汇编语言(Assembler Language)高级语言(High Level Language) 4、1、1 机器语言和汇编语言 1.机器语言 (1)机器指令 机器指令是指用二进制编码的指令,以表示计算机所 要进行操作数及操作对象(数据或数据地址) (2)指令系统和机器语言 指令系统是指特定计算机上机器指令的集合机器语 言是由指令系统以及机器指令的使用规则构成的 机器语言是计算机惟一能识别的语言,只有用机器语 言描述的程序,计算机才能直接执行 (3)机器语言的主要特点 机器语言主要具有下列两个特点: ① 机器语言与机器密切相关 ② 机器语言设计程序非常困难,但容易实现高性能 2. 汇编语言 以助记符描述的指令称作汇编格式指令或符号指令, 通常简称指令。

      指令和伪指令的集合及其程序设计规 则便构成了汇编语言用汇编语言编写的程序就是汇 编语言源程序 4、1、2 汇编语言与高级语言 机器语言和汇编语言都是面向机器的,是低级语言 高级语言在程序设计的简易性与代码的可移植性等方 面有了质的飞跃当然,用高级语言编写的源程序必 须经过编译和连接,将其转变为可执行程序或借助于 解释程序方可在计算机上运行•语言•汇编语言•高级语言 •代码效率•高•较低•源程序可读性•较差•好 •对硬件的依附 性•高•低•程序员硬件知 识•高•较低•应用范围•较广•广泛汇编语言和高级语言的比较:4、1、3 汇编与连接 1.汇编程序 汇编是把汇编语言程序翻译成机器语言描述的目标程序 的过程 汇编程序是完成汇编任务的程序 2.连接程序 连接程序的主要功能是实现多个目标文件及库文件的连 接,并完成浮动地位的重定位 从汇编语言源程序到可执行程序的生成过程如图所示汇编语言源程序汇编目标程序连接可执行程序4、2 汇编语言源程序的结构 4、2、1 汇编语言的语句格式 汇编语言源程序中的每个语句可以由4项组成,格式如下 [name] operation operand [;comment] [名字项] 操作项 操作数项 ;注释项 下面分别说明各项的表示方法。

      1.名字项 源程序中用下列字符表示名字: 字母:A~Z或a~z; 数字:0~9; 专用字符号:?、• 、@、―、$; 一般来讲,名字项可以是标号或变量 (1)标号:在代码段定义,后面跟冒号: 它有三种属性:段、偏移及类型① 段属性:定义标号的段起始地址,在CX寄存器中 ② 偏移属性:16位无符号数 ③ 类型属性:用来指出该标号是在本段内引用还是在其 他段内引用的 (2)变量:变量在除代码以外的其他段中定义,后面不 跟冒号它也可以用LABLE或EQU伪操作来定义变量 经常在操作数字段出现 它也有段、偏移及类型三种属性 ① 段属性定义变量的段起始地址,此值必须在一个段寄 存器中 ② 偏移属性变量的偏移地址是16位无符号数,它代表从 段的起始地址到定义变量的位置之间的字节数在当前段 内给出变量的偏移值等于当前地址计数器的值,当前地址 计数器的值可以用 $ 来表示 ③ 类型属性变量的类型属性定义该变量所保留的字节数 2.操作项 操作项可以是指令、伪操作或宏指令的助记符 3.操作数项 操作数项由一个或多个表达式组成,多个操作数项之间一 般用逗号分开 4.注释项 注释项用来说明一段程序或一条或几条指令的功能,它是 可有可无的。

      4、2、2汇编语言源程序的段定义 段定义伪操作的格式如下: segment-name SEGMENT …segment-name ENDS 其中删节号部分,对于DS、ES和SS来说,一般是存贮单 元的定义、分配等伪操作;对于代码段则是指令及伪操作 此外,还必须明确段和段寄存器的关系,这可用 ASSUME伪操作来实现,其格式为: ASSUME assignment,…,assignment 其中 assignment 说明分配情况,其格式为: 〈段寄存器名〉:〈段名〉 其中段寄存器名必须是CS、DS、ES和SS中的一个, 而段名则必须是由SEGMENT定义的段中的段名 4、 2、.3 汇编语言源程序的结构 汇编语言源程序的程序基本结构是段,一个汇编语言 源程序由若干个代码段、数据段、附加段和堆栈段组 成段之间的顺序可以随意安排,通常数据段在前, 代码段在后任何可执行汇编语言程序至少要有一个 代码段,通常还可能有数据段和堆栈段每个段都有 段首指令和段结束指令,段的内容介于这两条指令之 间其一般结构如下: SSEG SEGMENT STACK〈堆栈段的内容〉 SSEG ENDS DSEG SEGMENT DATA〈数据段的内容〉 DSEG ENDS CSEG SEGMENT CODE〈代码段的内容〉 CSEG ENDSEND 〈启动标号〉 对于一般程序来说,定义太多的段只会增加程序设计 的复杂性,通常需要一个代码段、一个数据段和一个 堆栈段,有时可包含一个附加段。

      1.为什么要用ASSUME语句指令 mov bl,xdmov xe,bl 被汇编为 mov bl,byte ptr[0000h] mov byte ptr es:[0000h],bl 其中,在变量xe前增加了段超越前缀ES:,这就是 ASSUME的作用,也仅此而已 2.设置段寄存器的初值(1)CS与IP CS与IP的初值不能在程序中显示设置,由系统自动设置 为END后指定的起始地址 (2)DS和ES、 DS和ES的初值必须在程序中设置 设置方法如下: MOV AX,SEG NAME MOV DS,AX (3)SS与SP SS与SP初值的设置方法有下列两种: 在程序中显示设置,类似于DS,例如: MOV AX,SSEG MOV SS,AX MOV SP,ST_TOP 若堆栈段定义时给出了参数STACK,则连接器LINK 自动将SS:SP指向栈底; 若未定义堆栈段,则由系统指定堆栈,SS:SP也由 系统自动设置 [例4.2]:在数据段定义首地址为A的10个字符,将这10 个字符以相反次序传送到附加段首地址为B的内存单元 中。

      DSEG SEGMENT A DB ‘1234567890’ DSEG ENDS ESEG SEGMENT B DB 10 DUP(?) ESEG ENDS CSEG SEGMENTASSUME CS:CSEG,DS:DSEG, ES:ESEG START: MOV AX,DSEGMOV DS,AXMOV AX,ESEGMOV ES,AX LEA SI,ALEA DI,BADD DI,9MOV CX,10 MOVE: CLDLODSBSTDSTOSBLOOP MOVEMOV AH,4CHINT 21H CSEG ENDSEND START4、3 汇编语言的运算符1.算术运算符 算术运算符主要包括+、-、*、/和MOD、[]等其中 MOD是指除法运算后得到的余数 语法格式为: expr1[expr2]等价于expr1+expr2 2.逻辑运算符 逻辑运算符主要包括AND、OR、XOR、NOT、SHR及 SHL逻辑操作符是按位操作的,它只能用于数字表达 式中。

      3.关系运算符 关系运算符主要包括EQ(相等时为真)、NE(不相等 时为真)、LT(小于时为真)、GT(大于时为真)、 LE(小于或等于时为真)、GE(大于或等于时为真) 等6种4.数值回送(Value returning)操作符 它有TYPE、LENGTH、SIZE、OFFSET、SEG 5种 这些操作符把一些特征或存储器地址的一部分作 为数值回送下面分别说明各个操作符的功能1)TYPE 格式:TYPE Variable或label 如果是变量,则汇编程序将回送该变量的以字节数 表示的类型,DB为1,DW为2,DD为4,DQ为8, DT为10 如果是标号,则汇编程序将回送代表该标号类型的 数值:NEAR为-1,FAR为-2 (2)LENGTH 格式为:LENGTH Variable 对于变量中使用DUP的情况,汇编程序将回送分配 给该变量的单元个数而对于其他情况则回送13)SIZE 格式为:SIZE Variable 其汇编的值为LENGTH Variable * TYPE Variable,即 回送直接分配给该变量的总的字节数 (4)OFFSET 格式为:OFFSET Variable或label 汇编程序将回送变量或标号的偏移地址值。

      (5)SEG 格式为:SEG Variable或label 汇编程序将回送变量或标号的段地址值 5.属性操作符 属性操作符主要包括PTR、段操作符、SHORT、THIS 、HIGH和LOW 6种 (1)PTR 格式为:type PTR expression PTR用来建立一个符号地址,但它本身并不分配存储 器,只是用来对已分配的存储地址赋予另一种属性, 使该地址具有另一种类型 (2)段操作符: 用来表示一个标量、变量或地址表达式的段属性例 如,用段前缀指定某段的地址操作数MOV AX,ES: [BX+SI]可见它是用段寄存器地址表达式来表示的 (3)SHORT 用来修饰JMP指令中转向地址的属性,指出转向地址 是在下一条指令地址±127个字节范围之内 (4)THIS 格式为:THIS attribute或type (5)HIGH和LOW 称为字节分离操作符,它接收一个数或地址表达式, HIGH取其高位字节,LOW取其低位字节4.4 伪指令 构成汇编语言源程序的语句主要包括两类: 指令和伪指令 指令是在程序运行期间有CPU执行的,汇编后由对应的 机器代码所取代 伪指令是不可执行的,它只是在源程序汇编期间由汇编 器处理的命令,用来指示汇编器为数据分配内存空间 ,或者为汇编器提供源程序结束或段定义等信息。

      1、 变量定义伪指令 变量定义伪指令用来为数据分配内存空间,并设置相 应内存单元的初始值,其形式为: [变量名] 变量定义符 操作数[,…,操作数] 变量名是一个符号地址,表示其后操作数的首地址, 多个操作数构成一个数组变量名是程序员给出的标 识符,为可选项,给出变量名只是为了按名存取其对 应的内存单元 变量定义符主要包括下列几种: (1)DB(Define Byte):定义字节,后面的每个操作 数占1个字节 (2)DW(Define Word):定义字,后面的每个操作 数占1个字 (3)DD(Define DWord):定义双字,后面的每个操 作数占2个字 (4)DQ(Define QWord):定义四字,后面的每个操 作数占4个字 (5)DT(Define Tbyte):定义十字节,后面的每个操 作数占10个字节 操作数可以为: (1)数值表达式; (2)ASCⅡ码字符串;(3)地址表达式; (4)?(只保存内存空间,未定义初始值); (5)DUP 子句,其格式为: 重复次数 DUP (操作 数,…,操作数),DUP子句可以嵌套 2、符号定义伪指令 符号定义伪指令的基本形式为: 符号名 EQU 表达式 符号名 。

      点击阅读更多内容
      相关文档
      精彩瞬间课件 2024——2025学年人教版(2024)初中美术七年级下册.pptx 【课件】垂线—.垂线段与点到直线的距离 课件湘教版数学七年级下册.pptx 【公开课】《数轴、相反数和绝对值》+第2课时++相反数课件沪科版数学七年级上册.pptx 2024—2025学年统编版高一语文写作素材整理:议论文写作素材+.pptx 2024秋新华师大版数学7年级上册教学课件 4.1 相交线 4.1.1 对顶角.pptx 2024秋新华师大版数学7年级上册课件 2.3 整式 2.3.3 升幂排列和降幂排列.pptx 2024秋新北师大版数学7年级上册教学课件 2 有理数的加减运算 第5课时 有理数的加减混合运算的应用.pptx 2024秋新北师大版数学7年级上册课件 3 1元1次方程的应用 第2课时 盈不足问题.pptx 2024秋新北师大版数学7年级上册教学课件 3.1 第2课时 代数式.pptx 2024秋新华师大版数学7年级上册教学课件 4.2 平行线 4.2.1 平行线.pptx 2024秋新北师大版数学7年级上册课件 3 多边形和圆的初步认识.pptx 2024秋新北师大版数学7年级上册课件 2 1元1次方程的解法 第4课时 1元1次方程的解法——去分母.pptx 2024秋新北师大版数学7年级上册课件 2 有理数的加减运算 第1课时 有理数的加法法则.pptx 2024秋新外研版英语1年级上册教学课件 Module 5 Unit 1.pptx 2024秋新北师大版物理8年级上册课件 第5章 透镜及其应用 整理与复习.pptx 2024秋新华师大版数学7年级上册课件 1.10 有理数的除法.pptx 2024秋新北师大版数学7年级上册课件 2 1元1次方程的解法 第3课时 1元1次方程的解法——去括号.pptx 2024秋新北师大版生物7年级上册课件 3.1 细胞的基本结构和功能(第1课时 光学显微镜的使用).pptx 2024秋新华师大版数学7年级上册课件 1.4 绝对值.pptx 2024秋新华师大版数学7年级上册课件 3.1 生活中的立体图形.pptx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.