




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言,第5章,5.18086汇编语言基础5.1.1汇编语言基本语法5.1.2汇编语言语句5.1.3伪指令语句5.1.4宏指令语句,5.2汇编语言程序设计5.2.1顺序程序设计5.2.2分支程序设计5.2.3循环程序设计5.2.4子程序设计5.2.5DOS功能调用,汇编语言的处理过程:(1)编写汇编语言源程序,生成扩展名为ASM的汇编源源文件。(2)对汇编源程序进行编译。(3)对目标文件进行连接。,教学进程,5.1,8086汇编语言基础,1)效率低(与人们描述计算过程的需要差距大);2)机器硬件的具体结构联系过于紧密在一种结构的机器上开发的程序极难移植到另一种不同结构的机器上去。,教学进程,5.1,8086汇编语言基础,汇编语言进行程序设计的优点,1)充分利用机器的硬件功能和结构特点,加快程序的执行速度,减少目标程序所占用的存储空间;2)用来编写实时控制程序、实时通信程序,有时也用来编制某些系统软件程序。,汇编语言进行程序设计缺点,教学进程,宏指令语句是由编程者按照一定的规则来定义的一种较“宏大”的指令,可包括多条指令或伪指令。,汇编语言基本语法,在8086汇编中使用的语句可以分成3种类型,这类指令能够产生目标代码,是CPU可以执行的能够完成特定功能的语句,主要由机器指令组成。在汇编时一条指令语句被翻译成对应的机器码,对应着特定的操作。,伪指令语句是为汇编程序和连接程序提供一些必要控制的管理性语句,它不产生目标代码,仅仅在汇编过程中告诉汇编程序应如何汇编,并完成相应的伪操作。,5.1.1,教学进程,汇编语言源程序中的语句可以由四项组成,格式如下:名字操作符操作数;注释,汇编语言语句,5.1.2,(2)操作符可以是指令、伪指令或宏指令的助记符。(3)操作数字段是操作符的操作对象。(4)注释字段是以“;”开头的说明部分,可以用英文或者中文书写。,(1)名字项是程序设计人员自己定义的符号,用于代表内存单元的地址,表示本条语句的符号地址。一般来说,名字可以是标号和变量,统称为标识符。,1.汇编语言格式,5.1.2汇编语言语句,教学进程,1.汇编语言格式,标号:标号在代码段中定义,后面跟着冒号标号。变量:变量在数据段或附加数据段中定义,后面不跟冒号。,标识符,算术操作符有+、-、*、/和MOD以及SHL(左移)、SHR(右移)。其中MOD运算是取模运算,即除法之后所得的余数。,5.1.2汇编语言语句,2.,教学进程,算术操作符,逻辑操作符包括AND、OR、XOR、NOT,逻辑操作符是按位操作的,只能用于数字表达式。,5.1.2汇编语言语句,教学进程,3.,逻辑操作符,求变量或标号类型值格式:TYPE变量或标号功能:若为变量,则程序将回送该变量以字节数表示的类型:DB为1,DW为2,DD为4,DQ为8,DT为10。若为标号,则程序将回送代表该标号类型的数值:NEAR为-1,FRA为-2。,5.1.2汇编语言语句,教学进程,4.,数值回送操作符,格式:OFFSET变量或标号功能:返回变量或标号所在段的段内偏移地,5.1.2汇编语言语句,取段基地址格式:SEG变量或标号功能:返回变量或标号所在段的段地址,教学进程,4.数值回送操作符,取地址的偏移量,格式:LENGTH变量功能:如果变量是用DUP说明,则返回DUP定义变量的重复次数,否则,返回值为1。,取变量字节数格式:SIZEBIANL1功能:返回变量的字节数,等于LENGTH与TYPE的乘积。,教学进程,5.1.2汇编语言语句,4.数值回送操作符,取变量单元数,5.1.2,汇编语言语句,PTR操作符格式:类型PTR符号名功能:该操作符用于指定操作数的类型。,属性操作符,教学进程,5.,THIS操作符格式:THIS类型功能:把它后面指定的类型或距离属性赋给当前的变量、标号或定制表达式。,段操作符格式:段寄存器名:地址表达式功能:用来表示变量或地址表达式的段属性。,格式:SHORT标号功能:用来修饰转移指令的目标地址的属性,偏移量为8位。分类运算符格式:HIGH表达式LOW表达式功能:从表达式种分离出高字节、低字节。,运算符:EQ(相等)、NE(不等于)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于),当关系成立时,运算结果为1(FFH或FFFFH),否则为0。格式:表达式1关系运算符表达式2,SHORT操作符,教学进程,5.1.2汇编语言语句,属性操作符,5.,5.1.2,汇编语言语句,运算的优先级别,教学进程,7.,EQU等价伪指令格式:符号名EQU表达式功能:用来定义一个符号,用该符号代表机器指令助记符、伪指令助记符、寄存器名字、各种运算符号、常数等。,伪指令语句,1.符号定义伪指令,教学进程,5.1.3,等号伪指令格式:符号名表达式功能:等号伪指令用来定义一个符号,用该符号代表表达式、常数等。,5.1.3,教学进程,伪指令语句(续),1.符号定义伪指令,解除符号定义伪指令格式:PURGE符号1,符号2,功能:用来解除之前引用符号的定义。,数据定义伪指令有五种:DB、DW、DD、DQ、DT和DUP。格式:变量名DB表达式;定义字节变量名DW表达式;定义字变量名DD表达式;定义双字变量名DQ表达式;定义8个字节变量名DT表达式;定义10个字节复制次数DUP表达式功能:其中,DT伪操作指令用来定义10个字节,其后的每个操作数占有10个字节,形成压缩的BCD码;DUP指令可以为若干重复数据分配内存单元。,5.1.3伪指令语句,数据定义伪指令,教学进程,2.,格式:,5.1.3伪指令语句,段定义伪指令,教学进程,3.,例:*data_seg1segment;定义数据段data_seg1ends*code_segsegment;定义代码段assumeds:data_seg1,es:data_seg1assumecs:code_segstart:;程序执行的起始地址movax,data_seg1;数据段地址movds,ax;存入DS寄存器movax,data_seg1;附加段地址moves,ax;存入ES寄存器code_segends;代码段结束*endstart,5.1.3伪指令语句,教学进程,段定义伪指令举例,格式:功能:完成过程定义,在过程体中实现过程的操作功能。,5.1.3伪指令语句,过程定义伪指令,教学进程,4.,条件汇编有多种伪操作指令:(1)IF表达式功能:表达式为1,汇编程序段1,否则跳过。(2)IFE表达式功能:表达式为0,汇编程序段1,否则跳过。(3)IFB参数功能:参数为空格,汇编程序段1,否则跳过。,5.1.3伪指令语句,格式:IF表达式程序段1ELSE程序段2ENDIF,5.,教学进程,条件汇编伪指令,(4)IFNB参数功能:参数不为空格,汇编程序段1,否则跳过。(5)IFIDN参数1,参数2功能:字符串参数1与字符串参数2相同,汇编程序1,否则跳过。,5.1.3伪指令语句,教学进程,条件汇编有多种伪操作指令(续),5.,条件汇编伪指令,2019/12/14,23,可编辑,格式:宏指令名MACRO形式参数1,形式参数2,ENDM其中,MACRO和ENDM是一对伪操作。,宏指令语句,1.宏指令的定义,教学进程,5.1.4,5.1.4,宏指令语句,MINCL,SI,DI;把由SI和DI间接寻址的两个内存单元中;不带符号数中小的送入CL汇编后展开:PUSHAXMOVAL,SI;实参SI替换形参SR1CMPAL,DI;实参DI替换形参SR2JNB?00;符合地址ADDR被?00替换MOVAL,DI?00:MOVCL,AL;实参CL替换形参DESPOPAX号代表宏展开的语句。,教学进程,宏调用举例,5.1.4,宏指令语句,格式:LOCAL符号地址1,符号地址2,这些符号地址在宏展开时,由汇编程序重新命名。,局域符号定义,例:宏定义可以无参数宏定义:SAVEREGMACROPUSHAXPUSHBXPUSHCXPUSHDXENDM宏调用:SAVEREG,教学进程,2.,例:宏定义参数可以时操作码宏定义:REGINCMOCROP1,P2,P3MOVAX,P1P2P3ENDM宏调用:REGINCIVAR1,INC,AX宏展开:MOVAX,IVAR1INCAX,5.1.4,宏指令语句,伪操作PURGE可以取消宏定义宏定义:ADD2MACROOPTR1,OPTR2,RESULTMOVAX,OPTR1ADDAX,OPTR2MOVRESULT,AXENDM宏调用:ADD2XX,YY,ZZPURGEADD2,教学进程,伪操作PURGE,汇编语言程序设计,5.2.1,顺序程序设计,例:计算Y=5X+8,设X为无符号字节数据,且在ARGX单元存放。计算结果,存入RLTY单元。,教学进程,5.2,SSEGSEGMENTSTACK;堆栈段开始STKDB20DUP(0)SSEGENDS;堆栈段结束DSEGSEGMENT;数据段开始ARGXDB15RLTYDW0DSEGENDS;数据段结束CSEGSEGMENT;代码段开始ASSUMECS:CSEG,DS:DSEGASSUMESS:SSEG,CALC:MOVAX,DSEGMOVDS,AXMOVAX,SSEGMOVSS,AXMOVSP,LENGTHSTKMOVAL,ARGX;取原始数MOVBL,05MULBL;计算5xMOVBX,08ADDAX,BX;再加上8MOVRLTY,AX;保存结果MOVAX,4C00HINT21HCSEGENDSENDCALC,教学进程,顺序程序设计举例(续),分支程序设计举例:设内存中有三个互不相等的无符号字数据,分别存放在ARG开始的字单元,编制程序将其中最大值存入MAX单元。,分支程序设计,教学进程,5.2.2,SSEGSEGMENTSTACKSTKDB20DUP(0)SSEGENDSDSEGSEGMENTARGDW7138H,84A6H,29EHMAXDW?DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGASSUMESS:SSEG,START:MOVAX,DSEGMOVDS,AXMOVAX,SSEGMOVSS,AXMOVSP,SIZESTKLEASI,ARG;取数据首址MOVAX,SI;取第1个数MOVBX,SI+2;取第2个数CMPAX,BX;两数比较JAEFMAX1;AX中的数大MOVAX,BX;大数送AXFMAX1:CMPAX,SI+4;大数与第3个数比较JAEFMAX2;AX中的数大MOVAX,SI+4;第3个数大FMAX2:MOVMAX,AX;保存最大值MOVAX,4C00HINT21HCSEGENDSENDFSTART,教学进程,分支程序设计举例(续),循环程序设计,1、循环的结构形式,教学进程,5.2.3,5.2.3,循环程序设计,例:内存DATA开始存放100个单字节数据。编写程序统计这些数据内所有为“1”的位的个数,将结果存入NUMB单元。完成此例需要统计每一个字节数据中“1”的个数,可以用右移指令把该数据的各位逐个移到进位标志位CF中,当CF=1,计数器值加1,直到100个数据检查完毕。,2、,教学进程,循环程序的设计方法,5.2.3,循环程序设计,源代码清单:SSEGSEGMENTSTACK开始STACKDW100DUP(0)SSEGENDSDSEGSEGMENTASSUMECS:CSEG,DS:DSEGASSUMESS:SSEGSTART:MOVAX,DSEGMOVDS,AXMOVAX,SSEGMOVSS,AXMOVSP,SIZESTACKMOVSI,OFFSETDATAMOVCL,100XORAL,AL,教学进程,5.2.3,循环程序设计,LOOP2:MOVCH,08HXORBH,BHMOVAH,SILOOP1:RORAH,1JNCCHT1INCBHCHT1:DECCHJNZLOOP1INCSIDECCHJNZLOOP2MOVDNUMB,BHMOVAH,4CHINT21HCSEGENDSENDSTART,教学进程,格式:过程名PROC属性过程名ENDP过程名为标识符,它又是子程序入口的符号地址,与标号的作用相同。属性(Attribute)是指类型属性,可以是NEAR或FAR。用户对过程属性的确定原则很简单,即:(1)如果调用程序和过程在同一个代码段中,则使用NEAR属性。(2)如果调用程序和过程不在同一个代码段中,则使用FAR属性。,一般子程序有五部分组成:,子程序设计,1.过程定义,教学进程,5.2.4,5.2.4,子程序设计,现场主程序在调用子程序前可能在CPU寄存器和内存中存有一些有用的数据,这些数据就是调用前的现场,现场保护在子程序的执行过程中很可能会改表这些单元的内容。因此在子程序开始执行前,把主程序中有用的数据先保存到堆栈中,这向工作称为现场保护。恢复为使子程序返回到主程序后,主程序能够在原有环境下继续执行,必须将现场保护时保存在堆栈中的现场数据重新恢复。,2.,教学进程,现场的保存与恢复,5.2.4,子程序设计,子程序调用除一般的简单调用外,还可以嵌套调用、递归调用。在子程序执行完毕后,必须回到调用它的主程序。因此,在每个子程序结束时必须有返回指令,返回指令为RET。,3.,教学进程,子程序的调用和返回,5.2.4,子程序设计,4.,例:十进制到十六进制数转换程序。程序要求从键盘取得一个十进制数,然后把该数以十六进制形式在屏幕上显示出来。,CSEGsegmentssumeCSCSEGmainprocfar;程序的主要部分START:calldecibin;调用子程序decibincallcrlf;调用子程序crlfcallbinihex;调用子程序binihex,教学进程,程序举例,callcrlfjmprepeatmainendpdecibinprocnear;子程序decibinmovbx,0newchar:movah,1int21h;从键盘接收单个字符;非09之间的数退出subal,30hjlexitcmpal,9djgexitcbw;al扩展到ax;BX中的数乘以10 xchgax,bxmovcx,10dmulcxxchgax,bx,5.2.4子程序设计,教学进程,4.,程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 时间的脚印课件王晶
- 教务主任期中质量分析
- 护理常规培训内容
- 时钟造型基础知识培训课件
- 二零二五版房屋地基下沉修复赔偿合同
- 2025版出轨离婚赔偿金协议书(含法律咨询与执行)
- 二零二五年度房地产开发项目贷款合同范本正规范本
- 旭东化学课件获取
- 二零二五年度动产抵押消费贷款合同编写指南
- 高三试卷:四川省雅安市2024-2025学年高三上学期11月零诊试题数学答案
- 2025年海南省警务辅助人员招聘考试(公共基础知识)历年参考题库含答案详解(5套)
- 城市道路清扫保洁协议
- 2025年医学检验在编考试题库
- 2025年十八项医疗核心制度试题及答案
- 2025年四川省高考化学试卷真题
- 高考3500词汇表(完整版)
- 《建筑施工安全检查标准》JGJ59-20248
- 1931CIE标准色度三刺激值
- DBJ∕T 13-233-2016 混凝土结构加固修复用聚合物水泥砂浆施工及验收规程
- 万玮:《班主任兵法》
- 2MCL458离心式压缩机使用说明书
评论
0/150
提交评论