汇编语言及程序设计4.pptx
《汇编语言及程序设计4.pptx》由会员分享,可在线阅读,更多相关《汇编语言及程序设计4.pptx(128页珍藏版)》请在咨信网上搜索。
1、3.2 汇编语言程序设计汇编语言程序设计 n机器语言:计算机能直接理解并执行的二进制的代码,代码难以记忆,编程容易出错。每个CPU 都有特有的指令系统。n汇编语言:面向微处理器的指令语言,用指令助记符表示,便于书写记忆。实质是机器语言的符号表示,汇编语言与机器码对应。针对特定CPU、效率低,通用性差,用于实时控制和硬件接口。n高级语言:面向过程的语言,不依赖特定的机器,符合人们的思维习惯,通用性强,编译后的目标程序长,执行速度慢。3.2.1 汇编语言的基本元素汇编语言的基本元素 一、汇编语言的分段结构及汇编过程一、汇编语言的分段结构及汇编过程1、源程序结构、源程序结构 由几个逻辑段组成(段及大
2、小)由几个逻辑段组成(段及大小)以以END伪指令结束伪指令结束 逻辑段由语句序列组成(指令、伪指令、宏指令、注释,逻辑段由语句序列组成(指令、伪指令、宏指令、注释,空行)空行)除除CS段外,其他段寄存器用户设置段外,其他段寄存器用户设置 含有返回含有返回DOS的程序指令的程序指令NAME AHEXDATAS SEGMENT ;此处输入数据段代码此处输入数据段代码 DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,D
3、ATAS;段地址赋值;段地址赋值 MOV DS,AX MOV AX,STACKS;段地址赋值;段地址赋值 MOV SS,AX;;此处输入代码据核心代码;此处输入代码据核心代码 MOV AH,4CH;返回操作系统;返回操作系统 INT 21HCODES ENDS END START例:要求把例:要求把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 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 START 例:求例:求1
5、开始的连续开始的连续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 MOV CX,50;此处输入代码据核心代码此处输入代码据核心代码 MOV AX,0 MOV BX,1NEXT:ADD AX,BX I
6、NC BX INC BX DEC CX JNE NEXT MOV SUM,AX MOV AH,4CH;返回操作系统;返回操作系统 INT 21HCODES ENDS END START2、汇编过程n程序的编辑、汇编、连接二、汇编语言语句的类型和格式1、汇编语句种类n指令性语句:为8086的指令系统,与机器指令对应,是可执行的语句。n指示性语句:包括伪操作命令和伪操作符,不产生目标代码,是非执行指令,为汇编程序提供所需要的有关信息,仅在汇编过程中起作用。n宏指令语句:简化汇编源程序设计,用宏指令定义一段指令序列,汇编时将该指令序列取代宏指令。2、语句格式、语句格式由汇编语言编写的源程序是由许多语
7、句组成的。每个语由汇编语言编写的源程序是由许多语句组成的。每个语句由句由14个部分组成,个部分组成,每部分之间用空格每部分之间用空格(至少一个至少一个)分分开,开,其格式是:其格式是:。3 指令性语句说明n操作数:标号,界限符,常量,变量,表达式,寄存器。n常数操作数:数值常数,字符常数,数值符号名,数值表达式。n寄存器操作数:各种寄存器。n存储器操作数:标号,变量4、运算符和伪操作符运算符和伪操作符n1)运算符有算术运算符算术运算符、逻辑运算符逻辑运算符、关系关系运算符运算符算术运算符包括+、-、*、/、MOD、SHL(左移(左移一位相当于乘一位相当于乘2)、)、SHR(右移(右移1位相当于
8、除位相当于除2)例:例:数组ARRAY定义如下 ARRAY DB 1,2,3,4,5,6,7,8 TRY DB 20 MOV AX,30*5 MOV CX,(,(TRY-ARRAY)逻辑运算符逻辑运算符n逻辑运算符包括AND、OR、NOT、XOR 4种n逻辑运算符时按位运算的,只能对常数运算,n得到的结果也是常数。例:例:MOV AL,NOT 0FFH MOV BL,8CH AND 73H MOV AH,8CH OR 73H MOV CH,8CH XOR 73H关系运算符关系运算符关系运算符包括EQ、NE、LT、GT、LE、GE 6种关系运算符的两个操作数必须是数据,或是同一段内的两个存储单元
9、的地址。运算结果是一个数值,若结果为真,输出全是1,若结果为假,输出全0。例:例:MOV AX,10H GT 16 ADD BL,6 EQ 0110B SEGSEG取段址算符取段址算符取段址算符取段址算符功能功能:取变量或标号的段址 如:MOV AX,SEG BUF2)取值运算和属性操作取值运算和属性操作.分析运算分析运算分析运算分析运算符符符符.OFFSET.OFFSET取偏移地址算符取偏移地址算符取偏移地址算符取偏移地址算符功能功能:返回变量或标号的偏移地址 如:MOV SI,OFFSET BUF相当于指令 LEA SI,BUF.TYPE.TYPE取类型算符取类型算符取类型算符取类型算符功
10、功能能:返回变量的类型属性;返回标号的距离属性。变量类型为BYTE、WORD和DWORD时,返回的值分别为1、2和4;标号类型为NEAR或FAR时,则返回-1或-2。.LENGTH.LENGTH取变量所含存储单元的个数取变量所含存储单元的个数取变量所含存储单元的个数取变量所含存储单元的个数功能功能:分离出该变量所含存储单元的个数。注注意意:在在定定义义该该变变量量时时,数数据据定定义义伪伪指指令令后后面面的的第第一一个个表表达达式式的的形形式式为为“n n DUP(DUP(表表达式达式)”时,取值为时,取值为n n,否则为,否则为1 1。.SIZE.SIZE取变量所含存储区的总字节数。取变量所
11、含存储区的总字节数。取变量所含存储区的总字节数。取变量所含存储区的总字节数。功能功能:SIZE=LENGTH*TYPESIZE M1=200(因为TYPE M1=2)SIZE M2=2(因为TYPE M2=1)SIZE M3=1(因为TYPE M3=1).PTR.PTR格式格式:类型类型 PTR 表达式表达式类型类型:表达式表达式:是变量、标号或数值:是变量、标号或数值 变量的类型有:变量的类型有:BYTE、WORD和和DWORD;标号的类型有:标号的类型有:NEAR和和FAR;结构名称结构名称合成操作符合成操作符功功能能:PTR把它左边的属性指派给它右边的变量、标号或数值,使之产生一个新的存
12、储器地址操作数。如:(1)INC BYTE PTR BX (2)ADD DX,WORD PTR FOOB20 新存储器操作数的段地址和段内偏移量与PTR运算符右边的操作数的对应量相同。PTR给已分配的存储器一个另外的定义但并不重新分配存储器。例:例: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 L
13、O使使JMP安排在其他代码段中也可以使用,实现段间转移。安排在其他代码段中也可以使用,实现段间转移。.THIS.THIS操作符操作符操作符操作符格式:变量格式:变量/标号标号 EQU THIS 类型类型/距离距离功功能能:将EQU THIS右边的类型/距离属性,赋给左边的变量/标号,该变量或标号的段地址和偏移地址与下一存储单元的地址相同FIRST EQU THIS BYTETABLE DW 200 DUP(?)如:.SHORT.SHORT操作符操作符操作符操作符SHORT用于条件转移、转移和调用指令中,指出转移的目标地址和本指令之间的距离不超过一个字节所能表达的范围。.HIGH/LOW.HIG
14、H/LOW格式格式:HIGH/LOW 变量或标号变量或标号字节分离运算符,对一个数或地址表达式,字节分离运算符,对一个数或地址表达式,HIGH 从中分离出高位字节,从中分离出高位字节,LOW分离出分离出低位字节低位字节例:例:K1 EQU 0ABCDH K2 EQU 1234H MOV AH,HIGH K1 MOV BL,LOW K2n3)其他运算符其他运算符优先级3.2.2 3.2.2 伪指令语句伪指令语句指指令令语语句句:汇编程序把它们翻译成机器代码,命令8086执行对应操作。伪伪指指令令语语句句:汇编程序并不把它们翻译成机器代码,只是用来指示、引导汇编程序在汇编时做一些操作,它本身不占用
15、存储单元。*数据定义语句数据定义语句DB、DD等等*标号赋值语句标号赋值语句EQU,*段段定义语句定义语句SEGMENTENDS*段分配语句段分配语句ASSUME*过程定义语句过程定义语句PROCENDP*程序开始结束语句程序开始结束语句ORG,END伪指令主要分为下列几类:伪指令主要分为下列几类:一、数据定义语句一、数据定义语句一、数据定义语句一、数据定义语句DB、DW和DD等可用于定定义义变变量量和预预置置存存储储器器,变量后不能带冒号,任何变量均有下列三属性。(1)段属性即变量所使用的段;(2)段内偏移属性;(3)变量的类型:字节、字、双字等。DB/DW/DD/DQ/DT DB/DW/D
16、D/DQ/DT变量定义伪指令变量定义伪指令变量定义伪指令变量定义伪指令(1)格式:格式:变量名称变量名称 DB/DW/DD/DQ/DT表达式表达式功能功能:定义一数据存贮区。该数据存贮区的类类型型由所使用的数据定义伪指令指定(其中DB/DW/DD/DQ/DT定义的分别为字节型/字类型/双字型/四字/十个字节);存贮区中数据的个个数数由其后表达式的个数(包括重复因子)决定;并为各存储单元提供一个初值初值。(2)表现形式:表现形式:根据表达式的不同可有以下几种常见形式。根据表达式的不同可有以下几种常见形式。a.表达式为预置的一个常数项表达式表达式为预置的一个常数项表达式如:如:ABDBAB ;42
17、41HBADW AB ;4142HFENDW OFEH ;254SEG-FEHDW SEG FEN;变量;变量FEN的段址的段址PAR1DB74PAR2DW 1234H表达式存储的格式表达式存储的格式例:DA1 DB 10H,52H DA2 DW 1122H,34HDA3 DD 5*20H,0FFEEHDA1105222113400A00000EEFF0000DA2DA300例:表达式为字符串FIST DB HELLO SECOND DW OKTHREE DB OKFIST48454C4C4F4B4F4F4BSECONDTHREEHELLOOKOK注注意意:用用DB和和DW定定义义时时不不同同
18、的存放方式的存放方式b.表表达达式式中中出出现现“?”,表表示示只只分分配配存存储储单单元元,其初值不定。其初值不定。如:如:SUMDW?;分配一个字单元;分配一个字单元F1DB?;分配一个字节单元;分配一个字节单元c.表达式为预置地址表达式表达式为预置地址表达式(DW/DD)如如:TABLE-0FFDW TABLE ;TABLE的偏移量的偏移量D-PTR-T DD TABLE;TABLE的的16位偏移量和段址位偏移量和段址d.表达式为预置重复的算式。表达式为预置重复的算式。如:如:ZIPS DB 100 DUP(0)DB 2 DUP(0,3 DUP(1)二、表达式赋值语句二、表达式赋值语句二
19、、表达式赋值语句二、表达式赋值语句1.1.赋值语句赋值语句赋值语句赋值语句EQUEQU格式:符号名格式:符号名 EQU 数值表达式数值表达式功功能能:为常量、变量、表达式或其他符号定义一个名字,但不申请分配内存。如:THREE EQU 3 FIRSTW EQU WORD PTR BYT;把变量;BYT定义为名字是FIRSTW的字例:例:例:例:COUNT EQU 100 ;常数值赋给符号名;常数值赋给符号名COUNT DATA EQU COUNT+2 ;表达式值赋给符号名;表达式值赋给符号名DATA A1 EQU BX+SI ;变址寻址存储单元内容赋给符号名;变址寻址存储单元内容赋给符号名A1
20、 B1 EQU OFFSET A1 ;偏移地址值赋给符号名;偏移地址值赋给符号名B1 C1 EQU ADD ;加法指令赋给符号名;加法指令赋给符号名C1注:注:注:注:PURGEPURGE语句可以解除对某一个标号的赋值,使它在后面可以重新定义。语句可以解除对某一个标号的赋值,使它在后面可以重新定义。语句可以解除对某一个标号的赋值,使它在后面可以重新定义。语句可以解除对某一个标号的赋值,使它在后面可以重新定义。PURGE C1 PURGE C1 ;C1C1不再代替不再代替不再代替不再代替ADDADD2.2.等号语句等号语句等号语句等号语句=功功能能:等号语句“=”与EQU语句具有相同的功能,区别
21、仅在于EQU左边的标号不允许重新定义,而用“=”定义的语句允许重复定义。如:COUNT=100 COUNT=COUNT+1三、段定义语句三、段定义语句三、段定义语句三、段定义语句1.SEGMENT和ENDS定义方式:定义方式:段名 SEGMENT 定位类型 组合方式 分类名 语句 段名 ENDSSEGMENT与ENDS成对出现,不可省略。段名:段名:是逻辑段的标识符,不可省略,是逻辑段的标识符,不可省略,它确定了逻辑段在存储器中的地址。它确定了逻辑段在存储器中的地址。2.段分配语句(ASSUME)格式:格式:ASSUME CS:段名,:段名,DS:段名,:段名,SS:段名,:段名,ES:段名:
22、段名功能功能:定义4个逻辑段,指明段和段寄存器关系。注注:ASSUME只是建立当前定义的段名与段寄存器之间的联系,除除了了CS外外,不能将各个段的段地址装入相应的段寄存器中,DS、ES、SS的设置必须通过指令性语句来完成。四、过程定义语句四、过程定义语句四、过程定义语句四、过程定义语句其其其其中中中中过过过过程程程程名名名名是是是是为为为为该该该该过过过过程程程程指指指指定定定定的的的的一一一一个个个个名名名名称称称称,与变量、标号的定义法相同。与变量、标号的定义法相同。与变量、标号的定义法相同。与变量、标号的定义法相同。使用格式:过程名使用格式:过程名 PROC NEAR/FAR RET 过
23、程名过程名 ENDP功功能能:把把具具有有一一定定功功能能的的程程序序段段设设计计成成为为一一个个过过程程(子子程程序序),便便于于实实现现模模块块化化的的程程序设计。序设计。注注:(1)CALL指令中过程名起着标号的作用。有段属性、偏移量属性和类型属性(NEAR和FAR)。(2)子程序中至少有一个RET。MCODE SEGMENTMAIN SPD PROC FAR ;过程定义,远过程属性过程定义,远过程属性 RETSPD EDNP CALL SPD ;同一段内调用同一段内调用 MCODE ENDS例:过程的定义及调用格式NCODE SEGMENT CALL SPD ;远过程调用远过程调用 N
24、CODE ENDS END MAIN1.NAME1.NAME和和和和ENDEND伪指令伪指令伪指令伪指令功功能能:定义一个模块,作为一个独立的汇编单位,在输出汇编语言程序的列表文件时,将在每一页的开头打印出该程序名。若源程序中省略NAME,则将源文件名作为目标模块的名字。格式:格式:NAME 模块名模块名 END 标号标号五、程序开始和结束语句五、程序开始和结束语句五、程序开始和结束语句五、程序开始和结束语句注注:一一个个模模块块是是一一个个独独立立的的汇汇编编单单位位,汇汇编编处理只进行到模块结束语句处理只进行到模块结束语句ENDEND为止。为止。例:例:CODE SEGMENT START
25、:SUB1 PROC NEAR SUB1 ENDP CODE ENDS END START2.ORG格式:格式:ORG 表达式表达式功功能能:给汇编程序设置位置指针,指定下面语句的起始偏移地址。表表达达式式为为给给定定的的偏偏移移地地址址。一一般般情情况况下下,段段定定义义语语句句(SEGMENT)指指出出了了段段的的起起点点,偏偏移移地地址址为为0,段段内内各各语语句句或或数数据据的的地地址址由由段段地地址址开开始始依依次次类类推推可可确确定定。当当用用户户要要求求指定某条指令或数据为某个指定地址时,可用指定某条指令或数据为某个指定地址时,可用ORG来改变。来改变。例:用例:用ORG改变数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。