汇编语言及程序设计4.pptx
《汇编语言及程序设计4.pptx》由会员分享,可在线阅读,更多相关《汇编语言及程序设计4.pptx(128页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、n机器语言:计算机能直接理解并执行的二进制的代码,代码难以记忆,编程容易出错。每个CPU 都有特有的指令系统。n汇编语言:面向微处理器的指令语言,用指令助记符表示,便于书写记忆。实质是机器语言的符号表示,汇编语言与机器码对应。针对特定CPU、效率低,通用性差,用于实时控制和硬件接口。n高级语言:面向过程的语言,不依赖特定的机器,符合人们的思维习惯,通用性强,编译后的目标程序长,执行速度慢。第1页/共128页汇编语言的基本元素汇编语言的基本元素 一、汇编语言的分段结构及汇编过程一、汇编语言的分段结构及汇编过程1、源程序结构、源程序结构 由几个逻辑段组成(段及大小)由几个逻辑段组成(段及大小)以以
2、END伪指令结束伪指令结束 逻辑段由语句序列组成(指令、伪指令、宏指令、注释,逻辑段由语句序列组成(指令、伪指令、宏指令、注释,空行)空行)除除CS段外,其他段寄存器用户设置段外,其他段寄存器用户设置 含有返回含有返回DOS的程序指令的程序指令第2页/共128页NAME AHEXDATAS SEGMENT ;此处输入数据段代码此处输入数据段代码 DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATAS;段地址赋
3、值;段地址赋值 MOV DS,AX MOV AX,STACKS;段地址赋值;段地址赋值 MOV SS,AX;;此处输入代码据核心代码;此处输入代码据核心代码 MOV AH,4CH;返回操作系统;返回操作系统 INT 21HCODES ENDS END START第3页/共128页例:要求把例:要求把3个个16位的数相加,其和仍为位的数相加,其和仍为16位数。位数。NAME ADDHEXSTACK SEGMENTSTAPN DB 200 DUP(0);此处输入堆栈段代码此处输入堆栈段代码TOP EQU LENGTH STAPNSTACK ENDSDATA SEGMENTNUM1 DW 1234H
4、NUM2 DW 5678HNUM3 DW 0ABCDHANS DW?;此处输入数据段代码此处输入数据段代码 DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAS;段地址赋值;段地址赋值 MOV DS,AX 第4页/共128页 MOV AX,STACK;段地址赋值;段地址赋值 MOV SS,AX MOV SP,TOP MOV AX,NUM1 ADD AX,NUM2 ADD AX,NUM3 MOV ANS,AX MOV AH,4CH;返回操作系统;返回操作系统 INT 21HCODE ENDS END STA
5、RT第5页/共128页 例:求例:求1开始的连续开始的连续50个奇数的和,存放在个奇数的和,存放在SUM中中DATAS SEGMENT SUM DW 0 ;此处输入数据段代码此处输入数据段代码 DATAS ENDSSTACKS SEGMENT DB 200DUP(0);此处输入堆栈段代码此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATAS;段地址赋值;段地址赋值 MOV DS,AX 第6页/共128页 MOV CX,50;此处输入代码据核心代码此处输入代码据核心代码 MOV
6、AX,0 MOV BX,1NEXT:ADD AX,BX INC BX INC BX DEC CX JNE NEXT MOV SUM,AX MOV AH,4CH;返回操作系统;返回操作系统 INT 21HCODES ENDS END START第7页/共128页2、汇编过程n程序的编辑、汇编、连接第8页/共128页第9页/共128页第10页/共128页第11页/共128页第12页/共128页第13页/共128页二、汇编语言语句的类型和格式1、汇编语句种类n指令性语句:为8086的指令系统,与机器指令对应,是可执行的语句。n指示性语句:包括伪操作命令和伪操作符,不产生目标代码,是非执行指令,为汇编
7、程序提供所需要的有关信息,仅在汇编过程中起作用。n宏指令语句:简化汇编源程序设计,用宏指令定义一段指令序列,汇编时将该指令序列取代宏指令。第14页/共128页2、语句格式、语句格式由汇编语言编写的源程序是由许多语句组成的。每个语由汇编语言编写的源程序是由许多语句组成的。每个语句由句由14个部分组成,个部分组成,每部分之间用空格每部分之间用空格(至少一个至少一个)分分开,开,其格式是:其格式是:。第15页/共128页3 指令性语句说明n操作数:标号,界限符,常量,变量,表达式,寄存器。n常数操作数:数值常数,字符常数,数值符号名,数值表达式。n寄存器操作数:各种寄存器。n存储器操作数:标号,变量
8、第16页/共128页第17页/共128页4、运算符和伪操作符运算符和伪操作符n1)运算符有算术运算符算术运算符、逻辑运算符逻辑运算符、关系关系运算符运算符算术运算符包括+、-、*、/、MOD、SHL(左移(左移一位相当于乘一位相当于乘2)、)、SHR(右移(右移1位相当于除位相当于除2)例:例:数组ARRAY定义如下 ARRAY DB 1,2,3,4,5,6,7,8 TRY DB 20 MOV AX,30*5 MOV CX,(,(TRY-ARRAY)第18页/共128页逻辑运算符逻辑运算符n逻辑运算符包括AND、OR、NOT、XOR 4种n逻辑运算符时按位运算的,只能对常数运算,n得到的结果也
9、是常数。例:例:MOV AL,NOT 0FFH MOV BL,8CH AND 73H MOV AH,8CH OR 73H MOV CH,8CH XOR 73H第19页/共128页关系运算符关系运算符关系运算符包括EQ、NE、LT、GT、LE、GE 6种关系运算符的两个操作数必须是数据,或是同一段内的两个存储单元的地址。运算结果是一个数值,若结果为真,输出全是1,若结果为假,输出全0。例:例:MOV AX,10H GT 16 ADD BL,6 EQ 0110B 第20页/共128页SEGSEG取段址算符取段址算符取段址算符取段址算符功能功能:取变量或标号的段址 如:MOV AX,SEG BUF2
10、)取值运算和属性操作取值运算和属性操作.分析运算分析运算分析运算分析运算符符符符第21页/共128页.OFFSET.OFFSET取偏移地址算符取偏移地址算符取偏移地址算符取偏移地址算符功能功能:返回变量或标号的偏移地址 如:MOV SI,OFFSET BUF相当于指令 LEA SI,BUF第22页/共128页.TYPE.TYPE取类型算符取类型算符取类型算符取类型算符功功能能:返回变量的类型属性;返回标号的距离属性。变量类型为BYTE、WORD和DWORD时,返回的值分别为1、2和4;标号类型为NEAR或FAR时,则返回-1或-2。第23页/共128页.LENGTH.LENGTH取变量所含存储
11、单元的个数取变量所含存储单元的个数取变量所含存储单元的个数取变量所含存储单元的个数功能功能:分离出该变量所含存储单元的个数。注注意意:在在定定义义该该变变量量时时,数数据据定定义义伪伪指指令令后后面面的的第第一一个个表表达达式式的的形形式式为为“n n DUP(DUP(表表达式达式)”时,取值为时,取值为n n,否则为,否则为1 1。第24页/共128页.SIZE.SIZE取变量所含存储区的总字节数。取变量所含存储区的总字节数。取变量所含存储区的总字节数。取变量所含存储区的总字节数。功能功能:SIZE=LENGTH*TYPESIZE M1=200(因为TYPE M1=2)SIZE M2=2(因
12、为TYPE M2=1)SIZE M3=1(因为TYPE M3=1)第25页/共128页.PTR.PTR格式格式:类型类型 PTR 表达式表达式类型类型:表达式表达式:是变量、标号或数值:是变量、标号或数值 变量的类型有:变量的类型有:BYTE、WORD和和DWORD;标号的类型有:标号的类型有:NEAR和和FAR;结构名称结构名称合成操作符合成操作符第26页/共128页功功能能:PTR把它左边的属性指派给它右边的变量、标号或数值,使之产生一个新的存储器地址操作数。如:(1)INC BYTE PTR BX (2)ADD DX,WORD PTR FOOB20 新存储器操作数的段地址和段内偏移量与P
13、TR运算符右边的操作数的对应量相同。PTR给已分配的存储器一个另外的定义但并不重新分配存储器。第27页/共128页例:例:N1 DB 15H,36H N2 DW 1122H,3344HLO:MOV AX,WORD PTR N1;使使N1类型转换成字与类型转换成字与AX类型匹配类型匹配 MOV BL,BYTE PTR N2 ;使使N2类型转换成字节与类型转换成字节与BL类型匹配类型匹配也可以用也可以用PTR来改变距离属性,如来改变距离属性,如:JMP FAR PTR LO使使JMP安排在其他代码段中也可以使用,实现段间转移。安排在其他代码段中也可以使用,实现段间转移。第28页/共128页.THI
14、S.THIS操作符操作符操作符操作符格式:变量格式:变量/标号标号 EQU THIS 类型类型/距离距离功功能能:将EQU THIS右边的类型/距离属性,赋给左边的变量/标号,该变量或标号的段地址和偏移地址与下一存储单元的地址相同FIRST EQU THIS BYTETABLE DW 200 DUP(?)如:第29页/共128页.SHORT.SHORT操作符操作符操作符操作符SHORT用于条件转移、转移和调用指令中,指出转移的目标地址和本指令之间的距离不超过一个字节所能表达的范围。第30页/共128页.HIGH/LOW.HIGH/LOW格式格式:HIGH/LOW 变量或标号变量或标号字节分离运
15、算符,对一个数或地址表达式,字节分离运算符,对一个数或地址表达式,HIGH 从中分离出高位字节,从中分离出高位字节,LOW分离出分离出低位字节低位字节例:例:K1 EQU 0ABCDH K2 EQU 1234H MOV AH,HIGH K1 MOV BL,LOW K2第31页/共128页n3)其他运算符其他运算符第32页/共128页优先级第33页/共128页伪指令语句伪指令语句指指令令语语句句:汇编程序把它们翻译成机器代码,命令8086执行对应操作。伪伪指指令令语语句句:汇编程序并不把它们翻译成机器代码,只是用来指示、引导汇编程序在汇编时做一些操作,它本身不占用存储单元。第34页/共128页*
16、数据定义语句数据定义语句DB、DD等等*标号赋值语句标号赋值语句EQU,*段段定义语句定义语句SEGMENTENDS*段分配语句段分配语句ASSUME*过程定义语句过程定义语句PROCENDP*程序开始结束语句程序开始结束语句ORG,END伪指令主要分为下列几类:伪指令主要分为下列几类:第35页/共128页一、数据定义语句一、数据定义语句一、数据定义语句一、数据定义语句DB、DW和DD等可用于定定义义变变量量和预预置置存存储储器器,变量后不能带冒号,任何变量均有下列三属性。(1)段属性即变量所使用的段;(2)段内偏移属性;(3)变量的类型:字节、字、双字等。第36页/共128页 DB/DW/D
17、D/DQ/DT DB/DW/DD/DQ/DT变量定义伪指令变量定义伪指令变量定义伪指令变量定义伪指令(1)格式:格式:变量名称变量名称 DB/DW/DD/DQ/DT表达式表达式功能功能:定义一数据存贮区。该数据存贮区的类类型型由所使用的数据定义伪指令指定(其中DB/DW/DD/DQ/DT定义的分别为字节型/字类型/双字型/四字/十个字节);存贮区中数据的个个数数由其后表达式的个数(包括重复因子)决定;并为各存储单元提供一个初值初值。第37页/共128页(2)表现形式:表现形式:根据表达式的不同可有以下几种常见形式。根据表达式的不同可有以下几种常见形式。a.表达式为预置的一个常数项表达式表达式为
18、预置的一个常数项表达式如:如:ABDBAB ;4241HBADW AB ;4142HFENDW OFEH ;254SEG-FEHDW SEG FEN;变量;变量FEN的段址的段址PAR1DB74PAR2DW 1234H第38页/共128页表达式存储的格式表达式存储的格式例:DA1 DB 10H,52H DA2 DW 1122H,34HDA3 DD 5*20H,0FFEEHDA1105222113400A00000EEFF0000DA2DA300第39页/共128页例:表达式为字符串FIST DB HELLO SECOND DW OKTHREE DB OKFIST48454C4C4F4B4F4F
19、4BSECONDTHREEHELLOOKOK注注意意:用用DB和和DW定定义义时时不不同同的存放方式的存放方式第40页/共128页b.表表达达式式中中出出现现“?”,表表示示只只分分配配存存储储单单元元,其初值不定。其初值不定。如:如:SUMDW?;分配一个字单元;分配一个字单元F1DB?;分配一个字节单元;分配一个字节单元c.表达式为预置地址表达式表达式为预置地址表达式(DW/DD)如如:TABLE-0FFDW TABLE ;TABLE的偏移量的偏移量D-PTR-T DD TABLE;TABLE的的16位偏移量和段址位偏移量和段址第41页/共128页d.表达式为预置重复的算式。表达式为预置重
20、复的算式。如:如:ZIPS DB 100 DUP(0)DB 2 DUP(0,3 DUP(1)第42页/共128页二、表达式赋值语句二、表达式赋值语句二、表达式赋值语句二、表达式赋值语句1.1.赋值语句赋值语句赋值语句赋值语句EQUEQU格式:符号名格式:符号名 EQU 数值表达式数值表达式功功能能:为常量、变量、表达式或其他符号定义一个名字,但不申请分配内存。如:THREE EQU 3 FIRSTW EQU WORD PTR BYT;把变量;BYT定义为名字是FIRSTW的字第43页/共128页例:例:例:例:COUNT EQU 100 ;常数值赋给符号名;常数值赋给符号名COUNT DATA
21、 EQU COUNT+2 ;表达式值赋给符号名;表达式值赋给符号名DATA A1 EQU BX+SI ;变址寻址存储单元内容赋给符号名;变址寻址存储单元内容赋给符号名A1 B1 EQU OFFSET A1 ;偏移地址值赋给符号名;偏移地址值赋给符号名B1 C1 EQU ADD ;加法指令赋给符号名;加法指令赋给符号名C1注:注:注:注:PURGEPURGE语句可以解除对某一个标号的赋值,使它在后面可以重新定义。语句可以解除对某一个标号的赋值,使它在后面可以重新定义。语句可以解除对某一个标号的赋值,使它在后面可以重新定义。语句可以解除对某一个标号的赋值,使它在后面可以重新定义。PURGE C1
22、PURGE C1 ;C1C1不再代替不再代替不再代替不再代替ADDADD第44页/共128页2.2.等号语句等号语句等号语句等号语句=功功能能:等号语句“=”与EQU语句具有相同的功能,区别仅在于EQU左边的标号不允许重新定义,而用“=”定义的语句允许重复定义。如:COUNT=100 COUNT=COUNT+1第45页/共128页三、段定义语句三、段定义语句三、段定义语句三、段定义语句1.SEGMENT和ENDS定义方式:定义方式:段名 SEGMENT 定位类型 组合方式 分类名 语句 段名 ENDS第46页/共128页SEGMENT与ENDS成对出现,不可省略。段名:段名:是逻辑段的标识符,
23、不可省略,是逻辑段的标识符,不可省略,它确定了逻辑段在存储器中的地址。它确定了逻辑段在存储器中的地址。第47页/共128页2.段分配语句(ASSUME)格式:格式:ASSUME CS:段名,:段名,DS:段名,:段名,SS:段名,:段名,ES:段名:段名功能功能:定义4个逻辑段,指明段和段寄存器关系。注注:ASSUME只是建立当前定义的段名与段寄存器之间的联系,除除了了CS外外,不能将各个段的段地址装入相应的段寄存器中,DS、ES、SS的设置必须通过指令性语句来完成。第48页/共128页四、过程定义语句四、过程定义语句四、过程定义语句四、过程定义语句其其其其中中中中过过过过程程程程名名名名是是
24、是是为为为为该该该该过过过过程程程程指指指指定定定定的的的的一一一一个个个个名名名名称称称称,与变量、标号的定义法相同。与变量、标号的定义法相同。与变量、标号的定义法相同。与变量、标号的定义法相同。使用格式:过程名使用格式:过程名 PROC NEAR/FAR RET 过程名过程名 ENDP第49页/共128页功功能能:把把具具有有一一定定功功能能的的程程序序段段设设计计成成为为一一个个过过程程(子子程程序序),便便于于实实现现模模块块化化的的程程序设计。序设计。注注:(1)CALL指令中过程名起着标号的作用。有段属性、偏移量属性和类型属性(NEAR和FAR)。(2)子程序中至少有一个RET。第
25、50页/共128页MCODE SEGMENTMAIN SPD PROC FAR ;过程定义,远过程属性过程定义,远过程属性 RETSPD EDNP CALL SPD ;同一段内调用同一段内调用 MCODE ENDS例:过程的定义及调用格式NCODE SEGMENT CALL SPD ;远过程调用远过程调用 NCODE ENDS END MAIN第51页/共128页1.NAME1.NAME和和和和ENDEND伪指令伪指令伪指令伪指令功功能能:定义一个模块,作为一个独立的汇编单位,在输出汇编语言程序的列表文件时,将在每一页的开头打印出该程序名。若源程序中省略NAME,则将源文件名作为目标模块的名字
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计
限制150内