04 汇编语言程序设计

上传人:豆浆 文档编号:10548944 上传时间:2017-09-02 格式:PDF 页数:104 大小:578.10KB
返回 下载 相关 举报
04 汇编语言程序设计_第1页
第1页 / 共104页
04 汇编语言程序设计_第2页
第2页 / 共104页
04 汇编语言程序设计_第3页
第3页 / 共104页
04 汇编语言程序设计_第4页
第4页 / 共104页
04 汇编语言程序设计_第5页
第5页 / 共104页
点击查看更多>>
资源描述

《04 汇编语言程序设计》由会员分享,可在线阅读,更多相关《04 汇编语言程序设计(104页珍藏版)》请在金锄头文库上搜索。

1、第四章80x86汇编语言程序设计 第一节 汇编语言概述 第二节 汇编语言语句的组成 第三节 汇编语言的语句 第四节 宏汇编指令 第五节 编写完整的汇编语言程序 第六节 汇编语言程序设计第一节 汇编语言概述一个简单的 8086系统下的汇编语言程序:DATA SEGMENTSTRING DB HELLO WORLD!, 0DH, 0AH, $DATA ENDSCODE SEGMENTASSUMECS:CODE, DS:DATABEGIN: MOV AX, DATAMOV DS, AX ;初始化数据段的段地址MOV AH, 09HLEA DX, STRING;输出字符串INT 21HMOV AH,

2、4CHINT 21H;调用 4CH号系统功能返回 DOSCODE ENDSEND BEGIN 数据段代码段第二节 汇编语言语句的组成 汇编语言程序的语句中包含的元素 :z 字符集z 保留字与标识符z 常量、变量与标号z 表达式及运算符一、字符集 允许使用的字符:z 字母,包括大写字母 AZ和小写字母 az;z 数字,包括 09;z 特殊字符,包括: + - * / =() ; , “ . : ? $ & 及空格、制表符、回车、换行等。 注意:z 除了字符串,字母都是不区分大小写z 一系列相连的空格、制表符效果相当于一个空格z 一系列相连的回车换行相当于一次回车换行z 分号 “; ”后一直到行尾

3、的内容都是注释z 字符 “&”若用于某行的开头,则表示该行是上一行的续行二、保留字与标识符1、保留字在汇编语言中有特定意义的词,可分为: 指令助记符及指令前缀如: MOV、 ADD、 REP等 寄存器名如: AX、 EBX、 CL等 伪指令助记符如: DB、 SEGMENT等 其他保留字,包括运算符、操作符等如: EQ、 LT、 OFFSET、 SEG等2、标识符 标识符是程序员自己起的名字,如变量名、标号、段名、过程名等 标识符的命名规则:z 标识符必须由字母、数字和几个特殊字符(包括 _ $ ? :)组成,而且第一个字符不能是数字(否则可能与 16进制的数字混淆)z 标识符不能与某个保留字

4、相同,以免混淆z 尽量用有意义的英文单词或缩写来命名,以增加程序的可读性三、常量、变量与标号1、常量 数字常量z 二进制:以 B结尾,如 10101010Bz 八进制:以 Q结尾,如 123Q, 67Qz 十进制:以 D结尾, “D”可省略,如 1234D, 5678z 十六进制:以 H结尾, AF开头的数须在前面加 “0”如: 1234H, 0FFFFH 字符串常量z 用单引号或双引号引起来的一个或多个 ASCII字符z 每个字符的值等于其 ASCII码值z 例: A=41H一个字节, 12=31H、 32H两个字节2、变量 变量是存放在存储器中的操作数 可通过变量的名字来访问变量 变量具有

5、三个属性:z 段属性 ,即变量所在的段的基地址;z 偏移量属性 ,即变量相对于段的起始地址的偏移量;z 类型属性 ,包括 BYTE(字节)、 WORD(字)、 DWORD(双字)、 FWORD( 6字节)、 QWORD(四字)、 TBYTE( 10字节)等。3、标号 标号是一条指令性语句的起始地址 变量具有三个属性:z 段属性 ,即变量所在的段的基地址;z 偏移量属性 ,即变量相对于段的起始地址的偏移量;z 类型属性 ,包括 NEAR(近程,即段内)、 FAR(远程,即段间)四、表达式及运算符 由常量、变量、标号和一些运算符、操作符构成的式子 表达式的值在汇编的过程中就已经被汇编程序计算出来

6、运算符的分类:z 算术运算符z 逻辑运算符z 关系运算符z 属性运算符z 数值返回操作符1、算术运算符 五种算术运算:加: +、减 :-、乘 : *、除 :/、模 :MODz 合法地址表达式:地址 -地址(处在同个段中);地址常数9 ADDR1-ADDR2(假设两个地址处在同个段中)9 ADDR1+19 ADDR2-2z 非法地址表达式:地址 +地址;地址 *地址;地址 /地址;常量 -地址;地址 -地址(处在不同段中)8 ADDR1+ADDR28 ADDR1*ADDR28 ADDR1/28 100-ADDR18 SEG1_A-SEG2_B (假设两个地址处在不同段中)2、逻辑运算符 五种算术

7、运算:与 AND、或 OR、异或 XOR、非 NOT、逻辑左移 SHL、逻辑右移 SHR 只用于数字表达式中 例: MOV AL, 10101010B AND 11001100B ; AL 10001000B MOV AL, 10001000B OR 01000100B ; AL 11001100B MOV AX, 1000100010001000B XOR 1100110011001100B; AX 0100010001000100B MOV AX, NOT 1010101010101010B; AX 0101010101010101B3、关系运算符 六种关系运算符:z EQ( Equal,

8、相等)z NE( Not Equal,不等)z LT( Less Than,小于)z LE( Less than or Equal,小于或等于)z GT( Great Than,大于)z GE( Great than or Equal,大于或等于) 运算结果:z 关系为真,则运算结果为 0FFFFHz 关系为假,则运算结果为 04、属性运算符( 1)型重新指定操作符 PTR 功能:临时指定或修改存储器操作数的数据类型属性或地址类型属性 格式:类型 PTR 表达式 例:VAR_W DW 1234HMOV AX, VAR_W ; AX 1234HMOV AL, BYTE PTR VAR_W ; A

9、L 34H PTR与 EQU连用z 作用:定义与表达式类型不同的新变量名或新标号,但不分配新的存储单元z 例: 数据段定义:DATA_B DB 1, 2, 3, 4DATA_W EQU WORD PTR DATA_B 代码段:MOV AL, DATA_B ; AL 1MOV AX, WORD PTR DATA_B ; AL 0201HMOV AX, DATA_W ; AL 0201H(第 2、 3条指令等价)( 2)类型指定操作符 THIS 功能:指定或说明变量或标号的类型 例 1:DATA_W EQU THIS WORDDATA_B DB 1, 2, 3, 4MOV AL, DATA_B ;

10、 AL 1MOV AX, WORD PTR DATA_B ; AL 0201HMOV AX, DATA_W ; AL 0201H 例 2:ADDR_F EQU THIS FARADDR_N: MOV AX, 1JMP ADDR_F ;等价于: JMP FAR PTR ADDR_N ( 3)短转移操作符 SHORT 功能:z 一般用在 JMP指令z 告诉汇编程序该 JMP指令是一个短程转移指令 例:JMP SHORT LABLAB: 5、数值返回操作符( 1) SEG、 OFFSET 功能:z SEG操作符用于求一个标号或变量所在段的基地址z OFFSET操作符则用于求标号或变量在段中的地址偏移

11、量 例如,对于代码段中的一条指令:2000H:1234H ADDR: INC CX ;段地址 =2000H,偏移量=1234H则有:MOV AX, SEG ADDR ; AX 2000HMOV AX, OFFSET ADDR ; AX 1234H;与指令 “LEA AX, ADDR” 等价( 2) TYPE、 LENTH、 SIZE 功能:z TYPE:求变量的数值类型属性,即变量具有的字节数BYTE:返回 1; WORD:返回 2; DWORD :返回 4;FWORD :返回 6; QWORD :返回 8, TBYTE :返回 10;NEAR:返回 0FFH; FAR:返回 0FEHz LE

12、NGTH:求变量所占用的内存单元数用于由重复操作符 DUP()定义的存储器变量对于其他变量, LENGTH的返回值都是 1z SIZE:计算变量所占存储器的总字节数z 关系:SIZE = LENGTH TYPE 例:DATA1 DW 1234HDATA2 DB HELLODATA3 DD 100 DUP( 0);表示定义 100个值为 0的双字MOV AL, TYPE DATA1 ; AL 2MOV AL, TYPE DATA2 ; AL 1MOV AL, TYPE DATA3 ; AL 4MOV BL, LENGTH DATA1 ; BL 1MOV BL, LENGTH DATA2 ; BL

13、 1MOV BL, LENGTH DATA3 ; BL 100MOV CL, SIZE DATA1 ; CL 2 1=2MOV CL, SIZE DATA2 ; CL 1 1=1MOV CL, SIZE DATA3 ; CL 4 100=400( 3)字节分离运算符 HIGH、 LOW 功能:z HIGH:分离一个字常量或一个地址表达式的高字节z LOW:分离一个字常量或一个地址表达式的低字节 例:z 只能用于常量或结果为常量的表达式ADDR1: MOV AL, HIGH 1234H ; AL 12HMOV AL, LOW ADDR1 ; AL上一指令;地址偏移量的低 8位z 不能用于变量或寄

14、存器8MOV BL, HIGH AX6、运算符的优先级 表达式计算顺序:z 先处理优先级别高的运算符z 对于优先级相等的运算符,则按从左至右的顺序进行处理 优先级顺序:z ()、 (优先级最高)z LENGTH、 SIZEz PTR、 THIS、 SEG、 OFFSET、 TYPEz HIGH、 LOWz *、 /、 MOD、 SHL、 SHRz +、 -z EQ、 NE、 LT、 LE、 GT、 GEz NOTz ANDz OR、 XORz SHORT(优先级最低)第三节 汇编语言的语句一、指示性语句 格式( 里的内容可选):名字 伪指令符 操作数,操作数, ;注释 z 名字:变量名、段名等,与指令地址无关,后面不能加冒号z 伪指令符:指定汇编程序要完成的具体操作z 操作数:常量、变量或表达式等

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号