汇编语言与汇编程序课件

上传人:20****08 文档编号:252373226 上传时间:2024-11-15 格式:PPT 页数:41 大小:298.90KB
返回 下载 相关 举报
汇编语言与汇编程序课件_第1页
第1页 / 共41页
汇编语言与汇编程序课件_第2页
第2页 / 共41页
汇编语言与汇编程序课件_第3页
第3页 / 共41页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第5章 汇编语言与汇编程序,【,本章重点】,本章重点在于介绍汇编语言的指令格式和伪指令格式、汇编程序的上机调试过程等等,为后面学习微型计算机接口的编程打好基础。,【,本章难点】,本章难点是汇编程序的上机调试过程,它是掌握汇编语言的关键。,第5章 汇编语言与汇编程序【本章重点】本章重点在于介绍汇编,1,汇编程序的执行过程,汇编程序的执行过程,2,5.1 汇编语言的语句格式,一条汇编语言指令中最多包含4个区段,如下所示:,标号:操作码 目的操作数,源操作数 ;注释,其中用方括号括起来的部分,可以有,也可以没有。,标号与操作码之间“:”隔开;,操作码与操作数之间用“空格”隔开;,目的操作数和源操作数之间有“,”分隔;,操作数与注释之间用“;”隔开。,5.1 汇编语言的语句格式 一条汇编语言指令中最多包含4,3,5.2 汇编语言中的常数与表达式,5.2.1常数,常数可以分数值常数和字符串常数两类。数值常数按其基数的不同,可有二进制数、八进制数、十进制数、十六进制数等几种不同的表示形式,汇编语言中采用不同的后缀加以区分。,B:表示二进制数。例如,10100101B。,D:表示十进制数。例如,278D或278。,Q:表示八进制数。例如,567Q,263Q。,H:表示十六进制数。例如,9AH,5678H。,5.2 汇编语言中的常数与表达式5.2.1常数,4,字符串常数是由单引号括起来的一串字符。例如:,THIS IS A STUDENT!,12345,要指出的是,此处的12345其值并非是十进制数12345,而是代表它们所对应的ASC,码,即31H,32H,33H,34H,35H。,5.2.2表达式和运算符,在表达式中,运算符充当着重要的角色。,8086,宏汇编有算术运算符、逻辑运算符、关系运算符、分析运算符和综合运算符共,5,种。,字符串常数是由单引号括起来的一串字符。例如:5.2.2表达式,5,算术运算符,逻辑运算符,关系运算符,分析运算符,综合运算符,(加法),AND(与),EQ(相等),SEG(求段基值),PTR,(减法),OR(或),NE(不相等),OFFSET(求偏移量),THIS,(乘法),XOR(异或),LT(小于),TYPE(求变量类型),SHORT,(除法),NOT(非),GT(大于),LENGTH(求变量长度),HIGH,MOD(求余),LE(小于或等于),SIZE(求字节数),LOW,SHL(左移),GE(大于或等于),SHR(右移),8086汇编语言中的运算符,算术运算符逻辑运算符关系运算符分析运算符综合运算符(加法),6,分析运算符共有5个:SEG(求段基值)、OFFSET(求偏移量)、TYPE(求变量类型)、LENGTH(求字节数)和SIZE(求字节数)。其中LENGTH和SIZE只对数据存储器地址操作数有效。,1)SEG运算符:利用运算符SEG可以得到一个标号或变量的段基址,使用格式:SEG变量名或标号名,例如:已知数据段DATA从存储器实际地址03000H开始,作如下定义后,用SEG运算符求变量所在的段基址。,DATA,SEGMENT,;定义数据段,VARl,DB 10H,18H,25H,34H,;定义字节数据,VAR2,DW 2300H,1200H,;定义字数据,VAR3,DD 11002200H,33004400H,:定义双字数据,DATA,ENDS,;数据段结束,分析运算符共有5个:SEG(求段基值)、OFFSET(求偏移,7,MOV BX,SEG VARl汇编成:MOV BX,0300H,MOV CX,SEG VAR2汇编成:MOV CX,0300H,MOV DX,SEG VAR3汇编成;MOV DX,0300H,2)OFFSET运算符:利用运算符OFFSET可以得到一个标号或变量的偏移量。,使用格式:OFFSET 变量名或标号名,例如:对于上例中所定义的数据段,采用,OFFSET,运算符求出变量,VARl,和,VAR2,的偏移量。则:,MOV BX,OFFSET VAR1汇编成:MOV BX,0000H,MOV CX,OFFSET VAR2汇编成:MOV CX,0004H,MOV DX,OFFSET VAR3汇编成:MOV DX,0008H,MOV BX,SEG VARl汇编成:MOV BX,8,3,),TYPE,运算符:,TYPE,运算符可加在变量、结构或标号的前面,所求出的是这些存储器操作数的类型部分。运算符,TYPE,的运算结果是一个数值,这个数值与存储器操作数类型属性的对应关系,存储释操作数类型 TYPE返回值,字节数据BYTE(DB定义)1,字数据WORD(DW定义)2,双字数据,DWORD,(,DD,定义),4,3)TYPE运算符:TYPE运算符可加在变量、结构或标号的前,9,DATASEGMENT ;定义数据段,VARlDB 10H,18H,25H,34H;定义字节数据,VAR2DW 2300H,1200H ;定义字数据,VAR3DD 11002200H,33004400H:定义双字数据,DATAENDS ;数据段结束,下列指令:,MOV BX,TYPE VAR1 汇编成:MOV BX,1,MOV CX,TYPE VAR2 汇编成:MOV CX,2,MOV DX,TYPE VAR3 汇编成:MOV DX,4,DATASEGMENT ;定,10,4,),LENGTH,运算符:,LENGTH,运算符放在数组变量的前面,可以求出该数组中所包含的变量的个数。,ARRAY1 DB 100DUP(?),ARRAY2 DW 10DUP(?),ARRAY3 DD 10DUP(?),下列指令:,MOV BX,LENGTH ARRAY1汇编后:MOV BX,100,MOV CX,LENGTH ARRAY2汇编后:MOV CX,10,MOV DX,LENGTH ARRAY3汇编后:MOV DX,10,4)LENGTH运算符:LENGTH运算符放在数组变量的前面,11,5,),SIZE,运算符:如果一个变量已经用重复操作符,DUP,加以说明,则利用,SIZE,运算符可以得到分配给该变量的字节总数。,ARRAY1 DB 100DUP(?),ARRAY2 DW 10DUP(?),ARRAY3 DD 10DUP(?),下列指令:,MOV BX,SIZE ARRAY1汇编后:MOV BX,100,MOV CX,SIZE ARRAY2汇编后:MOV CX,20,MOV DX,SIZE ARRAY3汇编后:MOV DX,40,5)SIZE运算符:如果一个变量已经用重复操作符DUP加以说,12,(5)综合运算符,综合运算符可以用来建立和临时改变变量或标号的类型以及存储器操作数的存储单元类型,而忽略当前的属性,所以又称为属性修改运算符。,有,6,个综合运算符,即,PTR,、段属性前缀、,SHORT,、,THIS,、,HIGH,和,LOW,1,),PTR,运算符,VARl DB 10H,18H,25H,34H,VAR2DW 1223H,1200H,MOV AX,WORD PTR VARl 执行后:AX=1810H,MOV BL,,,BYTE PTR VAR2,执行后:,BL=23H,(5)综合运算符,13,2)SHORT运算符。,运算符,SHORT,用来修饰,JMP,指令中跳转地址的属性,指出跳转地址是在下一条指令地址的,128,127,个字节范围之内。,例如:在,JMP,指令中使用,SHORT,运算符来进行短距离跳转。,JMP SHORT NEXT,NEXT,:,.,该例中,使用,SHORT,运算符后,跳转标号,NEXT,与,JMP,指令的距离不能大于,127,个字节。,2)SHORT运算符。,14,5.3伪指令,5.3.1定义数据伪指令,该类伪指令用来定义存贮空间及其所存数据的长度。,DB:定义字节,即每个数据是1个字节。,DW:定义字,即每个数据占1个字(2个字节)。,DD:定义双字,即每个数据占2个字。低字部分在低地址,高字部分在高地址。,DQ:定义4字长,即每个数据占4个字。,DT:定义10个字节长,用于压缩式十进制数据。,例如:DATA1 DB 10H,6,78H,100,表示从,DATA1,单元开始连续存放,10H,,,6,,,78H,,,100,,共占,4,个字节地址。,5.3伪指令 5.3.1定义数据伪指令,15,DATA1,DB,20H,DATA1,DATA2,DATA3,DATA4,DATA5,DATA6,20H,04H,02H,00H,10H,FDH,05H,45H,23H,01H,00H,30H,31H,32H,33H,42H,41H,43H,00H,44H,00H,DATA7,DATA8,DATA9,DATA10,?,?,?,?,?,00,00,00,00,00,?,?,?,?,?,?,DATA2,DW,0204H,1000H,DATA3,DB,(1*3),(15/5),DATA4,DD,12345H,DATA5,DB,0123,DATA6,DW,AB,C,D,DATA7,DB,?,DATA8,DD,?,DATA9,DB,5DUP(00),DATA10,DW,3DUP(?),DATA1DB20HDATA120HDATA7?DATA2D,16,5.3.2符号定义伪指令EQU,EQU,伪指令给符号定义一个值。在程序中,凡是出现该符号的地方,汇编时均用其值代替,如:,COUNTEQU100;COUNT代替常数100,SUMEQU30*25;SUM代替数值表达式,CEQUCX;C代替寄存器CX,MEQUMOV,;,M,代替指令助记符,MOV,需要注意的是,一个符号一经,EQU,伪指令赋值后,在整个程序中,不允许再对同一符号重新赋值。,5.3.2符号定义伪指令EQUCOUNTEQU100;,17,5.3.3段定义伪指令,段定义伪指令的用途是在汇编语言程序中定义逻辑段,用它来指定段的名称和范围,并指明段的定位类型、组合类型及类别。,常用的段定义为指令有SEGMENT、ENDS和ASSUME等。,(1)SEGMENT和ENDS伪指令,使用格式:段名 SEGMENT 定义类型组合类型类别,(段内语句系列),段名 ENDS,5.3.3段定义伪指令,18,DATA SEGMENT,DATA ENDS,STACK SEGMENT STACK,STACK ENDS,CODE SEGMENT,ASSUME CS:CODE,DS:DATA,SS:STACK,MOV AX,DATA,MOV DS,AX,MOV AX,STACK,MOV SS,AX,CODE ENDS,DATA SEGMENT,19,5.3.4过程定义伪指令,在程序设计中,经常将一些重复出现的语句组定义为子程序。子程序又称为过程,可以用CALL指令来调用。,(1)过程定义伪指令PROC和ENDP,使用格式:过程名 PROC 类型,过程体,RET,过程名 ENDP,5.3.4过程定义伪指令,20,DELAYPROC,MOVBL,10,DELY:MOVCX,2801,WAIT:LOOPWAIT,DECBL,JNZDELY,RET,DELAYENDP,一个延时,100ms,子程序,其过程可定义如下,DELAYPROC一个延时100ms子程序,其过程可定义,21,5.3.5汇编结束伪指令END,该伪指令表示源程序的结束,将汇编程序停止汇编。因此,任何一个完整的源程序均应有END指令,其一般格式为,END 表达式,其中表达式表示该汇编程序的启动地址。例如:,END START,则表明该程序的启动地址为,START,。,5.3.5汇编结束伪指令END,22,5.4汇编语言程序上机操作过程,5.4.1汇编语言程序上机调试步骤,1编写源程序,在弄清问题的要求,确定方案后,汇编语言程序设计者便可依据前面的指令系统和汇,编语言的规定,逐个模块地编写汇编语言源程序。,2源程序输入
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!