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

类型第4章基本汇编语言课件.ppt

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

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

    特殊限制:

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

    关 键  词:
    基本 汇编语言 课件
    资源描述:

    1、第第4 4章章 汇编语言程序格式汇编语言程序格式p教学目的及要求教学目的及要求:1.掌握各个伪指令的功能和使用方法掌握各个伪指令的功能和使用方法2.掌握汇编语言程序格式掌握汇编语言程序格式3.熟悉汇编语言程序的上机过程熟悉汇编语言程序的上机过程p教学教学重重点与难点点与难点:1.在理解伪指令功能的基础上,着重理解伪指令与指令的本质区别在理解伪指令功能的基础上,着重理解伪指令与指令的本质区别2.在理解程序的段结构基础上,着重理解各个段寄存器的初始化方法在理解程序的段结构基础上,着重理解各个段寄存器的初始化方法3.地址计数器的理解和使用地址计数器的理解和使用4.理解变量、标号的三个基本空间特性:段

    2、、偏移量、类型理解变量、标号的三个基本空间特性:段、偏移量、类型开开 始始第第4 4章章 汇编语言程序格式汇编语言程序格式4.1 汇编语言的语句格式汇编语言的语句格式4.2 汇编语句表达式汇编语句表达式4.3 伪指令伪指令4.4 DOS系统功能调用系统功能调用4.5 综合举例综合举例开开 始始4.1 汇编语言的语句格式汇编语言的语句格式4.1.1 指令语句格式指令语句格式4.1.2 伪指令语句格式伪指令语句格式4.1.3 标识符标识符返回本章首页返回本章首页4.1.1 指令语句格式指令语句格式指令语句的一般格式如下:标号:指令助记符 操作数 ;注释1标号:标号是机器指令语句存放地址的符号表示,

    3、代表该指令目标代码的第一个字节地址,后面必须紧跟冒号“:”。2指令助记符:指令助记符为语句的核心成分,表示了该语句的操作类型。3操作数:操作数表示指令助记符的操作对象。4注释:注释项用来说明程序或语句的功能。注释均以分号开始,它可占一行或多行,一般放在一条语句的后面。返回本节返回本节4.1.2 伪指令语句格式伪指令语句格式伪指令语句格式如下:符号名 伪指令符 操作数 ;注释1符号名:符号名是伪指令语句的一个可选项,可以定义为变量名、符号常数、子程序名或段名等。符号名与伪指令符之间用空格分隔。2伪指令符:伪指令符指定汇编程序要完成的具体操作,如数据定义伪指令DB、DW、DD,段定义伪指令SEGM

    4、ENT,假定伪指令ASSUME等。3操作数:伪指令后面的操作数可以是常数、字符串、变量、表达式等,其个数由具体的伪指令决定,各个操作数之间必须以“逗号”分隔。4注释:伪指令的注释必须以“;”开始,其作用同指令语句中的注释部分。返回本节返回本节4.1.3 标识符标识符1。标号和符号名-统称为标识符。2。有关标识符的规定 标识符可以使用下列字符:字母 AZ(大写)az (小写)数字 09 特殊字符 .?标识符的长度为131个字符;除数字外,上面所有规定的字符都可以作为标识符的第一个字符,但问号(?)本身不能单独作为标识符;标识符中如果用到“.”,则必须是第一个字符;不能采用汇编语言的保留字作为标识

    5、符。一般情况下,汇编程序不区分标识符和保留字中的字母的大小写。返回本章首页返回本章首页4.2 汇编语句表达式汇编语句表达式4.2.1 常量常量4.2.2 变量变量4.2.3 标号标号4.2.4 表达式与运算符表达式与运算符4.2.5 运算符的优先级运算符的优先级返回本章首页返回本章首页4.2.1 常量常量1数值常量数值常量2.字符串常量字符串常量1数值常量数值常量表表3.1 各种形式数字常量格式对照表各种形式数字常量格式对照表2.字符串常量字符串常量字符串常量是用单引号或双引号引起来的一个或字符串常量是用单引号或双引号引起来的一个或多个字符。在机器内部,字符串常量是以各字符多个字符。在机器内部

    6、,字符串常量是以各字符的的ASC码表示的。如码表示的。如A用用41H 表示,字符表示,字符串串A1B2用用41H,31H,42H,32H表示。表示。返回本节返回本节4.2.2 变量变量1变量变量2变量的定义变量的定义在程序运行期间取值可能发生变化的操作数称为变量。变量可以看作盛放操作数的容器。在机器中,盛放操作数的容器只有寄存器和存储器两种,所以变量也可以分为寄存器变量和存储器变量。通常所指的变量都是存储器变量。变量一般在除代码段以外的其他段中用伪指令定义。变量通常在操作数字段中被引用,它有段、偏移和类型三种属性。(1)段属性:变量所在段的段基值。(2)偏移地址属性:变量的偏移地址,它是一个1

    7、6位无符号数,代表从段起始地址到定义变量的位置之间的字节数。(3)类型属性:变量的类型属性定义变量在内存中所占的字节数,即所存放的数据的长度。如字节属性BYTE为1,字属性WORD为2。1变量变量变量定义语句的主要任务是为变量分配存储单元,变量定义语句的主要任务是为变量分配存储单元,且为这个变量提供一个初始值。且为这个变量提供一个初始值。常用的数据定义伪指令有常用的数据定义伪指令有 DB 定义字节变量定义字节变量 DW 定义字变量定义字变量 DD 定义双字变量定义双字变量 DQ 定义定义4字变量字变量 DT 定义定义5字变量字变量格式:格式:变量名变量名数据定义伪指令符表达式数据定义伪指令符表

    8、达式,2变量的定义变量的定义表达式表达式表达式项是给变量或指定存储单元赋予初值,它表达式项是给变量或指定存储单元赋予初值,它有以下几种形式:有以下几种形式:(1 1)数值表达式)数值表达式(2 2)字符串表达式)字符串表达式(3 3)地址表达式(只适用)地址表达式(只适用DWDW和和DDDD两个伪指令)两个伪指令)(4 4)?表达式表达式(5 5)带)带DUPDUP的表达式的表达式数据定义伪指令可以为一个或连续的存储单元设置数值数据定义伪指令可以为一个或连续的存储单元设置数值初值。初值。【例【例3.1】为数据段分配存储单元。】为数据段分配存储单元。DATASEGMENTADB11H,12H,1

    9、3HBDW1122H,3344HCDD12345678HDATAENDS上述变量的存储单元分配及初始化情况如下图上述变量的存储单元分配及初始化情况如下图3.1所示。所示。(1)数值表达式)数值表达式图图3.1 数据段中数据存储分配图数据段中数据存储分配图字符串表达式中的字符串必须用引号引起来。字符串表达式中的字符串必须用引号引起来。DB、DW、DD伪指令将字符串中的各字符均以伪指令将字符串中的各字符均以ASC码形式存放在码形式存放在相应的存储单元,但表示形式各不相同。相应的存储单元,但表示形式各不相同。【例【例3.2】为字符串分配存储单元。】为字符串分配存储单元。DATASEGMENTSTR1

    10、 DB1234STR2 DWAB,CD,ASTR3 DDABDATAENDS其存储单元分配如下图其存储单元分配如下图3.2所示。所示。(2)字符串表达式字符串表达式图图3.2 数据段存储分配图数据段存储分配图(3)地址表达式(只适用)地址表达式(只适用DW和和DD两个伪指令)两个伪指令)如果该地址表达式为一变量(或标号)名,用如果该地址表达式为一变量(或标号)名,用DW伪指令则是取它的偏移地址来初始化变量,用伪指令则是取它的偏移地址来初始化变量,用DD伪指令则是取它的段首址和偏移地址来初始化变伪指令则是取它的段首址和偏移地址来初始化变量。量。例如:例如:BUF1DWA BUF2DDB()?表达

    11、式()?表达式表达式为?,只分配存储单元,不赋予初始值表达式为?,只分配存储单元,不赋予初始值在表达式中使用重复数据操作符在表达式中使用重复数据操作符DUP,可以为连续的存,可以为连续的存储单元提供重复数据,其格式为:储单元提供重复数据,其格式为:N DUP(表达式)(表达式)其中其中N为重复因子,只能取正整数,表示定义了为重复因子,只能取正整数,表示定义了N个重复个重复数据存储单元,其类型由它前面的数据定义伪指令确定,数据存储单元,其类型由它前面的数据定义伪指令确定,而每个数据存储单元中的初值由而每个数据存储单元中的初值由DUP后面圆括号中的表后面圆括号中的表达式给定。达式给定。例如:例如:

    12、BUF DB 100 DUP(0)以上语句定义了以以上语句定义了以BUF为首址,大小为为首址,大小为100个字节,初值个字节,初值为为0的数据存储单元。的数据存储单元。(5 5)带)带DUPDUP的表达式的表达式返回本节返回本节4.2.3 标号标号标号是一条指令语句的符号地址。在汇编源程序中,只有在需要标号是一条指令语句的符号地址。在汇编源程序中,只有在需要转向一条指令语句时,才为该指令语句设置标号,以便在转移类转向一条指令语句时,才为该指令语句设置标号,以便在转移类指令(含子程序调用指令)中直接引用这个标号。因此,标号可指令(含子程序调用指令)中直接引用这个标号。因此,标号可作为转移类指令的

    13、操作数,即转移地址。作为转移类指令的操作数,即转移地址。【例【例3.3】符号地址表示。】符号地址表示。NEXT:MOV AL,SI;带标号;带标号NEXT的指令的指令 DEC CX JNE NEXT;标号;标号NEXT作转移指令的操作数作转移指令的操作数1 1段属性:定义标号所在段的段基值,该地段属性:定义标号所在段的段基值,该地址总是存放在址总是存放在CSCS段寄存器中。段寄存器中。2 2偏移地址属性:标号的偏移地址,它是偏移地址属性:标号的偏移地址,它是1616位无符号数,代表从段起始地址到定义标号位无符号数,代表从段起始地址到定义标号的位置之间的字节数。的位置之间的字节数。3 3类型属性

    14、:用来指出该标号是在本段内引类型属性:用来指出该标号是在本段内引用还是在其他段中引用。在段内引用的为用还是在其他段中引用。在段内引用的为NEARNEAR类,在段外引用的为类,在段外引用的为FARFAR类。类。标号也具有三种属性标号也具有三种属性:段属性、偏移地址属性、:段属性、偏移地址属性、类型属性。类型属性。返回本节返回本节4.2.4 运算符运算符1算术运算符算术运算符2逻辑运算符逻辑运算符3关系运算符关系运算符4属性运算符属性运算符5数值返回运算符数值返回运算符算术运算符包括:(加)、(减)、算术运算符包括:(加)、(减)、*(乘)、(乘)、(除)、(除)、MOD(求模)、(求模)、SHL

    15、(左移)、(左移)、SHR(右移)、(右移)、几种,它既可以用于数值表达式又可用于地址表达式。几种,它既可以用于数值表达式又可用于地址表达式。运算时要理解其物理意义:运算时要理解其物理意义:(1)减法:允许在两个变量之间(相距的字节数)减法:允许在两个变量之间(相距的字节数)(2)加法:不允许在变量间使用)加法:不允许在变量间使用(3)地址表达式:变量数值)地址表达式:变量数值(4)SHL,SHR:对数值进行,在汇编时执行。:对数值进行,在汇编时执行。格式:格式:数值数值 SHL/SHR 移位次数移位次数 例:例:NUM EQU 1111B MOV AL,NUM SHL 4 ADD BL,NU

    16、M SHL 41算术运算符算术运算符NUM1 EQU25*4 50;NUM1=50NUM2 EQUNUM1/7;NUM2=7NUM3 DBNUM1 MOD 7;NUM3=1VAR1DB1,2,3,4,5VAR2DB12345NUM4 EQUVAR2-VAR1;NUM4=5NUM5 EQU0FH MOVAL,NUM5 SHL 4;(;(AL)=11110000BMOVBL,NUM5 SHR 4;(BL)=00000000B【例【例3.4】用算术运算符进行数值表达式运算。】用算术运算符进行数值表达式运算。逻辑运算符包括:逻辑运算符包括:AND、OR、XOR、NOT四种运算。由于逻辑运四种运算。由于

    17、逻辑运算是按位操作,且在汇编过程中完成,因而运算的结果仍为整数常算是按位操作,且在汇编过程中完成,因而运算的结果仍为整数常量。量。【例【例3.5】用逻辑运算符进行运算。】用逻辑运算符进行运算。MOVAL,34H AND 0FH ;04HALMOVBL,05H OR 30H ;35HBLMOVCX,NOT 00FFH ;0FF00HCXMOVDX,789AH XOR 000FH;7895HDX2逻辑运算符逻辑运算符关系运算符包括:相等(关系运算符包括:相等(EQ),不等(),不等(NE),小于(),小于(LT),大于),大于(GT),小于等于(),小于等于(LE)及大于等于()及大于等于(GE)

    18、。)。关系运算符的两个操作数必须都是数字或是同一段内的两个存储器关系运算符的两个操作数必须都是数字或是同一段内的两个存储器地址。计算的结果应为逻辑值:结果为真,用全地址。计算的结果应为逻辑值:结果为真,用全1表示;结果为假,表示;结果为假,用用0表示。表示。【例【例3.6】用关系运算符进行数值表达式运算。】用关系运算符进行数值表达式运算。NUM1 DB10 LT 5 ;NUM1=0NUM2 DB0AAAAH GT 7FFFH;NUM2=0FFHMOVAX,A EQ 41H ;0FFFFHAXMOVBX,NUM2 LT NUM1 ;0BX3关系运算符关系运算符(1)PTR运算符运算符格式:格式:

    19、类型类型 PTR 地址表达式地址表达式 类型可以是类型可以是BYTE、WORD、DWORD、FAR和和NEAR之一。表达式是存储器操作数地址。之一。表达式是存储器操作数地址。PTR用来用来为表达式确定为表达式确定新的类型属性新的类型属性,它本身并不改变存储器,它本身并不改变存储器分配情况,只是用来给已分配的存储器地址赋予另一分配情况,只是用来给已分配的存储器地址赋予另一种类型属性。格式中的类型字段表示所赋予的新的类种类型属性。格式中的类型字段表示所赋予的新的类型属性,而表达式字段则是被取代类型的符号地址。型属性,而表达式字段则是被取代类型的符号地址。4属性运算符属性运算符已有数据定义如下:已有

    20、数据定义如下:TWOBYTE DW?TWOBYTE已定义为字操作数的存储地址,可以用以下语句给这两个字已定义为字操作数的存储地址,可以用以下语句给这两个字节赋予另一种类型属性节赋予另一种类型属性:ONEBYTE EQU BYTE PTR TWOBYTE OTHERBYTE EQU BYTE PTR (TWOBYTE+1)这时这时 ONEBYTE 和和TWOBYTE 两个符号地址具有相同的段地址及偏两个符号地址具有相同的段地址及偏移地址移地址,但是它们的类型属性不同但是它们的类型属性不同,前者为前者为1,后者为后者为2.有时指令要求使用有时指令要求使用PTR操作符操作符.例例:MOV BX,6指

    21、令把立即数存入指令把立即数存入BX寄存器内容指定的存储单元中寄存器内容指定的存储单元中,但汇编程序不能分清但汇编程序不能分清是存入字单元还是字节单元是存入字单元还是字节单元,此时必须用此时必须用PTR操作符来说明属性操作符来说明属性.MOV BYTE PTRBX,6或或 MOV WORD PTRBX,6(2)THIS(2)THIS 运算符运算符 格式为格式为:THIS 类型类型 THIS运算符常与运算符常与EQU连用连用,用来定义一个新的变量名或标号用来定义一个新的变量名或标号,并将右并将右边的类型属性赋给新的变量或标号边的类型属性赋给新的变量或标号,而新变量或新标号的段基值和偏而新变量或新标

    22、号的段基值和偏移量与紧跟其后的变量或标号相同移量与紧跟其后的变量或标号相同.例如例如:DATAB EQU THIS BYTE DATAW DW 100 DUP(0)此时此时DATAB的段基值、偏移地址和的段基值、偏移地址和DATAW完全相同完全相同,但它是字节类但它是字节类型的型的,而而DATAW则是字类型的则是字类型的.又如又如:START EQU THIS FAR L:MOV CX,100这样这样,MOV指令有一个指令有一个FAR属性的地址属性的地址START,这就允许其他段的转这就允许其他段的转移指令直接跳转到该条指令移指令直接跳转到该条指令.(1)SEG 运算符运算符(2)OFFSET

    23、运算符运算符(3)TYPE运算符运算符(4)LENGTH运算符运算符(5)SIZE运算符运算符(6)字节分离运算符)字节分离运算符5数值返回运算符数值返回运算符(1)SEG 运算符运算符格式:格式:SEG 变量或标号变量或标号功能:分离出其后变量或标号所在段的段基址。例如:功能:分离出其后变量或标号所在段的段基址。例如:MOV AX,SEGARR ;ARR为某个变量为某个变量(2)OFFSET运算符运算符格式:格式:OFFSET 变量或标号变量或标号功能:分离出其后变量或标号的偏移地址。例如:功能:分离出其后变量或标号的偏移地址。例如:MOV BX,OFFSET BUF 所以这条指令与指令:所

    24、以这条指令与指令:LEA BX,BUF等价。等价。(3)TYPE运算符运算符格式:格式:TYPE 变量或标号变量或标号功能:分离出其后变量或标号的类型。如果是变量,将功能:分离出其后变量或标号的类型。如果是变量,将返回该变量的类型对应字节数;如果是标号,则返回代返回该变量的类型对应字节数;如果是标号,则返回代表标号类型的数值。它们之间的关系见下表所示。表标号类型的数值。它们之间的关系见下表所示。(4)LENGTH运算符运算符格式:格式:LENGTH 变量变量功能:对于变量中使用功能:对于变量中使用DUP的情况,回送最外层的情况,回送最外层DUP的的重复次数。若无重复次数。若无DUP则返回则返回

    25、1。【例【例3.12】DATASEGMENTADBABCDEFBDW10DUP(1,2DUP(2)DATAENDS MOV AX,LENGTH A;1AXMOV BX,LENGTH B;10BX(5)SIZE运算符运算符格式:格式:SIZE 变量变量功能:取出变量所占的数据存储区大小。其功能:取出变量所占的数据存储区大小。其返回值为:返回值为:LENGTH 变量变量*TYPE 变量变量例如:上例中例如:上例中A、B变量:变量:SIZE A=LENGTH A*TYPE A=1SIZE B=LENGTH B*TYPE B=20(6)字节分离运算符)字节分离运算符字节分离运算符包括:字节分离运算符包

    26、括:HIGH和和LOW。格式:格式:HIGH 常量或地址表达式常量或地址表达式 LOW 常量或地址表达式常量或地址表达式功能:功能:HIGH 用来分离出其后用来分离出其后16位常量或地址表达式的位常量或地址表达式的偏移量的高字节;偏移量的高字节;LOW用来分离出其后用来分离出其后16位常量或地址位常量或地址表达式偏移量的低字节。表达式偏移量的低字节。例:例:CONST EQU 0ABCDH MOV AH,HIGH CONST将汇编成:将汇编成:MOV AH,0ABH返回本节返回本节4.2.5 运算符的优先级运算符的优先级表表3.3 运算符的优先级运算符的优先级返回本节返回本节4.3 伪指令伪指

    27、令4.3.1 数据定义伪指令数据定义伪指令4.3.2 符号定义伪指令符号定义伪指令4.3.3 段定义伪指令段定义伪指令SEGMENT/ENDS4.3.4 假定伪指令假定伪指令ASSUME4.3.5 置汇编地址计数器伪指令置汇编地址计数器伪指令ORG4.3.6 源程序结束伪指令源程序结束伪指令返回本章首页返回本章首页4.3.1 数据定义伪指令数据定义伪指令功能:定义数据存储区,类型由数据定义伪指令功能:定义数据存储区,类型由数据定义伪指令符确定,初值由表达式给定。符确定,初值由表达式给定。格式:格式:变量名变量名数据定义伪指令表达式数据定义伪指令表达式,返回本节返回本节4.3.2 符号定义伪指令

    28、符号定义伪指令1赋值伪指令赋值伪指令EQU2等号伪指令等号伪指令=3LABEL1赋值伪指令赋值伪指令EQU格式:符号名格式:符号名 EQU 表达式表达式功能:为常量、表达式及其他各种符号定义一个等价的功能:为常量、表达式及其他各种符号定义一个等价的符号名,但符号名,但它不申请存储单元它不申请存储单元。用途:用途:用符号表示常量、数值表达式,即定义符号常量。使用符号表示常量、数值表达式,即定义符号常量。使用符号常量可使程序简单明了,增强程序的可读性和通用符号常量可使程序简单明了,增强程序的可读性和通用性。用性。EQU与属性运算符与属性运算符PTR或或THIS联合使用,可以给变量联合使用,可以给变

    29、量或标号定义新的类型属性并重新命名,但保持其段和偏或标号定义新的类型属性并重新命名,但保持其段和偏移地址属性不变。移地址属性不变。利用利用EQU可以用一个符号名替代一个复杂的地址表达可以用一个符号名替代一个复杂的地址表达式和其他一些符号,如指令助记符、变量名、标号、段式和其他一些符号,如指令助记符、变量名、标号、段名、寄存器名、宏定义名等。名、寄存器名、宏定义名等。举例如下举例如下:CONSTANT EQU 256 ;数赋以符号名数赋以符号名 DATA EQU HEIGHT+12 ;地址表达式赋以符号名地址表达式赋以符号名 ALPHA EQU 7 ;这是一组赋值伪操作这是一组赋值伪操作,把把

    30、BETA EQU ALPHA2 7-2=5 赋以符号名赋以符号名ADDR EQU VAR+BETA BETA,VAR+5 赋以符号名赋以符号名ADDRB EQU BP+8 ;变址引用赋以符号名变址引用赋以符号名BP8 EQU DS:BP+8 ;加段前缀的变址引用赋以符号名加段前缀的变址引用赋以符号名P8必须注意必须注意:1.EQU语句的表达式中如果有变量或标号的表达式语句的表达式中如果有变量或标号的表达式,则在该语句前应则在该语句前应该先给出它们的定义该先给出它们的定义.2.在同一个源程序中在同一个源程序中,同一个符号不能用同一个符号不能用EQU伪指令重新定义伪指令重新定义.2等号伪指令等号伪

    31、指令格式:符号名格式:符号名=表达式表达式功能:为常量、表达式及其他各种符号定义一个等价的功能:为常量、表达式及其他各种符号定义一个等价的符号名,并能对所定义的符号多次重复定义,且以最后符号名,并能对所定义的符号多次重复定义,且以最后一次定义的值为准。一次定义的值为准。【例【例3.17】定义等价符号名。】定义等价符号名。COST=20M=MOVCOST=COST+10;30LOSTM=ADD;M=ADD3LABEL伪指令伪指令格式:变量名或标号格式:变量名或标号 LABEL 类型类型功能:定义与原有变量类型不同的新变量或为指令语句功能:定义与原有变量类型不同的新变量或为指令语句定义有指定类型的

    32、标号。通常与指令或数据定义伪指令定义有指定类型的标号。通常与指令或数据定义伪指令连用,其功能类似语句连用,其功能类似语句“变量名或标号变量名或标号 EQU THIS 类类型型”。【例【例3.18】定义新类型的变量或标号。】定义新类型的变量或标号。DDBUF LABEL DWORDBUF DB 200 DUP(0)A LABEL FARB:LEA DX,BUF 返回本节返回本节4.3.3 4.3.3 段定义伪指令段定义伪指令SEGMENT/ENDSSEGMENT/ENDSv格式:段名格式:段名 SEGMENT SEGMENT 定位类型定位类型组合类型组合类型类别类别 。语句语句 。段名段名 EN

    33、DS ENDS 1 1段名段名 2 2定位类型定位类型 3 3类别类别 4 4组合类型组合类型1段名段名段名是为该段起的名字,段名是为该段起的名字,命名规则与标识符相同。用来指出命名规则与标识符相同。用来指出汇编程序为该段分配的存储区起始位置。汇编程序为该段分配的存储区起始位置。2定位类型定位类型(1)PARA:表示本段必须从能被:表示本段必须从能被16整除的地址处开始存放,整除的地址处开始存放,即段起始地址最低四位必须是即段起始地址最低四位必须是0。PARA为缺省项。为缺省项。(2)WORD:表示本段要从一个偶数地址处开始存放,即段:表示本段要从一个偶数地址处开始存放,即段起始地址的最低一位

    34、必须是起始地址的最低一位必须是0。(3)BYTE:表示本段起始地址可以从任一地址处开始存放。:表示本段起始地址可以从任一地址处开始存放。(4)PAGE:表示本段要从能被:表示本段要从能被256整除的地址处开始存放,整除的地址处开始存放,即起始地址的最低八位必须是即起始地址的最低八位必须是0。段的类别是单引号括起的类别名称,连接程序将把类别名相同的各段的类别是单引号括起的类别名称,连接程序将把类别名相同的各段连接组合在一起。先出现的段在前,后出现的段在后。它常与组段连接组合在一起。先出现的段在前,后出现的段在后。它常与组合类型相配合以形成不同的段组合结构。合类型相配合以形成不同的段组合结构。【例

    35、【例3.19】连接程序进行连接前存储区各段相对位置分布】连接程序进行连接前存储区各段相对位置分布:DATA1 SEGMENT DATA CODE SEGMENT CODE STACK1 SEGMENT STACK DATA2 SEGMENT DATA STACK2 SEGMENT STACK经连接程序连接后,各段的相对位置如下:经连接程序连接后,各段的相对位置如下:DATA1 SEGMENT DATADATA2 SEGMENTDATACODE SEGMENTCODESTACK1SEGMENTSTACKSTACK2SEGMENTSTACK3类别类别组合类型的作用是通知连接程序本段与程序中其他段的

    36、组合关系。组合类型的作用是通知连接程序本段与程序中其他段的组合关系。有六种类型可供选择。有六种类型可供选择。(1)“不选择不选择”:表示本段与其他段无逻辑关系。自己是一个:表示本段与其他段无逻辑关系。自己是一个独立段。独立段。(2)PUBLIC:表示可以把本段与同名同类别的其他段连接组:表示可以把本段与同名同类别的其他段连接组合在一起,构成一个物理段合在一起,构成一个物理段,共用一个段基值。共用一个段基值。(3)STACK:与:与PUBLIC组合方式相同,只是它用于堆栈段的组合方式相同,只是它用于堆栈段的连接。组合的段长为各堆栈段长度的总和。连接。组合的段长为各堆栈段长度的总和。(4)COMM

    37、ON:表示本段将与同名同类别的其他段相覆盖。:表示本段将与同名同类别的其他段相覆盖。段的长度取决于最长的段的长度取决于最长的COMMON段长。段长。(5)MEMORY:表示本段连接在其他段的后面,位于内存高:表示本段连接在其他段的后面,位于内存高地址端。地址端。(6)AT 表达式表达式:表示本段将安装在:表示本段将安装在 表达式的值所指定的段地表达式的值所指定的段地址上。这种组合类型可以明确地指定段在存储器中的地址。但它址上。这种组合类型可以明确地指定段在存储器中的地址。但它不能用于指定代码段。不能用于指定代码段。4 4组合类型组合类型【例【例3.20】有两个模块,各模块段定义如下:】有两个模

    38、块,各模块段定义如下:模块模块1:DATA1SEGMENT PARA PUBLIC DATA1M1DB 45H DUP(0)DATA1ENDSDATA2SEGMENT PARA COMMON DATA2N1 DB 102H DUP(0)DATA2ENDS模块模块2:DATA1SEGMENT PARA PUBLIC DATA1M2DB 104H DUP(11H)DATA1ENDSDATA2SEGMENT PARA COMMON DATA2N2DB 105H DUP(0)DATA2ENDSDATA3SEGMENTT1DB 50H DUP(20H)DATA3ENDS经过连接程序连接后经过连接程序连接

    39、后,该程序段的定位组合方式示意图如图该程序段的定位组合方式示意图如图3.3所示。所示。图3.3 模块1、模块2连接后段的定位组合方式示意图返回本节返回本节4.3.4 假定伪指令假定伪指令ASSUME格式:格式:ASSUME 段寄存器名:段名段寄存器名:段名,段寄存器名:段名,段寄存器名:段名功能:功能:建立段寄存器与段之间的对应关系。但不用来设置段寄存器建立段寄存器与段之间的对应关系。但不用来设置段寄存器的内容的内容.该伪指令一般出现在代码段中。该伪指令一般出现在代码段中。【例【例3.21】用】用ASSUME伪指令建立代码段、堆栈段与伪指令建立代码段、堆栈段与CS和和SS的对应的对应关系。关系

    40、。DATA1 SEGMENTADB 1,2,3DATA1 ENDSSTACK SEGMENT STACKDB200 DUP(0)STACK ENDSDATA2 SGEMENTBDB 123ABCDATA2 ENDSCODE SEGMENTASSUMEDS:DATA1,ES:DATA2,CS:CODE,SS:STACKSTART:MOV AX,DATA1 MOV DS,AX;DATA1DS MOV AX,DATA2 MOV ES,AX;DATA2ESQ1:MOV AL,AASSUMEDS:DATA2;建立;建立DS与与DATA2段段的对应关系的对应关系MOV AX,DATA2MOV DS,AX

    41、MOV AL,BCODE ENDS ENDSTART返回本节返回本节4.3.5 定位伪指令定位伪指令ORG格式:格式:ORG 数值表达式数值表达式功能:将数值表达式的值赋给当前位置计数器。数值表达式的功能:将数值表达式的值赋给当前位置计数器。数值表达式的值须为值须为065535之间的非负整数之间的非负整数,指出偏移地址。指出偏移地址。伪指令伪指令ORG可设置于代码段、数据段的任何地方。表明该语句可设置于代码段、数据段的任何地方。表明该语句下面的程序或数据要从表达式指定的地址开始存放。下面的程序或数据要从表达式指定的地址开始存放。汇编语言用符号汇编语言用符号“”表示位置计数器的当前值。当用在指表

    42、示位置计数器的当前值。当用在指令中时,表示本条指令第一个字节的地址偏移;当用在伪指令令中时,表示本条指令第一个字节的地址偏移;当用在伪指令的参数中时,表示的是汇编地址计数器的当前值。的参数中时,表示的是汇编地址计数器的当前值。返回本节返回本节【例【例3.22】给汇编地址计数器赋值。】给汇编地址计数器赋值。DATA SEGMENT ORG 10 ;置值为置值为10 VAR1 DW 100H,200H ORG+5 ;置的值为置的值为14+5,即为,即为19 VAR2 DB 1,2,+1,+2 N EQU -VAR2;()()=23 DATA ENDS4.3.6 源程序结束伪指令源程序结束伪指令格式

    43、:格式:END 标号标号功能:其中标号指出程序开始执行的第功能:其中标号指出程序开始执行的第一条指令的地址。该语句标志整个程序一条指令的地址。该语句标志整个程序的结束,是源程序的最后一条语句。的结束,是源程序的最后一条语句。返回本节返回本节;定义源字符串变量sstr的值为小写字母表,用程序将它复制到目标字符串dstr中。data segment sstr dbabcdefghijklmnopqrstuvwxyz data ends extra segment dstr db 26 dup(?)extra ends code segment assume cs:code,ds:data,es:e

    44、xtra start:mov ax,data mov ds,ax mov ax,extra mov es,ax lea si,sstr lea di,dstr mov cx,26 cld rep movsb mov ah,4ch ;dos系统功能调用,标志源程序结束 int 21h code endsend startDEBUG的主要命令的主要命令1。DEBUG程序的调用程序的调用 在在DOS的提示符下,可键入命令:的提示符下,可键入命令:CDEBUG指定驱动器指定驱动器path文件名文件名.扩展名扩展名在在DEBUG程序调入后,将出现提示符程序调入后,将出现提示符-,此时就可用,此时就可用D

    45、EBUG命令来调试程序。命令来调试程序。2。DEBUG的主要命令的主要命令1)显示存储单元的命令)显示存储单元的命令D,格式为:,格式为:-Daddress或或-Drange例如,按指定范围显示存储单元内容的方法为:例如,按指定范围显示存储单元内容的方法为:-d 100 12018E4:0100 C7 06 04 02 38 01 C7 0606 02 00 02 C7 06 08 02 G8.G.G18E4:0110 02 02 BB 04 02 E8 02 00CD 20 50 51 56 57 8B 37.;.h.MPQUVW.718E4:0120 8B其中其中0100至至0120是是D

    46、EBUG显示的单元内容。左边用十六进制表示每个字节,右边显示的单元内容。左边用十六进制表示每个字节,右边用用ASCII字符表示每个字节,字符表示每个字节,.表示不可显示的字符。这里没有指定段地址,表示不可显示的字符。这里没有指定段地址,D命令命令自动显示自动显示DS段的内容。如果只指定首地址,则显示从首地址开始的段的内容。如果只指定首地址,则显示从首地址开始的80个字节的内容。个字节的内容。如果完全没有指定地址,则显示上一个如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。命令显示的最后一个单元后的内容。2)检查和修改寄存器内容的命令)检查和修改寄存器内容的命令R,它有三种格

    47、式如下:,它有三种格式如下:。显示。显示CPU内所有寄存器内容和标志状态,其格式为:内所有寄存器内容和标志状态,其格式为:-R。显示和修改某个寄存器内容,其格式为:。显示和修改某个寄存器内容,其格式为:-R register name 例如,键入例如,键入 r ax系统将响应如下:系统将响应如下:AX F1F4 :即即AX寄存器的当前内容为寄存器的当前内容为F1F4,如不修改则按,如不修改则按Enter键,否则,可键入欲修改的键,否则,可键入欲修改的内容,如:内容,如:-r bxBX 0369:059F则把则把BX寄存器的内容修改为寄存器的内容修改为059F。显示和修改标志位状态,命令格式为:

    48、。显示和修改标志位状态,命令格式为:-RF系统将响应,如:系统将响应,如:OV DN EI NG ZR AC PE CY此时,如不修改其内容可按此时,如不修改其内容可按Enter键,否则,可键入欲修改的内容,如:键,否则,可键入欲修改的内容,如:OV DN EI NG ZR AC PE CYPONZDINV4)运行命令)运行命令G,其格式为:,其格式为:-G=address1address2address3其中,地址其中,地址1指定了运行的起始地址,如不指定则从当前的指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。后面的地址均为断点地址,当指令执行到断点时,就停开始运行。后面的地址

    49、均为断点地址,当指令执行到断点时,就停止执行并显示所有寄存器及标志位的内容,和下一条将要执行的指止执行并显示所有寄存器及标志位的内容,和下一条将要执行的指令。令。5)跟踪命令)跟踪命令T,有两种格式:,有两种格式:。逐条指令跟踪。逐条指令跟踪-T=address从指定地址起执行下一条指令后停下来,显示所有寄存器内容及标从指定地址起执行下一条指令后停下来,显示所有寄存器内容及标志位的值。如未指定地址则从当前的志位的值。如未指定地址则从当前的CS:IP开始执行。开始执行。多条指令跟踪。多条指令跟踪-T=addressvalue从指定地址起执行从指定地址起执行n条指令后停下来,条指令后停下来,n由由

    50、value指定。指定。6)汇编命令)汇编命令A,其格式为:,其格式为:-Aaddress该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:定地址开始的存储区中。必须注意:DEBUG把键入的数字均看成十六进制数,把键入的数字均看成十六进制数,所以如果要键入十进制数,则其后应加以说明,如所以如果要键入十进制数,则其后应加以说明,如100D。7)反汇编命令)反汇编命令U,有两种格式。,有两种格式。从指定地址开始,反汇编。从指定地址开始,反汇编32个字节,其格式为:个字节,其格式为

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

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


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


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

    163文库