书签 分享 收藏 举报 版权申诉 / 132
上传文档赚钱

类型汇编语言程序设计-第三章-课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:2773519
  • 上传时间:2022-05-25
  • 格式:PPT
  • 页数:132
  • 大小:1.05MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《汇编语言程序设计-第三章-课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    汇编语言 程序设计 第三 课件
    资源描述:

    1、第三章 宏汇编语言 学习指导一、学习目标与要求一、学习目标与要求1.正确而熟练地使用地址表达式和数值表达式正确而熟练地使用地址表达式和数值表达式2.熟悉常用的机器指令的指令助记符、功能及使熟悉常用的机器指令的指令助记符、功能及使用格式用格式 3.区别机器指令语句和伪指令语句区别机器指令语句和伪指令语句4.常用的伪指令功能、使用方法常用的伪指令功能、使用方法5. 熟练掌握常用的熟练掌握常用的DOS系统功能调用系统功能调用(1,2,9,10号号调用调用)第三章 宏汇编语言学习指导二、学习重点二、学习重点1.宏汇编语言中的表达式宏汇编语言中的表达式 (1) 符号常量符号常量 (2) 变量变量 (数据

    2、在主存中的存储示意图数据在主存中的存储示意图) (3) 地址表达式地址表达式 (4) 属性定义算符属性定义算符 (PTR,跨段前缀跨段前缀) (5) 属性分离算符属性分离算符 (SEG, OFFSET)第三章 宏汇编语言学习指导二、学习重点二、学习重点2.常用的机器指令语句常用的机器指令语句 (1) 数据传送指令数据传送指令 (2) 算术运算指令算术运算指令 (3) 位操作指令位操作指令 要求掌握各指令的语法规定,功能,最常用指要求掌握各指令的语法规定,功能,最常用指令对标志寄存器的影响。令对标志寄存器的影响。第三章 宏汇编语言学习指导二、学习重点二、学习重点3.常用的伪指令常用的伪指令 (1

    3、) 数据定义伪指令数据定义伪指令 (2) 符号定义伪指令符号定义伪指令 (3) 段定义伪指令段定义伪指令 (4) 假定伪指令假定伪指令 (5) 源程序结束伪指令源程序结束伪指令 (6)汇编地址计数器汇编地址计数器$ 第三章 宏汇编语言学习指导二、学习重点二、学习重点4. 常用的常用的DOS系统功能调用系统功能调用 1,2,9,10 号号 特别注意特殊字符的显示效果:特别注意特殊字符的显示效果: 0AH, 0DH 特别注意特别注意 $ (24H) 的作用的作用。第三章 宏汇编语言学习指导三、学习难点三、学习难点1.变量、地址表达式的使用变量、地址表达式的使用2.常用的机器指令的记忆、各指令的特殊

    4、要求常用的机器指令的记忆、各指令的特殊要求3.汇编地址计数器汇编地址计数器$和假定伪指令和假定伪指令4.正确理解正确理解DOS系统功能调用、系统功能调用、注意特殊字符注意特殊字符的显示效果的显示效果 3.1 宏汇编语言的基本语法 3.2 常用的机器指令语句 3.3 伪指令语句 3.4 常用的系统功能调用 3.5 总结第三章 宏汇编语言3.1 宏汇编语言的基本语法 1. 常量与数值表达式常量与数值表达式(1)(1) 常量常量(2)(2) 数值表达式数值表达式 2. 变量、标号与地址表达式变量、标号与地址表达式(1)(1) 变量变量(2)(2) 标号标号 (3)(3) 地址表达式地址表达式 (1)

    5、 常量常量C C语言中的常量定义:语言中的常量定义:#define pi=3.1415926常量的基本概念:常量的基本概念:汇编时已有确定的数值的量汇编时已有确定的数值的量。用途用途: . 机器指令语句中的立即操作数机器指令语句中的立即操作数; ; . . 也可作存贮器操作数的组成部分也可作存贮器操作数的组成部分( (位移量位移量V)V); . . 在数据定义伪指令语句中给变量赋初值;在数据定义伪指令语句中给变量赋初值; 分类分类:数值常量数值常量、符号常量符号常量1常量与数值表达式符号常量符号常量的定义:的定义:等价伪指令等价伪指令 EQU等号伪指令等号伪指令 = 使用:使用:定义后直接引用

    6、符号名。定义后直接引用符号名。 注意:注意: 符号常量符号常量不分配存贮单元不分配存贮单元,只建立等价代换关系,只建立等价代换关系, 可出现在任何段。可出现在任何段。 用用EQU语句定义的符号常量在该程序中语句定义的符号常量在该程序中不能再重不能再重新赋值新赋值,而用,而用“=”定义的符号常量定义的符号常量可多次重新赋值可多次重新赋值,使用时,以最后一次定义的值为准。使用时,以最后一次定义的值为准。1常量与数值表达式常量例例1例例2例例1: DATA SEGMENT USE16 NUMBER EQU 4; COUNT = 35 TAB DW 70,80H,-5,NUMBER MOV AX,NU

    7、MBER MOV SI, COUNT MOV DX, TAB COUNT = 10 MOV BX, COUNTECX MOV CX, TABECX ; 注意这两条指令的区别注意这两条指令的区别 符号常量特点符号常量特点: 在在汇编期间汇编期间被代换成相应等价的数据;被代换成相应等价的数据; 提高程序的可读性;提高程序的可读性; 便于随时修改程序中的参数。便于随时修改程序中的参数。4符号常量35TAB70, 80H, -5, NUMBERNUMBERCOUNT例2: .386 ;选择的处理器为选择的处理器为386 DATA SEGMENT USE16 ;USE16定义了定义了16 数据段数据段

    8、位的段位的段 SUM DW 0 ;SUM为字变量,初值为为字变量,初值为0 DATA ENDS STACK SEGMENT USE16 STACK 堆栈段堆栈段 DB 100 DUP(0) ;堆栈的大小为堆栈的大小为100个字节个字节 STACK ENDS 符号常量 CODE SEGMENT USE16 ASSUME CS:CODE, SS:STACK, DS:DATA NUM1 EQU 1 NUM2 = 50 START: MOV AX, MOV DS,AX MOV CX,NUM2 ;循环计数器置初值;循环计数器置初值 MOV AX,0 ;累加器置初值;累加器置初值 MOV BX,NUM1

    9、;1BX代码段代码段 NEXT: ADD AX,BX ;(AX)+(BX)AX INC BX INC BX DEC CX ;(CX)-1CX JNE NEXT ;(CX)0转转NEXT MOV SUM,AX ;(CX)=0累加结果累加结果SUM MOV AH,4CH INT 21H CODE ENDS END START;数据段首址数据段首址 DS, DS必须由用户程序自己设置必须由用户程序自己设置;(BX)+2BX;返回返回DOS符号常量NUM2NUM11常量与数值表达式数值表达式(2) 数值表达式数值表达式 数值表达式数值表达式:常量与运算符:常量与运算符(算术运算、逻辑运算、算术运算、逻

    10、辑运算、关系运算关系运算)组成的有确定意义的式子。组成的有确定意义的式子。 算术运算算术运算 +、*、/、MOD(模除模除, 取余数取余数)、 SHR(右移右移)、SHL(左移左移)。 移位的特别说明移位的特别说明:表示将二进制常量右移或左:表示将二进制常量右移或左 移运算符右边所规定的次数移运算符右边所规定的次数(正整正整 数数),所空出的位数均补,所空出的位数均补0。 逻辑运算逻辑运算 逻辑乘:逻辑乘:AND (与与) 逻辑加:逻辑加:OR (或或) 按位加:按位加:XOR (异或异或) 逻辑非:逻辑非:NOT (非非) 关系运算关系运算 相等相等: EQ 不等不等: NE 小于小于: L

    11、T 大于大于: GT 小于等于小于等于:LE 大于等于大于等于:GE (3)数值表达式的运算时机数值表达式的运算时机 汇编期间进行汇编期间进行,运算的结果为一数值常量,运算的结果为一数值常量1常量与数值表达式数值表达式2. 变量、标号与地址表达式变量(1) 变量变量 变量变量:是数据段或附加数据段中一个数据存贮单元的名是数据段或附加数据段中一个数据存贮单元的名字字, 是这个存储单元的地址的符号表示。可代表一批存储是这个存储单元的地址的符号表示。可代表一批存储单元的首址。单元的首址。 变量的属性变量的属性 段属性段属性:定义变量所在段的段首址,当访问该变量时该定义变量所在段的段首址,当访问该变量

    12、时该段首址应在某一段寄存器中,即为段首址应在某一段寄存器中,即为CPU当前可访问段当前可访问段; 偏移地址偏移地址:该变量所占存储单元到所在段的段首址的字该变量所占存储单元到所在段的段首址的字节距离节距离; 类型类型:类型是指存取该变量中的数据所需要的字节数类型是指存取该变量中的数据所需要的字节数, 变量的类型由定义该变量时所使用的伪指令确定变量的类型由定义该变量时所使用的伪指令确定; 变量的定义变量的定义 一般在数据段或附加数据段中使用数据定义伪指令一般在数据段或附加数据段中使用数据定义伪指令 DB、DW、DD、DQ和和DT来定义来定义 格式格式: 变量名变量名 数据定义伪指令数据定义伪指令

    13、 表达式表达式, 功能功能: 定义了一变量,并开辟了由变量属性所决定的定义了一变量,并开辟了由变量属性所决定的 一一 片连续存储区,其存储区片连续存储区,其存储区 所占字节数所占字节数=表达式个数表达式个数*变量的类型。变量的类型。 变量的类型:变量的类型:存储单元的大小,由数据定义伪指令定义。存储单元的大小,由数据定义伪指令定义。 例例2. 变量、标号与地址表达式变量数据定义伪指令数据定义伪指令:DB、DW、DD、DQ、DT指定变量的类型指定变量的类型 .BYTE (字节字节) DB .WORD (字字) DW .DWORD (双字双字) DD .FWORD (3个字个字) DF .QWOR

    14、D (4个字个字) DQ .TBYTE (10个字节个字节) DT 例:例: BUF DB ABCD12EF ; BUF的类型为字节的类型为字节 ARR DW 10,-60,189 ;ARR的类型为字的类型为字 TT DD 0A57BD36H ;TT的类型为双字的类型为双字数据定义伪指令变量定义中的表达式,指定了变量的初值:变量定义中的表达式,指定了变量的初值: (i) 数值表达式数值表达式 (ii) ASCII字符串字符串 (iii) 地址表达式地址表达式(只适用只适用DW和和DD两个伪指令两个伪指令) (iv) ?变量值不确定?变量值不确定 (v)重复子句重复子句: n DUP(表达式表达

    15、式),表示定义了,表示定义了n个数个数据存储单元据存储单元 (vi)上述上述(i)(v)组成的系列,各表达式之间用逗号组成的系列,各表达式之间用逗号隔开。隔开。例例注意注意表达式lDW 地址表达式地址表达式 当地址表达式含变量名时,初值取当地址表达式含变量名时,初值取变量变量EA; 例:例: A DW B A,B为变量,则为变量,则A的初始值为的初始值为B的偏移地址的偏移地址lDD 地址表达式地址表达式 当地址表达式含变量名时,初始值取当地址表达式含变量名时,初始值取变量的变量的EA,变,变量所在段的段首址量所在段的段首址 例例: A DW B B为变量,则为变量,则A的初始值为的初始值为B的

    16、偏移地址,段首址的偏移地址,段首址地址表达式例例: DB 3 DUP(A, 12H) A, 12H, A, 12H, A, 12H DB 2 DUP(A, 2 DUP(3), B) A, 3, 3, B, A, 3, 3, B重复子句:n DUP(表达式)表达式的个数表达式的个数(包括包括(v)中的重复因子中的重复因子n)确定了存储单元的个数。确定了存储单元的个数。 这一片连续的数据存储单元也称数据存储这一片连续的数据存储单元也称数据存储区,其类型由数据定义伪指令确定区,其类型由数据定义伪指令确定在定义一个数据存储区时:在定义一个数据存储区时: 变量仅代表该区的变量仅代表该区的第一个第一个数据

    17、存储单元数据存储单元; 整个数据存储区的类型均与变量相同整个数据存储区的类型均与变量相同; 建立了一个以变量为首址的数据存储区或建立了一个以变量为首址的数据存储区或以变量为名的数组以变量为名的数组表达式(注意)数据段定义的例子例:例:数据段定义如下:数据段定义如下: DATA SEGMENT USE16 A DW M BUF DB AB,0DH,0AH CON EQU 500H B DW 0FFAAH MARK = 100H D DD BUF M DB 2 DUP(1),2 DUP(2,B) DB 123,1 DATA ENDS请画出数据段中的数据在主存中的存储请画出数据段中的数据在主存中的存

    18、储形式。形式。问题:问题:上例中若分别执行语句:上例中若分别执行语句: MOV AL,BUF MOV AL,BUF+2 后后AL的结果?的结果?指令指令 MOV EDX,M 是否正确?是否正确?0CH0H41H42H0DH0FFH0AHDATA0AAH11242H231H42H32H33H BUF A D1 M2H0H B注意注意 伪指令伪指令EQU及及“=”不分配存贮单元;不分配存贮单元; 使用直接寻址方式时,变量的类型必须与使用直接寻址方式时,变量的类型必须与 指令的要求相符;指令的要求相符; 变量的段必须是当前段变量的段必须是当前段。本例中的注意事项2. 变量、标号与地址表达式标号(2)

    19、 标号标号 标号:标号:是机器指令语句存放地址的符号表示,也可以是机器指令语句存放地址的符号表示,也可以是子程序名,即子程序入口地址的符号表示;在代码段中定是子程序名,即子程序入口地址的符号表示;在代码段中定义和引用。义和引用。 标号的属性:标号的属性: 标号的段属性标号的段属性:标号的段属性是指定义该标号所在段:标号的段属性是指定义该标号所在段的段首址。的段首址。 标号的偏移地址标号的偏移地址:标号的偏移地址是指它所在段的段:标号的偏移地址是指它所在段的段首址到该标号所代表存储单元的字节距离。首址到该标号所代表存储单元的字节距离。 标号的类型标号的类型: 分分NEAR(近)和(近)和FAR(

    20、远)两类型,近(远)两类型,近标号在定义该标号的段内使用,远标号无此限制。标号在定义该标号的段内使用,远标号无此限制。3. 变量、标号与地址表达式地址表达式(3)地址表达式地址表达式 地址表达式的定义地址表达式的定义 接触过的地址表达式接触过的地址表达式 地址表达式的属性地址表达式的属性 地址表达式与数值表达式区别地址表达式与数值表达式区别 特殊运算符特殊运算符 (i)类型运算符类型运算符PTR (ii)属性分离算符属性分离算符 使用地址表达式的注意事项使用地址表达式的注意事项地址表达式的定义 地址表达式地址表达式是由变量、标号、常量、是由变量、标号、常量、寄存器寄存器(名加方括号名加方括号)

    21、及一些运算符及一些运算符(数值表数值表达式的运算符和达式的运算符和特殊运算符特殊运算符)所组成的有意所组成的有意义的式子。义的式子。 接触过的地址表达式接触过的地址表达式接触过的地址表达式: 直接寻址方式、寄存器间接寻址方式、直接寻址方式、寄存器间接寻址方式、 变址方式、基址加变址方式变址方式、基址加变址方式例如:例如: MOV AX,BUFBX+SI MOV AL,BUF+2 MOV AL, BUFBX MOV WORD PTR DS:1000H, 3000H ;源操作数为地址表达式;源操作数为地址表达式;目的操作数为地址表达式;目的操作数为地址表达式 地址表达式的结果是一偏移地址,因此具备

    22、地址表达式的结果是一偏移地址,因此具备段属性段属性、偏移地址偏移地址和和类型类型。 问题:问题:变量定义中,给变量置初始值的地址变量定义中,给变量置初始值的地址表达式可以含寄存器符号加方括号吗?表达式可以含寄存器符号加方括号吗? 例如变量定义:例如变量定义: A DW BX 是否正确是否正确?地址表达式的属性 地址表达式的结果:是一偏移地址,它具有段属地址表达式的结果:是一偏移地址,它具有段属 性、偏移地址和类型,性、偏移地址和类型,(一个表达式中一般只出现一一个表达式中一般只出现一 个变量或标号个变量或标号) 数值表达式的结果:只有大小,无属性。数值表达式的结果:只有大小,无属性。 在特殊情

    23、况下在特殊情况下(没有用到寄存器、不作为地址访没有用到寄存器、不作为地址访 问问),地址表达式的值也可能仅表示一个数值,地址表达式的值也可能仅表示一个数值(没没 有属性有属性)。例例:在变量在变量/常量定义中给变量常量定义中给变量/常量赋值,常量赋值, 或在或在OFFSET BUF + 2语句中语句中) NUM DW BUF1 - BUF2 (此时可以有多个变量或标号此时可以有多个变量或标号)地址表达式与数值表达式区别 格式格式: 类型类型 PTR 地址表达式地址表达式 类型可以是类型可以是BYTE、WORD、DWORD、FWORD、NEAR、FAR 功能功能: 用来指明紧跟其后的地址表达式的

    24、类型用来指明紧跟其后的地址表达式的类型属性,但保持它原来的段属性和偏移地址属性不变属性,但保持它原来的段属性和偏移地址属性不变或者使它们临时兼有与原定义所不同的类型属性。或者使它们临时兼有与原定义所不同的类型属性。 作用作用 特殊运算符类型运算符PTR例例 作用作用1:使语句中类型模糊的操作数类型变得明确:使语句中类型模糊的操作数类型变得明确 ADD BYTE PTR SI,5 ADD WORD PTR SI,5 作用作用2:临时改变某一操作数地址的类型,使得类:临时改变某一操作数地址的类型,使得类型不一致的两地址变为一致。型不一致的两地址变为一致。 作用作用3:PTR运算符还可以与运算符还可

    25、以与EQU或等号或等号“”等等伪指令连用,用来将同一存储区地址用不同类型伪指令连用,用来将同一存储区地址用不同类型的变量或标号来表示。的变量或标号来表示。 注意这两条注意这两条语句的区别语句的区别例例例例类型运算符PTR的三个作用 例例 DATA1 DW 1122H,3344H MOV AL,BYTE PTR DATA1; 问题问题1:将最后一条语句改为:将最后一条语句改为: MOV EAX, DWORD PTR DATA1 执行该语句后,执行该语句后,(EAX)=? 比较比较PTR的作用与的作用与C语言的强制类型转换的不同点?语言的强制类型转换的不同点? 问题问题2:上述最后一条指令中,改变

    26、了:上述最后一条指令中,改变了DATA1的类型的类型是否从此是否从此DATA1变为变为BYTE类型?类型? 问题问题3:是否可以用该运算符改变寄存器的类型?:是否可以用该运算符改变寄存器的类型? MOV EAX, DWORD PTR SI将变量将变量DATA1临时临时改为字节类型改为字节类型PTR作用2 例:PTR作用3 例: 例:分析下列程序的执行结果例:分析下列程序的执行结果 DATA1 DW 1122H,3344H DATA2 EQU BYTE PTR DATA1 MOV AL,DATA2 MOV BX,DATA1 用用PTR算符建立了一个与变量算符建立了一个与变量DATA1有相同段有相

    27、同段 首址和偏移地址的变量首址和偏移地址的变量DATA2,但它的类型为,但它的类型为BYTE22H11H44H33HDATA1DATA2;22AL;1122BX例例: 阅读下列程序段,指出其中的错误语句阅读下列程序段,指出其中的错误语句 DATA SEGMENTUSE16NUM DB 11H,22H,33H,44H LEN EQU $ - NUM DATA END MOV AX,NUM MOV EAX,DWORD PTR NUM MOV SI,OFFSET NUM ADD 2SI,LEN MOV BYTE PTR 2SI,A INC SI DEC BYTE PTRSI 定义符号常量定义符号常量

    28、LEN,其值为以变量,其值为以变量NUM为为首址的数据存储区所占的字节数首址的数据存储区所占的字节数类型不一致,出错类型不一致,出错 临时改临时改NUM双字双字, 注意与注意与C语言强制类型转换的区别语言强制类型转换的区别(NUM)44332211HEAXNUM的的EASI 目的操作数类型不明确,出错目的操作数类型不明确,出错OPDSI2NUM2,41HNUM2PTR指定指定OPD类型为字节类型为字节 类型不明确,出错类型不明确,出错 OPD-SINUM,由,由PTR指定为字节类型指定为字节类型注意注意类型运算符PTR 例:a. PTR临时赋予地址表达式的新类型只能临时赋予地址表达式的新类型只

    29、能在本语句中有效。在本语句中有效。b. 不带方括号的寄存器符号不是地址表达不带方括号的寄存器符号不是地址表达式,不能用式,不能用PTR改变寄存器的类型改变寄存器的类型使用PTR注意事项: 格式格式:属性分离算符:属性分离算符 变量或标号变量或标号 功能功能:属性分离算符可分离出变量、标号的:属性分离算符可分离出变量、标号的段、段、 偏移地址、类型偏移地址、类型的属性值。运算结果为数值常量。的属性值。运算结果为数值常量。 a.取段址算符取段址算符SEG 格式格式:SEG 功能功能:分离出其后变量或标号的段首址。:分离出其后变量或标号的段首址。 b.取偏移算符取偏移算符OFFSE 格式格式:OFF

    30、SET 功能功能:分离出其后变量或标号的偏移地址。:分离出其后变量或标号的偏移地址。例例特殊运算符属性分离算符属性分离算符的例子 DATA SEGMENT USE16 A DW 50,100, B DB ABC DATA ENDS MOV AX,SEG B ; MOV DS,AX MOV BX,OFFSET A; MOV DX,2BX ;0000ABC100 AMOV AX , DATAA的的EABX100DX50 B(1)指令中的地址表达式不允许出现不带方括号指令中的地址表达式不允许出现不带方括号 的寄存器符号;的寄存器符号;例例: MOV AX,SI+4 错误语句,错误语句, MOV AX

    31、,SI+4 正确语句正确语句(2)在定义变量时,其后表达式不能带寄存器在定义变量时,其后表达式不能带寄存器 符号和方括号;符号和方括号; 例例: A DW SI+4,SI+4 错误错误(3)数值表达式中如果有变量和标号,均是取数值表达式中如果有变量和标号,均是取其其EA参加运算。参加运算。例例使用地址表达式注意事项请指出下列程序段中的错误:请指出下列程序段中的错误: DW1122H,3344H MOV SI,OFFSET A MOV AX,A MOV BX,SI MOV DL,2SI MOV 4SI,55H改为:改为:MOV BYTE PTR 4SI,55HMOV WORD PTR 4SI,5

    32、5H例3.2 常用的机器指令语句3.2.1 80X86指令集及其特点 3.2.2 数据传送指令3.2.3 算术运算指令3.2.4 位操作指令3.2.1 80X86指令集及其特点 1. 80X86指令集指令集 8086 100条基本指令条基本指令 80386 170条指令条指令 Pentium 300多条多条2. 特点特点 原原8086的的16位操作指令都可扩展支持位操作指令都可扩展支持32位操作数;位操作数; 原有原有16位存储器寻址的指令都可以使用位存储器寻址的指令都可以使用32位的寻址位的寻址方式;方式; 在实方式和虚拟在实方式和虚拟8086方式中段的大小只能为方式中段的大小只能为64KB

    33、,只有在保护方式下才使用只有在保护方式下才使用32位段。位段。3.分类分类 (1)数据传送指令数据传送指令一般数据传送指令一般数据传送指令 堆栈操作指令:堆栈操作指令: PUSH、POP、PUSHF、POPF标志传送命令:标志传送命令: SAHF、LAHFI/O指令指令地址传送指令地址传送指令(2)算术运算指令算术运算指令(3)位操作指令位操作指令(4)串操作指令串操作指令(5)程序控制指令程序控制指令(6)处理机控制指令处理机控制指令标志的操作指令:标志的操作指令:STD、CLD;STI、CCIl怎样记住常用的指令?怎样记住常用的指令? 格式、功能、特殊规定格式、功能、特殊规定,对,对标志寄

    34、存器标志寄存器的影响的影响3.2.1 80X86指令集及其特点4.再次强调的问题再次强调的问题大多数双操作数的指令,具有相同的语句格式和操大多数双操作数的指令,具有相同的语句格式和操作规定作规定格式:格式: 标号标号: 操作符操作符 OPD,OPS ;注释;注释指令:指令:数据传送指令;数据传送指令; 算术运算指令算术运算指令 部分位操作指令;部分位操作指令; 串操作指令串操作指令操作规定:操作规定: 目的操作数与源操作数应有相同的类型。目的操作数与源操作数应有相同的类型。 目的操作数不能是立即操作数。目的操作数不能是立即操作数。 操作结束后,运算结果送入目的地址中,源操作操作结束后,运算结果

    35、送入目的地址中,源操作 数并不改变。数并不改变。 源操作数和目的操作数不能同时为存储器操作数。源操作数和目的操作数不能同时为存储器操作数。 3.2.1 80X86指令集及其特点(2)某些单操作数指令也有相同的语句格式和操作规某些单操作数指令也有相同的语句格式和操作规定,定,l格式:格式:标号:标号: 操作符操作符 OPD ;注释;注释l指令:指令:算术运算和位操作算术运算和位操作l操作规定:操作规定: 操作对象为目的地址中的操作数,操作结束操作对象为目的地址中的操作数,操作结束 后,将结果送入目的地址。后,将结果送入目的地址。 操作数不能是立即操作数。操作数不能是立即操作数。3.2.180X8

    36、6指令集及其特点3.2.2 数据传送指令1.一般数据传送指令一般数据传送指令 (1) 传送指令传送指令(2) 数据交换指令数据交换指令 (3) 查表转换指令查表转换指令XLAT 2.地址传送指令地址传送指令 (1) 传送偏移地址指令传送偏移地址指令一般数据传送指令 传送指令A. 一般传送指令一般传送指令 MOV 格式格式:MOV OPD, OPS 功能功能:(OPS)OPD (字或字节字或字节) 说明说明: a. 不能实现存贮单元之间的直接数据传送,不能实现存贮单元之间的直接数据传送, OPS、OPD不能同时采用存贮器寻址方式。不能同时采用存贮器寻址方式。例例:将字变量:将字变量BUF0中的内

    37、容传送至字变量中的内容传送至字变量BUF1中,只中,只能用以下方式:能用以下方式:MOV AX , BUF0MOV BUF1 , AX图图一般传送指令 MOV MOV指令所允许的数据传送路径及类型指令所允许的数据传送路径及类型AH,ALBH,BLCH,CLDH,DLEAX,EBXECX,EDXESI,EDIEBP,ESPAX,BXCX,DXSI,DIBP,SP主主存存储储器器立即数立即数CS DS,ES,FS,GS,SS双字类型双字类型双字类型双字类型字节类型字节类型字类型字类型字类型字类型字节类型字节类型双字类型双字类型字类型字类型b. 不能向不能向CS送数据;送数据;IP不能在任何语句中出

    38、现。不能在任何语句中出现。例:例:“MOV CS , AX”、“MOV AX,IP”均为错误语句。均为错误语句。c. OPS和和OPD必须类型一致。必须类型一致。例:例:MOV AX , CL 为错误语句。为错误语句。d. 立即数不能直接传递至数据段或者附加数据段寄存器立即数不能直接传递至数据段或者附加数据段寄存器中;中;问题:问题:前面说过指令前面说过指令 MOV ECX, BL 是错误的,是错误的,若确实想把若确实想把BL寄存器的有符号数传送到寄存器的有符号数传送到ECX?一般数据传送指令 传送指令一般数据传送指令 传送指令B. 有符号数传送指令有符号数传送指令 格式格式: MOVSX O

    39、PD,OPS (move with sign-extend) 功能功能: 将将源操作数的符号向前扩展源操作数的符号向前扩展成与成与 目的操作数相同的数据类型目的操作数相同的数据类型再送入目的地址。再送入目的地址。 MOVSX ECX, BLC. 无符号数传送指令无符号数传送指令 格式格式:MOVZX OPD,OPS (move with zero-extend) 功能功能:将源操作数的高位全部:将源操作数的高位全部补补0,扩展成与,扩展成与 目的操作数相同的数据类型目的操作数相同的数据类型再送入目的地址中。再送入目的地址中。 例例例例 阅读下列程序段,指出运行结束后,阅读下列程序段,指出运行结

    40、束后,EAX、EBX的值。的值。 BYTE0 DB 0A8HDWORD0DD 11111111H MOVSX EAX,BYTE0MOV EBX,DWORD0ADD EBX,EAX 运行结束后,运行结束后,(EAX)0FFFFFFA8H, (EBX)111110B9H有符号数传送指令一般数据传送指令 数据交换指令 A. 一般数据交换指令一般数据交换指令格式格式:XCHG OPD,OPS (exchange)功能功能:(OPD) (OPS),可作八位或十六位交换。,可作八位或十六位交换。例:例:XCHG AX,DI执行前:执行前:(AX)=0001H (DI)=0FFFFH执行后:执行后:(DI)

    41、=0001H (AX)=0FFFFH一般数据传送指令 查表转换指令B. 查表转换指令查表转换指令XLAT (table look-up translation)格式:格式:XLAT OPS 或者或者 XLAT 不带操作数不带操作数功能:功能:(BX+AL) AL或或(EBXAL)AL将将(BX)或或(EBX)为首址,为首址,(AL)为位移量的字节存为位移量的字节存贮单元中的数据贮单元中的数据AL例例1例例2例:将数值将数值4转换成字符转换成字符4使用查表转换指令的思使用查表转换指令的思想想30H31H32H33H34H35H46HTAB AL04HBX/ /EBXTAB的的EA查表转换指令XL

    42、AT例:阅读程序例:阅读程序 ASCII DB 0123456789ABCDEFARR DB 4,0BH,0EH,9OUT1 DB 0,0,0,0,$ MOV BX,OFFSET ASCII MOV DI,OFFSET ARR MOV BP,OFFSET OUT1 MOV CX,4NEXT:MOV DL,DI MOV DH,0MOV SI,DXMOV AL, BXSIMOV DS:BP,ALINC DIINC BPDEC CXJNE NEXT30H31H32H 42H 45H46H40BH 0EH 9 0000$ ASCIIARROUT1BXDIBP修改:修改:MOV AL,DIXLAT AS

    43、CIIXLAT指令简化了变址寻址和基址加指令简化了变址寻址和基址加变址寻址方式的使用。变址寻址方式的使用。查表转换指令XLAT地址传送指令 传送偏移地址指令 传送偏移地址指令传送偏移地址指令格式格式:LEA OPD,OPS (load effective address)功能功能:按:按OPS的寻址方式计算的寻址方式计算EA,将,将EA送入指送入指 定的通用寄存器定的通用寄存器 注意注意:a.OPD一定要是一定要是16位位/32位的位的通用寄存器通用寄存器b.OPS一定是一个一定是一个存贮器地址存贮器地址,可是寄存器间接寻址、,可是寄存器间接寻址、 基址加变址、变址寻址、直接寻址。基址加变址、

    44、变址寻址、直接寻址。c.如果偏移地址为如果偏移地址为32位而位而OPD为为16位寄存器,取低位寄存器,取低16位位OPD;d.如果偏移地址为如果偏移地址为16位而位而OPD为为32位寄存器,高位寄存器,高16位补位补0后后OPD 例例1例例2例:MOV BX,OFFSET ARRMOV SI,OFFSET PLUSMOV POIN,OFFSET MINUSLEA DI, 4SI其中其中 ARR, PLUS, MINUS均为变量均为变量传送偏移地址指令 LEA BX,ARR LEA SI,PLUS LEA POIN,MINUS MOV DI, OFFSET 4SI例例 .386DATA SEGM

    45、ENT USE16 BUF DB ABCDEFNUM DW 72,5,100HPOIN DW 0DATA ENDS MOV ESI, OFFSET NUM LEA ESI, NUMMOV AX, ESI LEA AX, ESILEA DI, ESI4LEA POIN, BUFMOV POIN, OFFSET BUFMOV EBX, 12345678HLEA DX, EBX+4321HLEA EAX, EBX+4321HLEA ECX, BX+4321H 传送偏移地址指令;将;将NUM的的EA即即6ESI;与上一条语句等效,;与上一条语句等效,6ESI;(ESI)72AX;将将ESI所指的存储单

    46、元的所指的存储单元的EA;即即6AX;取以取以NUM为首址的第三个字存为首址的第三个字存;储单元的;储单元的EA即即10DI;错误语句,因为;错误语句,因为OPD不是寄存器不是寄存器;将;将BUF的的EAPOIN;将低;将低16位位9999HDX;将;将12349999HEAX;将高;将高16位补位补0后,后,;00009999HECX3.2.3算术运算指令 1. 加运算指令加运算指令 ADD、INC2. 减运算指令减运算指令 SUB、DEC、NEG、CMP3. 乘运算指令乘运算指令 IMUL、MUL 4. 符号扩展指令符号扩展指令 CBW、CWD、CWDE、CDQ 5. 无符号乘指令无符号乘

    47、指令 MUL 6. 除运算指令除运算指令 IDIV、DIV 算术运算指令加运算指令 加指令加指令 语句格式语句格式:ADD OPD,OPS 功功 能能: (OPD)(OPS)OPD该指令该指令对标志寄存器的标志位对标志寄存器的标志位有影响。有影响。例:例: ADD AX,-7FFFH执行前:执行前: (AX)0FFFDH (即即-3的补码的补码执执 行:行: (AX)-7FFFH补补0FFFDH8001H 7FFEHAX执行后:执行后: (AX)7FFEH两负数相加,结果为正,运算产生了两负数相加,结果为正,运算产生了溢出溢出,结果是错误的,结果是错误的,因而因而OF1。又由于从最高位向前产生

    48、了。又由于从最高位向前产生了进位进位,CF1。 1算术运算指令减运算指令减法指令减法指令 格式格式:SUB OPD,OPS (subtract) 功能功能:(OPD) (OPS) OPD例:例:SUB AX,5 ;(AX) 5 AX SUB AX,CX ;(AX) (CX) AX比较指令比较指令 格式格式:CMP OPD,OPS (compare) 功能功能:(OPD) (OPS) 比较目的操作数与源操作数,然后比较目的操作数与源操作数,然后根据比较的根据比较的结果结果设置标志位设置标志位,但该,但该结果并结果并不存不存入目的地址入目的地址 例:例:CMP AX,-2JGE LMOV DX,A

    49、X减运算指令求补指令求补指令 格式格式:NEG OPD (twos complement negation) 功能功能:(OPD) OPD 即即0-(OPD) OPD例例: NEG AX执行前:执行前:(AX)=0FFFFH执行:执行: (AX)=0FFFFH=0001HAX结果:结果: (AX)=0001H例例: 指出下面程序段执行后所完成的功能指出下面程序段执行后所完成的功能B: CMP AX,0 JGE EXIT NEG AXEXIT: 求求(AX)的绝对值的绝对值AX减运算指令算术运算指令乘运算指令(1) 有符号数和无符号数的区别有符号数和无符号数的区别复习复习 .数的表示范围数的表示

    50、范围不一样不一样 .比较大小比较大小的标准不一样的标准不一样 例:对于例:对于8位位16进制数,比较进制数,比较80H和和0A8H的大小的大小.判断判断运算结果是否正确运算结果是否正确的标准也不一样的标准也不一样, 例例: 对有符号数对有符号数, 加、减法运算结果只有加、减法运算结果只有OF0时才是时才是正确的;对于无符号数,只有正确的;对于无符号数,只有CF0时,运算结果才是时,运算结果才是正确的正确的 .符号扩展符号扩展不一样,有符号数的补码最高位向左延伸,得不一样,有符号数的补码最高位向左延伸,得到的仍是该数的补码。到的仍是该数的补码。 .常见的无符号数:常见的无符号数:操作数地址、循环

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:汇编语言程序设计-第三章-课件.ppt
    链接地址:https://www.163wenku.com/p-2773519.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库