汇编语言程序格式.ppt_第1页
汇编语言程序格式.ppt_第2页
汇编语言程序格式.ppt_第3页
汇编语言程序格式.ppt_第4页
汇编语言程序格式.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本章学习要点: (1)常见的伪指令及它们的用法 (2)汇编语言的结构 一、汇编语句的种类和格式 1. 语句的种类 汇编语言有多种类型的语句,指令语句、伪指令语句、宏指令语句。 汇编语言在对源程序进行汇编时,把指令语句翻译成机器指令,也就是说指令语句有着与之对应的机器指令。 伪指令语句没有与其对应的机器指令,只是指示汇编程序如何对源程序进行汇编,包括符号的定义、变量的定义、段的定义等。通俗点讲,它实际上是属于一种说明语句。 2.语句的格式 指令语句格式: (标号)指令助记符(操作数(,操作数)(;注释) 伪指令语句的格式如下: (名字)伪指令定义符(参数,参数)(;注释),伪指令定义符:规定了伪

2、指令的功能 参数:说明伪指令操作的对象,如常数(数值表达式)等 名称:给所定义的内容起的名称。 在汇编语言中,名字和标号很容易区分,名字后面没有冒号,而标号后一定用冒号。 标号和名字最多由31个字母、数字及规定的特殊字符组成,并且不能以数字来开头。 标号和名字不能是汇编语言的保留字,如不能是“MOV”。 汇编语言不区分保留字中字母的大小写。如“MOV AX ,03H”等同于“mov ax , 03h” 伪指令有多种,常见的如: (1)段定义伪操作 (2)数值数据定义及存储器分配 (3)符号数据定义 (4)程序开始和结束伪操作 (5)表达式赋值伪操作 此外还有基数控制伪操作、对准伪操作等。,看看

3、下列代码有哪些伪指令:,二、常见的伪指令/伪操作 (1)段定义语句 为了与存储器的分段结构相对应,汇编语言的源程序也是由若干个段组成。 1. 段开始和段结束语句 段定义的一般格式如下: 段名SEGMENT 定位类型 组合类型 类型 段名ENDS 例:一个简单的段如下所示: DSEGSEGMENT MESS DB HELLO , 0DH , 0AH , $ DSEGENDS,2. 段使用设定语句 汇编程序根据段开始语句和段结束语句判断出源程序的段划分,为了有效地产生目标代码,汇编程序还要了解各程序段与段寄存器间的对应关系。这种对应关系由段使用设定语句说明。 ASSUME 段寄存器名:段名,段寄存

4、器名:段名 段寄存器名可以是CS,DS,SS和ES。 段名就是段开始和段结束语句中规定的段名。 例如:CS寄存器对应CSEG段,DS寄存器对应DSEG段。 ASSUME CS : CSEG , DS : DSEG ASSUME伪指令中段名也可以是一个特别的关键字NOTHING,它表示某个段寄存器不与任何段有对应关系。,DSEG1 SEGMENT VARW DW 12 DSEG1 ENDS DSEG2 SEGMENT XXX DW 0 DSEG2 ENDS CSEG SEGMENT ASSUME CS:CSEG , DS: DSG1 , ES : DSG2 MOV AX , DSEG1 MOV

5、DS , AX MOV AX , DSEG2 MOV ES , AX ASSUME DS: DSG2 , ES :NOTHING MOV AX , DSEG2 MOV DS , AX DSEG ENDS,(2)关于数值数据定义语句及存储器分配 通过数值数据定义语句可以为数据项分配存储单元,并根据需要设置其初值。 还可以用符号代表数据项,此时符号就与分配的存储单元相联系。代表数据项的符号本省称为变量名,与之相对应的存储单元用于存放变量。 1. 数据定义的格式 数据定义语句是最常用的伪指令语句。一般格式如下: 变量名 数据定义符 表达式,表达式,表达式;注释 例如:VARB DB3 WARW DW

6、 -1234 BUFF DB 100 , 3+4 , 5*6,1)定义字节数据项(DB) 每一个字节数据项只占用一个字节存储单元 例:COUNT DB 100 DB 0DH ,0AH , $ TABLEDB 0 , 1 , 4 , 9 , 16 2)定义字数据项(DW) 每一个字数据项只占用两个字节存储单元 例:FLAG DW 2FCDH, 100,-1 VECTDW 0 DW 100H 3)定义双字数据项(DD) 每一个双字数据项只占用四个字节存储单元 例:VECTOR DD 4 FARPTRDD 12345678H, 0 此外,还可以定义8字节的数据项(DQ),10字节的数据项(DT),4

7、)定义没有初值的数据项 如果数据定义语句中的表达式只是一个问号(?),则表示不预置对应变量的初值,而仅仅是给变量分配存储单元。 例:INBUFF DB 5 , ? , ? , ? , 8 , ? VARWDW ? OLDVDD ? 5)定义字符串 定义字节数据的伪指令DB也可以用于方便地定义字符串。 字符串要用引号括起来,单引号和双引号皆可,只要配对。 例如:MESS DB HELLO! 上述语句与如下语句定义内容相同: MESS DB H , E , L , L , O , !,2. 重复操作符DUP 有时需要定义数组,有时还需要定于数据缓冲区。 例如: BUFFER DB 0 , 0 ,

8、0 , 0 , 0 , 0 , 0 , 0 以上操作太不方便,为此,汇编语言停供了在数据定义语句中使用的重复操作符DUP。 比如,上述定义语句与如下定义语句起相同的作用: BUFFER DB 8 DUP(0) 重复操作符DUP的一般格式如下: count DUP (表达式, 表达式, ) 例如: BUFFER1 DB 5 , 0 , 5 DUP(?) BUFFER2 DB 100 DUP(0 , 2 DUP(1 , 2) , 0 , 3) BUFFER3 DB 256 DUP(ABCDE),(3)关于符号数据的定义语句 1. 等价语句EQU 格式 EQU 表达式 例:COUNT EQU 100

9、;符号COUNT就代表常数100 BUFF_LEN EQU 4*COUNT;COUNT是已定义的符号常数 HELLO EQU “How are you!” 例:MOVE EQU MOV COUNT EQU CX 在安排上述语句后,就可以用MOVE代替指令助记符MOV,用COUNT代替寄存器CX。当然,MOV和CX仍可以照样使用。 当遇到:MOVE AX , CX;MOV AX , CX MOVE COUNT , 100;MOV CX , 100 需要注意:第1,等价语句不另外给符号分配存储单元; 第2,等价语句定义的符号不能与其它符号相同,也不能被重新定义。,2. 等号语句(=) 汇编语言专门

10、提供了符号语句来定义符号常数,即用符号表示一个常数。等号语句的一般格式如下: 符号名 = 数值表达式 例如:XX = 10 用符号定义语句可被重新定义。 例如: ABCD = 1 ABCD = 100,3. 定义符号名语句 格式:符号名 LABEL 类型 其中类型可以是BYTE、WORD、DWORD、NEAR、FAR,其中前3项对应于数据项,后2项对应于可执行代码。 功能:指定为某一类型的符号,且该符号的段属性和偏移属性与下一个紧接着的存储单元的段属性和偏移属性相同。 例如: BUFFER LABEL WORD BUFF DB 100 DUP(0) 定义了一个符号BUFFER,其类型是WORD

11、。因为段属性与偏移属性和BUFF相同,所以内容为0000H。 又如: QUIT LABEL FAR EXIT:MOV AH , 4CH “MOV AH , 4CH”有了QUIT和EXIT两个标号。,(4)程序开始与结束伪操作 END 伪操作 格式: END 标号 其中标号表示程序开始执行的起始地址。 注意: 程序是从END所指的“标号”开始执行,遇到END指令后结束。 如果END没有指定标号,则从相应代码段从开始运行。,注意以下2个程序的区别:,(5)对准伪操作 1. EVEN 格式:EVEN 功能:使紧随其后的内容从偶地址开始存储。 DSEG SEGMENT EVEN WORD_ARRAY

12、DW 100 DUP(?) DSEG ENDS,2. ORG 格式: ORG 常数表达式 功能:使紧随其后的内容从表达式所指定的地址开始存储。 DSEG SEGMENT ORG 10 VECT1 DW 47A5H ORG 20 VECT2 DW 1234H DSEG ENDS,可以使用符号$来代表当前正在汇编的指令的地址。 例:已知ARRAY的偏移量为0074H,试写出下列语句所分配空间的内容 ARRAY DW 1 , 2 , $+4 , 3, 4, $ + 4,三. 关于表达式的伪操作 (1)数值表达式 1.常数 常数有多种类型和表示方式,如: 1)十进制常数,以字母D结束为标识。 例:MO

13、V AX , 178D 2)十六进制常数,以字母H结束为标识 例:MOV AL , 0AH 注意,在程序编写时,十六进制数必须以数字开头。 例:要使(AL)为ABH,程序必须使用下列写法: MOV AL , 0ABH 3)二进制常数,以字母B结束为标识 例:OR AL , 11001010B TEST BL , 00101000B 4)八进制常数,以字母Q结束为标识,如127Q。,5)字符串常数(串常数) 串常数的值是包括在引号中的字符的ASCII代码值。 例:A的ASCII码值是41H CMP AL , A 相当于 CMP AL , 41H 6)伪指令RADIX 设置其后数值的缺省进制 格式

14、:RADIX exp exp的值必须是区间2,16内的一个整数。 例如: RADIX 8 MOV AL , 10 RADIX 16 MOV AH , 10 但是,为了避免混淆和不必要的误会,我们提倡慎用RADIX.,2. 算术运算符 算术运算府包括正(+)、负(-),加(+)、减(-)、乘(*)、除(/)和模(MOD),这些算术运算符的意义与高级语言中同样运算符的意义相似。 ADD AX , 100 * 4 + 2 ; 100 * 4 + 2就构成了一个算术表达式 SUB CX , 100H / 2 MOV AL , -3 3.关系运算符 关系运算符包括相等(EQ)、不等(NE)、小于(LT)

15、、大于(GT)、小于或等于(LE)、大于或等于(GE)。 若关系不成立,则结果为0(一个数值); 若关系成立,则结果为FFFFH(一个数值)。 例如, MOV AX , 1234H LT 1024H 等同于 MOV AX , 0H MOV BX , 1234H GT 1024H 等同于 MOV BX , 0FFFFH,4. 逻辑运算符 逻辑运算符包括按位操作的“与”(AND)、“或” (OR) 、“非” (NOT) 、“异或” (XOR) 、“左移”(SHL)和“右移” (SHR)。 逻辑运算的结果也是数值。 例: MOV BX , (VAL LT 5) AND 20) OR (VAL GE

16、5) AND 30) 当VAL 5时,汇编的结果应该是: MOV BX , 20 否则,汇编结果应该是: MOV BX , 30 注意:逻辑运算符和指令助记符的区别,表达式中的逻辑运算符属于伪指令,在汇编时起说明作用;而指令助记符则有机器指令与之对应。,5. 在数值表达式中使用操作符 (1)HIGH、LOW 功能:取数值表达式的值的高8位(或低8位)。 例:MOV AL , LOW 3080H 将汇编成:MOV AL , 80H MOV AH , HIGH 2050H 将汇编成:MOV AH , 20H MOV AH , HIGH(1234H + 5) 将汇编成:MOV , 12H MOV A

17、H , HIGH 1234H + 5 将汇编成:MOV AH , 17H 注意:最后1题为什么是先取1234H的高8位再加5,而不是先加5再取高8位?,6. 优先级 汇编语言中各种运算符和操作符的优先级按高到低排列如下: (1)圆括号,尖括号,方括号,圆点符,LENGTH,SIZE,WIDTH , MASK。 (2)PTR, OFFSET,SEG,TYPE, THIS,冒号。 (3)* , / , MOD, SHL, SHR (4)HIGH, LOW (5)+ , - (6)EQ,NE,LT,LE,GT,GE (7)NOT (8)AND (9)OR , XOR (10)SHORT,7. 其它操

18、作符 SEG、OFFSET、TYPE、LENGTH、SIZE、PTR 1)SEG 变量名或标号 功能:取变量或标号所在段的段值 2)OFFSET 变量名或标号 功能:取变量或标号在段中的偏移 例:定义变量如下,假设VARW的段内偏移为100H。 VARW DW 1234H, 5678H VARB DB 3,4 MOV AX, SEG VARW MOV DS, AX MOV BX, OFFSET VARW; 100H 送BX MOV DI, OFFSET VARW 2;102H送DI, ;OFFSET优先级高于+ MOV SI, OFFSET VARB; 104H送SI,3)TYPE 变量名或标

19、号 功能:返回变量或标号的类型。 定义常见类型及其对应数值如下: 字节(BYTE)变量:1 字(WORD)变量:2 双字(DWORD)变量:4 近(NEAR)标号:-1 远(FAR)标号:-2 可见:变量的类型值是对应类型变量所占用的字节数,而标号的类型值却没有实际的物理意义。 例:假设变量VARW的定义为“VARW DW 1234H, 5678H” ADD SI, TYPE VARW 将汇编成:ADD SI , 2,4)LENGTH 变量名 功能:返回利用DUP定义的数组中元素的个数。 如果变量定义语句中没有使用DUP,则总返回1。 如果嵌套使用了DUP,则只返回最外层的重复数。 例:定义变量如下 VARW DW 1234H, 5678H VARB DB 3,4 VARD DD 5 DUP(?) 则 MOV CX, LENGTH VARW;1送CX MOV CX, LENGTH VARB;1送CX MOV CX, LENGTH VARD;5送CX,5)SIZE 变量名 功能:返回利用DUP定义的数组占用字节的个数。 可按下式计算: SIZE 变量 = (LEGNTH 变量)* (TYPE 变量) 例:定义变量如下 VARW DW 1234H, 5678H VARB DB 3,4 VARD DD 5 DUP(?) 则 MOV CX, SIZE VARW;2送CX MOV CX,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论