汇编语言程序设计 课件.ppt
《汇编语言程序设计 课件.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计 课件.ppt(116页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章 80x86汇编语言程序设计,第五节 编写完整的汇编语言程序,第四节 宏汇编指令,第三节 汇编语言的语句,第二节 汇编语言语句的组成,第一节 汇编语言概述,第六节 汇编语言程序设计,机器语言二进制数形式的指令和数据。 B0 64 是什么意思?这就是机器语言。既不直观,又不易理解和记忆. MOV AL,64H ;很容易记忆理解,这就是助记符。,助记符用便于记忆的英语单词表示的指令操作码。它反映了指令的功能和主要特征,便于人们理解和记忆。,第一节 汇编语言概述,指令除了操作码以外,还有一个操作数问题。,操作数可能放在存储器中,这就涉及操作数的地址。程序中遇到转移指令或调用指令,也需要知道转移
2、地址,若采用具体地址就很不方便,一旦有错,改动也很麻烦。于是人们采用标号或符号来代替地址,例: LP1: mov ax,VAR loop LP1 汇编语言指令助记符,符号地址,标号,伪指令等语言元素的集合以及这些元素使用的规则。 用汇编语言编写的程序叫汇编语言源程序。,面向过程的语言,如C、C+、BASIC、PASCAL等优点:更接近人类语言的语法习惯,易于掌握,便于建立数学模型和实现复杂算法缺点:与机器语言无明显对应关系,因此编译出来的机器语言程序效率相对较低,占用内存多,执行时间长。,高级语言,汇编程序,源程序的编译程序,汇编程序,汇编语言源程序,机器语言目标程序,汇编源程序需翻译成机器语
3、言,变成可执行文件,机器才能执行,这个翻译过程叫汇编。高级语言中称该过程为“解释”或“编译”。执行翻译的程序称为“汇编程序”。,汇编语言程序设计与执行过程,输入汇编语言源程序 源文件 .ASM汇编(编译) 目标文件 .OBJ链接 可执行文件 .EXE调试 最终程序,编辑器: EDIT.exe编程序: MASM.exe连接程序:LINK.exe调试程序:DEBUG.exe,DATASEGMENTSTRINGDBHELLO WORLD!, 0DH, 0AH, $DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATABEGIN:MOVAX, DATAMOVDS, AX;初
4、始化数据段的段地址MOVAH, 09HLEADX, STRING;输出字符串INT21HMOVAH, 4CHINT21H;调用4CH号系统功能返回DOSCODEENDSENDBEGIN,数据段,代码段,一个简单的8086系统下的汇编语言程序:,第二节 汇编语言语句的组成,汇编语言程序的语句中包含的元素,一、字符集,二、保留字与标识符,三、常量、变量与标号,四、表达式及运算符,一、字符集,允许使用的字符:字母,包括大写字母AZ和小写字母az;数字,包括09;特殊字符,包括:+ - * / =() ; , “ . :? $ & 及空格、制表符、回车、换行等。注意:除了字符串,字母都是不区分大小写一
5、系列相连的空格、制表符效果相当于一个空格一系列相连的回车换行相当于一次回车换行分号“;”后一直到行尾的内容都是注释字符“&”若用于某行的开头,则表示该行是上一行的续行,二、保留字与标识符,1、保留字在汇编语言中有特定意义的词,可分为:指令助记符及指令前缀如:MOV、ADD、REP等寄存器名如:AX、EBX、CL等伪指令助记符如: DB、SEGMENT等其他保留字,包括运算符、操作符等如: EQ、LT、OFFSET、SEG等,2、标识符,标识符是程序员自己起的名字,如变量名、标号、段名、过程名等标识符的命名规则:标识符必须由字母、数字和几个特殊字符(包括 _ $ ? :)组成,而且第一个字符不能
6、是数字(否则可能与16进制的数字混淆)标识符不能与某个保留字相同,以免混淆尽量用有意义的英文单词或缩写来命名,以增加程序的可读性,三、常量、变量与标号,1、常量数字常量二进制:以B结尾,如10101010B八进制:以Q结尾,如123Q,67Q十进制:以D结尾,“D”可省略,如1234D,5678十六进制:以H结尾,AF开头的数须在前面加“0” 如:1234H,0FFFFH字符串常量用单引号或双引号引起来的一个或多个ASCII字符每个字符的值等于其ASCII码值例:A=41H一个字节,12=31H、32H两个字节,2、变量,变量是存放在存储器中的操作数 可通过变量的名字来访问变量变量具有三个属性
7、:段属性,即变量所在的段的基地址;偏移量属性,即变量相对于段的起始地址的偏移量;类型属性,包括BYTE(字节)、WORD(字)、DWORD(双字),3、标号,标号是一条指令性语句的起始地址标号具有三个属性:段属性,即标号所在的段的基地址;偏移量属性,即标号相对于段的起始地址的偏移量;类型属性,包括NEAR(近程,即段内)、FAR(远程,即段间),四、表达式及运算符,由常量、变量、标号和一些运算符、操作符构成的式子表达式的值在汇编的过程中就已经被汇编程序计算出来运算符的分类:,1、算术运算符,五种算术运算:加:+、 减:-、 乘:*、 除:/、 模:MOD合法地址表达式:地址-地址(处在同个段中
8、);地址常数ADDR1-ADDR2(假设两个地址处在同个段中)ADDR1+1ADDR2-2非法地址表达式:地址+地址;地址*地址;地址/地址;常量-地址;地址-地址(处在不同段中)ADDR1+ADDR2ADDR1*ADDR2ADDR1/2100-ADDR1SEG1_A-SEG2_B (假设两个地址处在不同段中),2、逻辑运算符,五种逻辑运算:与AND、或OR、异或XOR、非NOT、逻辑左移SHL、逻辑右移SHR 只用于数字表达式中例:MOV AL,10101010B AND 11001100B ;AL10001000BMOV AX,1000100010001000B XOR 110011001
9、1001100B;AX0100010001000100B,3、关系运算符,六种关系运算符:EQ(Equal,相等)NE(Not Equal,不等)LT(Less Than,小于)LE(Less than or Equal,小于或等于)GT(Great Than,大于)GE(Great than or Equal,大于或等于)运算结果:关系为真,则运算结果为0FFFFH关系为假,则运算结果为0 如:MOV BX,1 EQ 2; 结果 BX=0MOV AX,(3 LT 4) AND 1;结果 AX=1,4、属性运算符,(1)型重新指定操作符PTR功能:临时指定或修改存储器操作数的数据类型属性或地址
10、类型属性格式:类型 PTR 表达式例:VAR_WDW1234HMOV AX,VAR_W ;AX1234HMOV AL,BYTE PTR VAR_W ;AL34H,PTR与EQU连用作用:定义与表达式类型不同的新变量名或新标号,但不分配新的存储单元例:数据段定义:DATA_B DB 1,2,3,4DATA_W EQU WORD PTR DATA_B代码段:MOVAL,DATA_B ;AL1MOVAX,WORD PTR DATA_B ;AX0201HMOVAX,DATA_W ;AX0201H(第2、3条指令等价),(2)类型指定操作符THIS,功能:指定或说明变量或标号的类型例1:DATA_W E
11、QU THIS WORDDATA_B DB1,2,3,4MOVAL,DATA_B ;AL1MOVAX,WORD PTR DATA_B ;AX0201HMOVAX,DATA_W ;AX0201H例2:ADDR_F EQU THIS FARADDR_N: MOV AX,1 JMP ADDR_F ;等价于:JMP FAR PTR ADDR_N,(3)短转移操作符SHORT,功能:一般用在JMP指令 告诉汇编程序该JMP指令是一个短程转移指令 例: JMP SHORT LAB LAB:,5、数值返回操作符,(1)SEG、OFFSET功能:SEG操作符用于求一个标号或变量所在段的基地址OFFSET操作符
12、则用于求标号或变量在段中的地址偏移量例如,对于代码段中的一条指令:2000H:1234H ADDR: INC CX ;段地址=2000H,偏移量=1234H则有:MOV AX,SEG ADDR ;AX2000HMOV AX,OFFSET ADDR ;AX1234H;与指令 “LEA AX,ADDR” 等价,(2)TYPE、LENGTH、SIZE,功能:TYPE:求变量的数值类型属性,即变量具有的字节数BYTE:返回1;WORD:返回2;DWORD :返回4;NEAR:返回0FFH(-1);FAR:返回0FEH(-2)LENGTH:求变量所占用的内存单元数用于由重复操作符DUP()定义的存储器变
13、量对于其他变量,LENGTH的返回值都是1SIZE:计算变量所占存储器的总字节数 关系:SIZE = LENGTH TYPE,例:DATA1 DW 1234HDATA2 DB HELLODATA3 DD 100 DUP(0);表示定义100个值为0的双字MOV AL,TYPEDATA1;AL2MOV AL,TYPEDATA2;AL1MOV AL,TYPEDATA3;AL4MOV BL,LENGTH DATA1;BL1MOV BL,LENGTH DATA2;BL1MOV BL,LENGTH DATA3;BL100MOV CL,SIZEDATA1;CL21=2MOV CL,SIZEDATA2;CL
14、11=1MOV CL,SIZEDATA3;CL4100=400,6、运算符的优先级,表达式计算顺序:先处理优先级别高的运算符对于优先级相等的运算符,则按从左至右的顺序进行处理优先级顺序:()、(优先级最高)LENGTH、SIZEPTR、THIS、SEG、OFFSET、TYPEHIGH、LOW*、/、MOD、SHL、SHR+、-EQ、NE、LT、LE、GT、GENOTANDOR、XORSHORT(优先级最低),第三节 汇编语言的语句,汇编语言由指令性语句和指示性语句组成指令性语句由CPU执行,每一条指令性语句都有一条机器码指令与其对应;指示性语句由汇编程序执行。它指出汇编程序应如何对源程序进行汇
15、编,如何定义变量、分配存储单元以及指示程序开始和结束等。指示性语句无机器码指令与其相对应。 指令性语句汇编时生成机器码; 指示性语句汇编时不生成机器码。,第三节 汇编语言的语句,一、指示性语句格式(里的内容可选):名字 伪指令符 操作数,操作数, ;注释名字:变量名、段名等,与指令地址无关,后面不能加冒号伪指令符:指定汇编程序要完成的具体操作操作数:常量、变量或表达式等注释:说明、解释当前语句的作用,功能:为变量分配存储空间格式:变量名 伪指令符 操作数,操作数, ;注释六种数据定义伪指令:DB(字节定义):每个操作数占1个字节DW(字定义):每个操作数占1个字,即2个字节DD(双字定义):每
16、个操作数的长度为双字,即4个字节,1、数据定义伪指令,例:可同时定义多个数据:NUM DW 12H,-1 ;定义2个字STRING DB HELLO,0DH,0AH;定义字符串省略变量名:BUF DB 1,10,100 DB 1 ;省略变量名 ;但该数据仍可通过“BUF+3”访问无初始化数据定义:用问号“?”代替操作数BUFFER DB 2,?,?,? ;定义4个字节 ;其中后3个字节不初始化,DUP操作符:格式:重复的次数 DUP(重复的内容)例:ARRAYDB3 DUP(1,2);等价于:ARRAY DB 1,2,1,2,1,2BUF_WDW100 DUP(?);定义100个字,但不初始化
17、DUP的嵌套使用:ARRAY2DB2 DUP(1,3 DUP(0) ;等价于:ARRAY2 DB 1,0,0,0,1,0,0,0,地址表达式作为操作数:只能用DW、DD定义DW:变量/标号的偏移量DD:变量/标号的段地址和偏移量例:DATA1 DWADDR1+1;把ADDR1偏移量加1后存放到DATA1对应的存储单元中DATA2 DDDATA1;把DATA1的偏移量和段地址存放到DATA2对应的存储单 元中,其中偏移量放低地址,段地址放高地址。,地址计数器“$”“$”:表示到目前为止该段已经使用的地址空间例1:设VAR1地址偏移量为1000H,则:VAR1DB100H DUP (?)之后,$=
18、1100H,因此:ADDR1DW$等价于“ADDR1 DW 1100H”,也等价于“ADDR1 DW ADDR1”例2:STRING DB ABCLEN DW $-STRING ;LEN的值为STRING的长度,(1)等价伪指令EQU格式:符号名EQU 表达式功能:为常量、表达式及其他各种符号定义一个别名例:NUMEQU 12;给数值定义符号名NUM2EQU NUM+10;给12+10=22定义符号名ADDREQU DS:BX+SI ;给寻址表达式定义符号名COUNTEQU CX;给寄存器CX定义符号名CLEAREQU XOR AX,AX;给指令定义符号名,2、符号定义伪指令,(2)解除伪指令
19、PURGE格式:PURGE 符号名,符号名,作用:EQU伪指令不能直接对一个符号名重定义,必须先用PURGE解除例:COUNTEQU CXPURGE COUNTCOUNTEQUCL,(3)等号“=”伪指令格式:符号名=表达式功能:为常量、表达式及其他各种符号定义一个等价的符号名 允许对符号名多次重复定义,且以最后一次定义的值为准 例:CONST= 1;给数值1定义符号名CONSTADDR= BP+DI;给寻址表达式定义符号名ADDRCONST= 0;重定义CONST,格式:段名 SEGMENT定位方式组合方式使用类型类名 ;段中的内容段名 ENDS功能:定义一个段例:DATASEGMENTVA
20、RDB?DATAENDS得到段地址的两种方法:MOVAX,DATAMOVAX,SEG VAR,3、段定义伪指令,(1)定位方式作用:设置该段在存储器中的起始边界分类:BYTE:可从任意的绝对地址开始,如12345H。WORD:可从偶地址开始。如12346H。DWORD:可以任何一个双字的边界开始,如12348H。PARA(缺省方式):必须从存储器的16字节的边界开始,如12340H(最后一位为0)。PAGE:起始地址必须能被256整除,如12300H。,(2)类名用单引号括起来的字符串连接定位时,具有相同类名的逻辑段会被组合在一起 如:在模块1中有段定义: seg1 SEGMENT PARA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 语言程序设计 课件
限制150内