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

类型汇编语言-南京航空航天大学课程课件.ppt

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

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

    特殊限制:

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

    关 键  词:
    汇编语言 南京航空航天 大学 课程 课件
    资源描述:

    1、第第4章章 汇编语言程序设计汇编语言程序设计n 4.1 程序设计语言概述程序设计语言概述n 4.2 汇编语言的程序结构与语句格式汇编语言的程序结构与语句格式n 4.3 汇编语言的伪指令汇编语言的伪指令n 4.4 汇编语言程序设计方法汇编语言程序设计方法 n 4.5 模块化程序设计技术模块化程序设计技术n 4.6 综合应用程序设计举例综合应用程序设计举例n 4.7 汇编语言与汇编语言与C/C+C/C+语言的混合编程语言的混合编程第第4章章 汇编语言程序设计汇编语言程序设计本章重点:本章重点:源程序基本结构 汇编语言的语法规则(基本语法及常用伪指令)汇编语言程序设计方法16位实模式程序设计。程序程

    2、序:是一组为完成某种功能而按一定顺序(由算法确定)编排的指令序列指令序列。汇编语言汇编语言:具有执行速度快、易于实现对硬件控制等优点,是实时控制等应用软件经常使用的程序设计语言。第第4章章 汇编语言程序设计汇编语言程序设计 南京航空航天大学 电子信息工程学院 4.1 程序设计语言概述机器语言机器语言:当指令和数据都用二进制代码表示时,计算机 能够直接识别与执行,因而称之为机器语言。高级语言:高级语言:是完全独立于机器的通用语言,效率低。面向过程、面向对象,必须译成机器语言。汇编语言汇编语言:是将机器指令符号化了的编程语言。是将机器指令符号化了的编程语言。是一种采用助记符表示的、面向CPU指令系

    3、统的 程序设计语言。1.3种语言机器语言程序(目标代码)高级语言源程序编译或解释编译或解释(可由编译程序完成)(可由编译程序完成)汇编语言源程序汇编汇编(可由汇编程序完成)可由汇编程序完成)第第4章章 汇编语言程序设计汇编语言程序设计 南京航空航天大学 电子信息工程学院能够利用硬件系统的特性能够利用硬件系统的特性(寄存器、标志、中断系统等)直接对位/字节/字/寄存器/存储单元/I/O端口进行处理。采用采用CPU指令系统提供的各种寻址方式编制程序指令系统提供的各种寻址方式编制程序 目标代码占用内存少,执行速度快,效率高,具有实时性。用汇编语言编写程序的优点:优点:常用于编写系统软件、实时通信与控

    4、制程序、常用于编写系统软件、实时通信与控制程序、I/O接口驱动接口驱动 等。等。缺点:缺点:依赖于机器硬件,通用性和移植性较差。依赖于机器硬件,通用性和移植性较差。2.汇编程序(Assembler)(1)汇编程序的作用 将源程序翻译成机器语言程序;按用户要求自动分配存储区域(如程序区、数据区、堆栈区等);自动将各种进制 2#数;将字符 ASCII码;计算表达式的值;自动对源程序进行检查,指出语法错误 (如,非法格式、未定义的助记符和标号、漏掉操作数等)南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计汇编程序提供汇编语言源程序的所有语法规则汇编程序提供汇编语言源程序

    5、的所有语法规则,常用的有:ASM 基本汇编,占内存少;MASM 宏汇编,除ASM功能外,还支持:宏操作、条件汇编、结构、记录等高级宏汇编语言功能。有各种版本,并不断在升级中;TASM(Turbo Assembler)Borland公司的汇编编译器,性能同MASM。OPTASM(Optimizing Assembler)一种优化的MASM(2)汇编程序分类3.汇编语言程序的上机与处理过程Microsoft公司公司 南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计上机环境上机环境硬件硬件系统软件系统软件 应用软件应用软件操作系统:操作系统:DOS系统编辑器:编辑器:E

    6、DIT.exe编译程序:编译程序:MASM.exe连接程序:连接程序:LINK.exe调试程序:调试程序:DEBUG.exe用户开发的程序:用户开发的程序:ABC.exe等CPU、存储器、存储器(ROM、RAM)、I/O接口、输入、输出设备接口、输入、输出设备第第4章章 汇编语言程序设计汇编语言程序设计编辑源程序编辑源程序 EDIT ABC.ASM汇编源程序汇编源程序 MASM ABC.ASM形成目标程序形成目标程序 ABC.OBJ连接目标程序连接目标程序 LINK ABC.OBJ有连接错误信息有连接错误信息?形成可执行程序形成可执行程序 ABC.EXE装入可执行程序到内存装入可执行程序到内存

    7、,并执行并执行D:subABC下一程序下一程序用用DEBUG 调试可执行程序调试可执行程序D:sub DEBUG ABC.EXE找到原因找到原因YNYNNYN有汇编错误信息有汇编错误信息?Y运行结果正确运行结果正确?用用DEBUG调试程序查错调试程序查错?汇编语言上机过程汇编语言上机过程D:EDIT ABC.ASMD:MASM ABC 有语法错,回EDIT下修改程序D:LINK ABC 有错,回EDIT下修改程序D:ABC 运行结果错,回EDIT下改程序 或在DEBUG下调试,找原因。D:DEBUG ABC.exe第第4章章 汇编语言程序设计汇编语言程序设计语法语法:语句和程序结构必须遵循的规

    8、则语句和程序结构必须遵循的规则4.2 汇编语言的程序结构与语句格式 4.2.1 汇编语言源程序的框架结构源程序应按编译器源程序应按编译器(如,如,MASM汇编程序汇编程序)能够理解的语法编写能够理解的语法编写每段由伪指令SEGMENT开始,至ENDS结束(完整段定义)。代码段:程序的主体(必不可少的段必不可少的段)。堆栈段:在内存建立堆栈区,以存放中断或子程序调用时 的断点地址、各模块间传递的参数等。数据段和附加数据段:在内存中建立适当容量的工作区,以存放程序需要的常数或变量等。(1)源程序由若干个逻辑段组成程序中段的顺序:数据段、堆栈段定义在前,代码段在后。程序中段的顺序:数据段、堆栈段定义

    9、在前,代码段在后。(变量应先定义;汇编过程遇到变量时需要知道变量的属性)源程序的结构特点:源程序的结构特点:按逻辑段组织源程序。包括代码段、堆栈段、数据段等。第第4章章 汇编语言程序设计汇编语言程序设计程序结构程序结构(P133);-段名1SEGMENT;一个段的开始语句1语句2 段名1ENDS;一个段的结束;-段名2SEGMENT;另一个段的开始段名2ENDS;另一个段的结束;-;其它段;-ENDSTART;源代码结束源程序以源程序以END结束,它通知汇编程序停止汇编。结束,它通知汇编程序停止汇编。START标号为程序运行时的起始地址。标号为程序运行时的起始地址。第第4章章 汇编语言程序设计

    10、汇编语言程序设计程序中段的使用:程序中段的使用:u 8086/8088/80286允许同时使用4种类型的段:代码段代码段 CS、堆栈段、堆栈段 SS、数据段、数据段 DS 和附加数据段和附加数据段 ES u 80386/80486和Pentium系列允许同时使用6种段:以上以上4个段个段 FS和和GS两个附加数据段两个附加数据段 一个源程序中每种类型的段可不止使用一个,如:一个源程序中每种类型的段可不止使用一个,如:n个数据段。个数据段。(2)ASSUME伪指令 在代码段起始处用ASSUME伪指令说明说明各个段Reg与逻辑段 的关系,并在程序起始处设置段设置段Reg的初值的初值(代码段CS除外

    11、)。(3)每段由若干语句行组成 每行只有一条语句且不能超过128个字符,允许有后续行。u 在8086/8088和实地址模式实地址模式下,每段的最大长度均为64KB;u 在保护模式保护模式下,80286允许每个段的最大长度为16MB,80386Pentium系列CPU允许4GB。END通知汇编程序停止汇编通知汇编程序停止汇编,START标号为程序运行时的起始地址。标号为程序运行时的起始地址。第第4章章 汇编语言程序设计汇编语言程序设计终止当前程序使其正确返回到终止当前程序使其正确返回到DOS状态的常用方法有:状态的常用方法有:u 将源程序中的主程序定义为FAR,其最后一条指令为RET;u 在主程

    12、序的开始处使用3条指令:PUSH DS;保存程序段前缀程序段前缀PSP的段地址MOV AX,0 ;保存PSP的0偏移地址PUSH AX;注注:所保存地址保存地址中内容是INT 20H(4)每条语句由4个字段构成。各字段间用空格分开。(5)源程序中应设有返回设有返回DOS的指令语句,的指令语句,使程序执行完后能够 返回DOS系统的命令接受状态。标准序法 使用DOS的4CH号功能调用u 不定义主程序为FAR过程并去掉上面3条指令;u 在代码段结束(CODE ENDS)之前增加两条语句:MOV AH,4CH;功能号4CHAHINT21H;软中断调用MASM从从5.0版开始支持简化段定义,它通过伪指令

    13、版开始支持简化段定义,它通过伪指令EXIT返回返回DOS。当程序执行当程序执行到到RET,这两这两个地址会弹个地址会弹出出送送IP、CS第第4章章 汇编语言程序设计汇编语言程序设计u 源程序与源程序与PC DOS的接口的接口 汇编语言源程序(.ASM)经过汇编转变为目标程序(.OBJ),当用链接程序对其进行链接和定位时,操作系统为用户程序:建立1个256字节的程序段前缀区(PSP)INT 20HPSP起始0000H定位用户程序PSP用于存放用户程序信息,包括:在在PSP的开始处的开始处(偏移地址偏移地址0000H)安排了一条安排了一条INT 20H 软中断指令软中断指令 INT 20H功能:系

    14、统返回到DOS管理状态据此特征,用户编写程序时必须:在程序执行完毕后,能够转到在程序执行完毕后,能够转到PSP起始处起始处执行执行INT 20H指令。指令。定位用户程序设置DS和ES的值,使之指向PSP的起始(DS/ES PSP的段地址的段地址)以用户程序第1条指令的地址设置CS、IP;以堆栈段地址设置SS、SP。运行用户程序 表明:表明:DS/ES在用户程序中应重新设置在用户程序中应重新设置第第4章章 汇编语言程序设计汇编语言程序设计4.2.2 汇编语言的语句1.语句的种类与格式(1)语句的种类语句:语句:汇编语言源程序的基本组成单位,规定一个基本操作。源程序源程序:语句序列,完成某个特定的

    15、操作任务。指令语句 可执行语句,对应可执行语句,对应CPU指令系统规定的一条指令指令系统规定的一条指令。三种基本语句:三种基本语句:指令语句、伪指令语句和宏指令语句 汇编时,汇编程序为之产生一一对应的机器目标代码。例:MOV DS,AX;双字节指令,机器码为双字节指令,机器码为8EH、D8H 伪指令语句 由伪指令构成的说明语句由伪指令构成的说明语句(不不可执行可执行),可在任何段内。,可在任何段内。汇编时,指示汇编程序如何汇编源程序,如分配存储单元、将程序分段等,本身不产生目标代码,本身不产生目标代码,CPU不执行。不执行。第第4章章 汇编语言程序设计汇编语言程序设计例:SEGMENT/END

    16、S ;将程序分段信息提供给汇编程序,以不同 ;的名字来说明是数据段、代码段、堆栈段例:MESSAGE DB THIS IS A SAMPLE PROGRAM.;定义变量MESSAGE在数据段DATA中的存放形式 ;汇编时,汇编程序将MESSAGE定义为一个字节类 ;型数据区的首地址,并按字节存储字符串。宏指令语句 是是以某个以某个宏宏名字定义的一段指令序列名字定义的一段指令序列汇编时,程序中有宏指令语句的地方被展开成相应的指令序列。宏指令语句宏指令语句是一般性指令语句的扩展。是一般性指令语句的扩展。例:SHIFTMACRO;定义宏指令语句SHIFT MOV CL,4 SALAL,CL ENDM

    17、 南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计 标号和名字 为指令单元和伪指令所起的符号名称,是自定义的标识符。为指令单元和伪指令所起的符号名称,是自定义的标识符。u 命名必须符合汇编语言对命名必须符合汇编语言对标识符标识符的规定:的规定:以字母开头,由字母(不区分大小写)、数字(09)及部分特殊 字符(?$和下划线_等)组成的字符串,长度不超过31。不能是有特定意义的保留字,如寄存器名AL和助记符等。u 标号标号 后必须有冒号,代表指令所在存储单元的符号地址。在程序中作为JMP、LOOP等指令的转移目标。u 名字名字 用于定义常量、变量、过程、段名等,指示所

    18、定义变量、过程以及段的起始地址。(2)语句的格式指令语句的一般格式:标号:前缀 指令助记符 操作数;注释 伪指令语句的格式:名字伪指令定义符 操作数;注释 表示可选表示可选 南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计 助记符、定义符 规定指令或伪指令的操作功能,规定指令或伪指令的操作功能,语句中唯一不可缺少的部分语句中唯一不可缺少的部分u 指令助记符,汇编程序将其翻译成机器代码。MOV AX,100H ;B8 00 01u 伪指令定义符,汇编程序根据其要求的功能进行处理。data SEGMENT ;data与某个段地址对应 string DB Tsinghu

    19、a ;定义string为字节存储区的起始地址u 前缀仅可出现在指令助记符前前缀仅可出现在指令助记符前(如,REP及段超越前缀等)u 指令语句中的指令语句中的操作数操作数提供操作对象、存放位置、访问形式。操作数可以是1个、2个或0个,2个时用逗号,分开。(INC BX;MOV AX,DATA;RET)u 伪指令语句中操作数伪指令语句中操作数的格式和含义随伪操作指令各有不同。操作数 南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计 注释u 汇编程序对“;”之后的内容不做处理。u 注释对汇编不起任何作用,注释对汇编不起任何作用,不对应于任何机器码,仅增强 源程序的可读性

    20、。u 操作数的表现形式有4种 常量操作数:如,34 等。寄存器操作数:如,AX 等。存储器操作数:如,0100H 等。表达式操作数:如,BX+2、OFFSET NUM1 等。以以“;”开始,对程序的功能加以说明。开始,对程序的功能加以说明。第第4章章 汇编语言程序设计汇编语言程序设计2.语句中的操作数(4种)(1)常量操作数 汇编时值已确定且程序运行期间不变化汇编时值已确定且程序运行期间不变化(立即数立即数/端口地址端口地址)整型数值常量 用相应的后缀来定义:2#(B)、10#(D)、8#(Q)、16#(H)16#:必须以数字开头以数字开头来区别H结尾的字符串(AH,abcdH)即,最高位为字

    21、母AF时,必须加前缀 0。字符串常量 用单引号括起来的一个或多个字符,值为每个字符的ASCII码值。例:2=32H,12=3132H,A=41H,AB=4142H MOV AL,G ;AL G的ASCII码值符号常量 在程序中用标识符形式表示的常量,以提高程序的通用性通用性。(2)寄存器操作数 操作数是寄存器名。操作数是寄存器名。如:AX、SI等,MOV AL,05。(程序中程序中,字符串常量与整型数值常量可交替使用字符串常量与整型数值常量可交替使用)第第4章章 汇编语言程序设计汇编语言程序设计(3)存贮器操作数 地址型操作数,地址型操作数,有标号与变量两种。有标号与变量两种。标号和变量都与存

    22、储器地址相关联,应具有三种属性具有三种属性:段属性段属性(SEG):标号和变量对应存储单元的段地址,是段基 地址的高16位。偏移量属性偏移量属性(OFFSET):标号和变量对应存储单元的偏移地址。类型属性类型属性(TYPE):对标号对标号 指标号与使用它的指令之间的距离远近,有NEAR (近,段内转移或调用标号)和FAR(远,段间)。对变量对变量 指变量占用存取单元的字节数,有BYTE(字节)、WORD(字)、DWORD(双字)、4字、10字节5种。变量:在数据段或堆栈段内在数据段或堆栈段内 是以存储器寻址方式访问的操作数是以存储器寻址方式访问的操作数。在程序中通过变量名变量名(变量存储单元的

    23、符号地址符号地址)来引用。标号:在代码段内在代码段内 是指令所存放单元的符号地址是指令所存放单元的符号地址。南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计(4)表达式操作数 由各种由各种操作数、运算符操作数、运算符和和操作符操作符组成组成,在汇编时计算在汇编时计算。(不是在程序执行过程中)。汇编程序先对表达式进行计算,再将得到的值汇编到指令中。汇编程序先对表达式进行计算,再将得到的值汇编到指令中。数值表达式和地址表达式数值表达式数值表达式(汇编时产生一个数值):由常量及算术逻辑运算符或关系运算符等连接而成。地址表达式地址表达式(值表示存储器地址,有上述三种属性)

    24、:由常量、变量、标号、寄存器及一些运算符组成。例:MOV AX,124 ;MOV AX,8 ;数值表达式数值表达式 LEA BX,string+4 ;地址表达式地址表达式 MOV BX ES:SI+4*3 ;地址表达式地址表达式 南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计 运算符和操作符 MASM宏汇编中有三类运算符三类运算符:算术、逻辑、关系运算符算术、逻辑、关系运算符 两类操作符两类操作符:分析、合成操作符分析、合成操作符 运算符:运算符:实现对操作数的相关运算。操作符:操作符:完成对操作数属性的定义、调用和修改。主要有:主要有:u 算术运算符(+、/、

    25、MOD)u 逻辑运算符(AND、OR、NOT、XOR)u 关系运算符(EQ、NE、GT、GE、LT、LE)真:FFFFH 或 假:0u 分析操作符(SEG、OFFSET、TYPE、SIZE、LENGTH、HIGH、LOW)u 合成操作符(PTR、DS:、THIS、SHORT)南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计u 算术运算符(+、/、MOD(取余数取余数)MOV AX,6 8 ;MOV AX,48数值表达式中可使用所有算术运算符算术运算符不影响标志位 例:完成 80H+90H 可以可以 MOV AL,80H+90H ;使用数值表达式 ;AL=10H、C

    26、F不变 或或 MOV AL,80H ;使用加法指令 ADD AL,90H ;AL=10H、CF=1运算结果仍为标号或变量运算结果仍为标号或变量,其三个属性中只有其三个属性中只有偏移量属性改变偏移量属性改变例:设 PLACE是变量名,是个符号地址。则,PLACE23仍是变量名,与仍是变量名,与PLACE的偏移地址之差为的偏移地址之差为6地址表达式仅仅可使用+、两种算术运算符常用形式:标号或变量标号或变量常量常量 南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计u 逻辑运算符(AND、OR、XOR和和NOT)实现操作数按位按位逻辑操作,只适用于数值表达式。MOV AX

    27、,80h OR 70h ;MOV AX,0F0h注意:逻辑运算符与逻辑指令助记符注意:逻辑运算符与逻辑指令助记符 形同意不同形同意不同作为助记符时,在程序运行时被执行,操作对象是reg/mem作为运算符时,在程序汇编时由汇编程序计算,计算结果 构成指令操作数的一部分。例:AND DX,PORT AND 0FEH汇编时产生一立即数,汇编时产生一立即数,并得到并得到“AND DX,imm”的目标码的目标码CPU执行时完成执行时完成运算符运算符 南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计 在两个无符号操作数两个无符号操作数之间进行大小关系比较:关系不成立(为假),

    28、则结果为“0”(假:0);关系成立(为真),则结果为全“1”(真:FFFFH)。u 分析操作符(数值返回运算符)运算对象是存储器操作数,它返回标号或变量的属性值。u 合成操作符(修改属性运算符)作用于存储器操作数(标号或变量)时可以改变它们的属性。例:MOV BX,PORT LT 5 汇编为:MOV BX,0FFFFH(条件成立)或:MOV BX,0000H(条件不成立)u 关系运算符(EQ、NE、LT、GT、LE和和GE)结果值在汇编时获得结果值在汇编时获得两个操作数必须同是数值两个操作数必须同是数值 或或同一个段内的两个存储同一个段内的两个存储单元单元地址地址 南京航空航天大学 电子信息工

    29、程学院第第4章章 汇编语言程序设计汇编语言程序设计 运算符和操作符的优先权等级 SHORT11OR,XOR10AND9NOT8EQ,NE,LT,LE,GT,GE7,(双目)6*,/,MOD,SHL,SHR5,(单目)4HIGH,LOW(操作数高、低字节)3PTR,OFFSET,SEG,TYPE,THIS,段寄存名:(加段前缀)2LENGTH,SIZE,WIDTH,MASH,(),1高高低低运运 算算 符符 和和 操操 作作 符符优优 先先 级级 南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计DATASEGMENT;定义数据段D1DB 5 DUP(?);连续的字节

    30、单元CCEQU$D1;对单元计数SUMDW 0;为结果保留一个字DATAENDS;数据段定义结束STACK SEGMENT PARA STACK STACK;定义堆栈段DB 100 DUP(?);100字节的栈空间STACK ENDS;堆栈段定义结束CODE SEGMENT;定义代码段 ASSUME DS:DATA,SS:STACK,CS:CODE;对各段进行说明对各段进行说明BEGIN:MOV AX,DATA;DS初始化初始化为DATA MOV DS,AX LEA SI,D1;预置源数据的指针例:多个连续字节单元的累加定义存储单元定义存储单元的数据的数据指令指令段定义语句段定义语句伪指令伪指

    31、令作堆栈用的存作堆栈用的存储单元储单元定义堆栈定义堆栈 南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计段定义段定义汇编程序汇编程序结束结束MOV CX,CC;预置次数LODS BYTE PTR SI ;取一个数并修改指针MOV AH,0;清AX的高字节CLC;清CF位AGAN:ADC SUM,AX;累加LODS BYTE PTR SI;再取数并修改指针LOOP AGAN;控制循环MOV AH,4CH;完成,返回完成,返回DOSINT 21HCODE ENDS;代码段结束代码段结束ENDBEGIN;整个程序结束第第4章章 汇编语言程序设计汇编语言程序设计 4.3

    32、汇编语言的伪指令语句 指示指示汇编、链接程序如何如何进行汇编与链接。影响目标代码生成,本身不产生目标代码。1.符号定义伪指令(1)等值语句EQU 符号名符号名 EQU 表达式表达式 例:PORT1 EQU312 ;给常量赋予符号名 PORT2EQUPORT1+1 ;给数值表达式赋予符号名PORT2 ADDREQUES:SI+4 ;给地址表达式定义一个名字 CHAREQUNAME ;为字符串定义新的名字 COUNT EQUCX ;为CX定义新的符号名COUNT LDEQUMOV ;为MOV定义新的符号名LD 注:注:用用EQU定义过的符号不能定义过的符号不能重新定义重新定义符号定义、数据定义、程

    33、序分段、过程和宏定义、模块定义符号定义、数据定义、程序分段、过程和宏定义、模块定义 等。等。4.3.1 基本伪指令语句有有 选择处理器方式、数据定义、程序分段、条件汇编、结构定义等选择处理器方式、数据定义、程序分段、条件汇编、结构定义等。给常量或表达式赋予一个符号名,方便在程序中的使用。给常量或表达式赋予一个符号名,方便在程序中的使用。南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计例:B EQU BP+8 B EQU 20H 不行!不行!(2)等号语句=符号名符号名 表达式表达式 (功能与EQU类似)u EQU 与与=的区别的区别:在同一源程序中,用EQU定义过

    34、的符号不能重新定义,=可以。例:EMP60;定义EMP等于60 EMPEMP+1;重新定义EMP等于61 EMP123*4;重新定义EMP等于492符号定义是定义在程序中要使用的常量。符号定义是定义在程序中要使用的常量。用用EQU、=定义的符号不占用存储器单元。定义的符号不占用存储器单元。即,汇编程序不为这样的符号分配存储空间。即,汇编程序不为这样的符号分配存储空间。特别注意:特别注意:南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计2.数据定义伪指令(1)格式 用于定义变量用于定义变量(程序中所用的存储器操作数),指定 变量的类型和名称,为变量分配存储单元并赋初

    35、值。变量名 数据定义符 操作数,操作数,操作数 表示可选表示可选存放时低对低高对高存放时低对低高对高u 变量名变量名 指示变量存储单元的符号地址符号地址u 数据定义符数据定义符 指示变量的类型(字节、字、双字等)u 操作数操作数 指示变量的内容(是赋给变量的初值)u 多个相同类型的变量可在一条语句中定义u 常用的数据定义符数据定义符有:DB 定义字节变量,每个变量分配1字节的存储单元。DW 定义字变量,每个变量分配2字节存储单元。DD 定义双字变量,每个变量分配4字节存储单元。第第4章章 汇编语言程序设计汇编语言程序设计u 经过定义的变量有三种属性:SEGMENT,OFFSET,TYPExxy

    36、yzz01FFFC0100FFFFFC0001000000FFFFFFFFFC000000 1-1FC 1-1FC 1-1FC例:定义赋初值的变量 data SEGMENT xx DB 1,-1,0fcH yy DW 1,-1,0fcH zz DD 1,-1,0fcH data ENDS段地址段地址 可用操作符SEG获得偏移量偏移量 可用操作符OFFSET获得 数据类型数据类型 可用操作符TYPE获得 u 其它的数据定义符有:DQ 变量为4字数据类型(64位)DT 变量为10字节数据类型(80位)南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计 为数据项分配存储单

    37、元,用变量名作为该存储单元的名称。X12H34H56H78H41H42H25HYZ(2)具体形式和功能例:X DB 25H Y DW 4142H Z DD 12345678H初始值也可以是表达式:初始值也可以是表达式:IN_PORTDB PORT_VAL OUT_PORT DB PORT_VAL+1 PORT_VAL是符号常量,已由是符号常量,已由EQU语句赋了值。语句赋了值。PORT_VAL+1的的值在汇编时计算值在汇编时计算 预留内存单元,但不赋初值,以存放运算结果。例:A DB?;操作数用?表示 B DW?南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计例:

    38、ALL_ZERO DB 0,0,0,0,0,0 ALL_ZERO DB 6 DUP(0)定义字符串(只能用DB定义)例:str1 DB TsingHua str2 DB INPUT:,0dH,0aH,$定义一个表(数组)例:W_TABLE DW 1122H,3344H B_TABLE DB 1,2,4,9,16每个字符的值为它的每个字符的值为它的ASCII码,所以只能用码,所以只能用DB。u DUP还可以嵌套使用,还可以嵌套使用,P141DUP是重复操作符是重复操作符str1str25473696e67487561494e5055543a0d0a24TsingHuaINPUT:0dH0aH$u

    39、 当表中的操作数相同时,可用DUP来缩写。格式:重复次数 DUP (操作数)南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计例:STRING1 DB AB STRING2 DW AB STRING3 DW AB,CD例:str1 DW abcd str2 DD abcdu当字符串长度不超过两个字符时,也可以用DW来定义。注意:注意:3个及以上的字符,只能用个及以上的字符,只能用DB定义。定义。STRING1STRING2STRING343H44H41H42H41H42H42H41H第第4章章 汇编语言程序设计汇编语言程序设计data SEGMENTxx DB 1,

    40、-1,0FCHyy DW 1,-1,0FCHzz DD 1,-1,0FCHstr DB TsingHuabuf DB 4,?,4 DUP(?)DB dataenddata ENDScode SEGMENT ASSUME CS:code ASSUME DS:datastart:MOV AX,data MOV DS,AX LEA BX,xx LEA SI,yy LEA DI,zz MOV AH,4CH INT 21Hcode ENDS END start D:MASMDEBUG varible.exe-U12A1:0000 B89E12 MOV AX,129E12A1:0003 8ED8 MOV

    41、DS,AX12A1:0005 8D1E0000 LEA BX,000012A1:0009 8D360300 LEA SI,000312A1:000D 8D3E0900 LEA DI,000912A1:0011 8D1E1500 LEA BX,001512A1:0015 8D361D00 LEA SI,001D12A1:0019 B44C MOV AH,4C12A1:001B CD21 INT 2112A1:001D FF36243E PUSH 3E24-D 129E:0 L30129E:0000 01 FF FC 01 00 FF FF FC-00 01 00 00 00 FF FF FF.1

    42、29E:0010 FF FC 00 00 00 54 73 69-6E 67 48 75 61 04 00 00.TsingHua.129E:0020 00 00 00 64 61 74 61 65-6E 64 00 00 00 00 00 00.dataend.129E:0030 B8 9E 12 8E D8 8D 1E 00-00 8D 36 03 00 8D 3E 09.6.-xxyyzzstrbufd a t a e n d段段名名data 变变量量xx 变变量量yy 变变量量zz 变变量量str 变变量量buf例:在DEBUG下查看变量存放情况。南京航空航天大学 电子信息工程学院第第

    43、4章章 汇编语言程序设计汇编语言程序设计 当操作数是标号或变量时,可用DW或DD将标号或变量操作 数的偏移地址或全地址来初始化存储器。例:XX DW CYCLE YY DD CYCLE CYCLE:MOV BX,AX ;CYCLE是是程序中一条指令语句的标号程序中一条指令语句的标号例:TABLE DB 12H,34H TAL_PS DD TABLE例:VAR3 DW VAR+1;将将VAR+1的偏移地址存的偏移地址存 入入VAR3开始的两个字节开始的两个字节或 VAR3 DD VAR+1;将将VAR+1的全地址存入的全地址存入 VAR3开始的两个字开始的两个字TABLESEGTABLEOFFS

    44、ET34H12HTAL_PSTABLE第第4章章 汇编语言程序设计汇编语言程序设计 数据定义语句使汇编程序对访问存储器的指令,产生正确的 目标代码。例1:OPER1 DB?,?OPER2 DW?,?MOV OPER1,0 ;字节0 OPER1 MOV OPER2,0 ;字0 OPER2 例2:SUM DB?INC SUM ;变量SUM的字节内容1例3:OPER1 DB 1,2 OPER2 DW 1234H,5678H MOV AX,OPER11 MOV AL,OPER2 ;这里类型不匹配;这里类型不匹配第第4章章 汇编语言程序设计汇编语言程序设计(3)分析操作符与合成操作符 分析操作符(数值返

    45、回运算符)分析操作符(数值返回运算符)运算对象是存储器操作数,它返回变量或标号的属性值。合成操作符(修改属性运算符)合成操作符(修改属性运算符)作用于存储器操作数时可以改变它们的属性。分析操作符(SEG、OFFSET、TYPE、SIZE、LENGTH)使用格式:使用格式:操作符操作符 标号或变量标号或变量 例:ARRAY DB 100 DUP(0)MOV AX,SEG ARRAY MOV DS,AX ;对DS初始化 MOV BX,OFFSET ARRAY MOV AL,BX用分析或合成操作符,可以用分析或合成操作符,可以返回或修改返回或修改存储器操作数的存储器操作数的三三种属性。种属性。南京航

    46、空航天大学 电子信息工程学院u SEG、OFFSET 返回标号或变量的段地址和偏移地址u TYPE LENGTH SIZE TYPE 返回存储器操作数(标号或变量)的类型值类型值 LENGTH 返回变量用变量用DUP重复定义的重复定义的的数据项总数,其他情况返回1。SIZE 返回TYPE和LENGTH的乘积(为变量所分配的字节 单元总数)对变量:对变量:1/2/4对标号:对标号:-1/-2数据定义数据定义LENGTH操作符操作符SIZE操作符操作符 BUFFER1 DB 01H,02HLENGTH BUFFER1=1SIZE BUFFER1=11=1BUFFER2 DW 1234HLENGTH

    47、 BUFFER2=1SIZE BUFFER2=21=2BUFFER3 DD 100 DUP(20H)LENGTH BUFFER3=100SIZE BUFFER3=4100=400BUFFER4 DB ABCDZLENGTH BUFFER4=1SIZE BUFFER4=11=1例1:MOV AX,TYPE ARRAY ;ARRAY是字节变量,该语句汇编结果为 MOV AX,1 例2:第第4章章 汇编语言程序设计汇编语言程序设计 南京航空航天大学 电子信息工程学院第第4章章 汇编语言程序设计汇编语言程序设计u PTR 临时指定或修改临时指定或修改存储器操作数的类型类型属性,保持原 有的段、偏移地址

    48、属性,且原定义的类型属性不变。使用格式:使用格式:类型类型 PTR 标号或变量标号或变量例:INC BX (有不确定性)INC BYTE PTR BX INC WORD PTR BX对变量:对变量:例:ARRAY1 DB 0,1,2,3,4 ARRAY2 DW 0,1,2,3,4 MOV BX,WORD PTR ARRAY13 MOV CL,BYTE PTR ARRAY26 MOV WORD PTRSI,4 合成操作符(PTR、LABLE、THIS)仅在当前所在的指令中有效仅在当前所在的指令中有效类型有:类型有:BYTE、WORD、DWORD、NEAR、FAR等等第第4章章 汇编语言程序设计汇

    49、编语言程序设计配合配合EQU伪指令,可以为原变量定义新的变量名。伪指令,可以为原变量定义新的变量名。对标号:对标号:ARRAY1 DB 0,1,2,3,4ARRAY2 DW 0,1,2,3,4WBYTE EQU WORD PTR ARRAY1BWORD EQU BYTE PTR ARRAT2 MOV BX,WBYTE3;按字使用 MOV CL,BWORD6;按字节使用例:W_VAR DD INCHES INCHES:CMP SUM,100 JMP WORD PTR W_VAR ;段内转移 或JMP DWORD PTR W_VAR ;段间转移 或JMP NEAR PTR INCHES ;段内转移

    50、 或JMP FAR PTR INCHES ;段间转移NEAR PTR可以略去可以略去用用PTR指明标号的类型时,可确定是段内转移或段间转移。指明标号的类型时,可确定是段内转移或段间转移。第第4章章 汇编语言程序设计汇编语言程序设计例:ABC DW?A1 EQU BYTE PTR ABC ;A1是ABC的第一个字节 A2 EQU BYTE PTR ABC1或 A2 EQU A11 MOV AL,A1 MOV AH,A2前例3:OPER1 DB 1,2 OPER2 DW 1234H,5678H MOV AX,OPER11 MOV AL,OPER2 ;这里类型不匹配对例对例3 3可如下处置:可如下处

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

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


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


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

    163文库