《汇编语言教程》PPT课件.ppt

上传人:牧羊曲112 文档编号:5541237 上传时间:2023-07-19 格式:PPT 页数:43 大小:306.50KB
返回 下载 相关 举报
《汇编语言教程》PPT课件.ppt_第1页
第1页 / 共43页
《汇编语言教程》PPT课件.ppt_第2页
第2页 / 共43页
《汇编语言教程》PPT课件.ppt_第3页
第3页 / 共43页
《汇编语言教程》PPT课件.ppt_第4页
第4页 / 共43页
《汇编语言教程》PPT课件.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《《汇编语言教程》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《汇编语言教程》PPT课件.ppt(43页珍藏版)》请在三一办公上搜索。

1、汇编语言,第 5 章,5.1 8086汇编语言基础 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.5 DOS功能调用,汇编语言的处理过程:(1)编写汇编语言源程序,生成扩展名为ASM的汇编源源文件。(2)对汇编源程序进行编译。(3)对目标文件进行连接。,教学进程,5.1,8086汇编语言基础,1)效率低(与人们描述计算过程的需要差距大);2)机器硬件的具体结构联系过于紧密在一种结构的机器上开发 的程序极

2、难移植到另一种不同结构的机器上去。,教学进程,5.1,8086汇编语言基础,汇编语言进行程序设计的优点,1)充分利用机器的硬件功能和结构特点,加快程序的执行速度,减少目标程序所占用的存储空间;2)用来编写实时控制程序、实时通信程序,有时也用来编制某些 系统软件程序。,汇编语言进行程序设计缺点,教学进程,宏指令语句是由编程者按照一定的规则来定义的一种较“宏大”的指令,可包括多条指令或伪指令。,汇编语言基本语法,在8086汇编中使用的语句可以分成3种类型,这类指令能够产生目标代码,是CPU可以执行的能够完成特定功能的语句,主要由机器指令组成。在汇编时一条指令语句被翻译成对应的机器码,对应着特定的操

3、作。,伪指令语句是为汇编程序和连接程序提供一些必要控制的管理性语句,它不产生目标代码,仅仅在汇编过程中告诉汇编程序应如何汇编,并完成相应的伪操作。,教学进程,汇编语言源程序中的语句可以由四项组成,格式如下:名字 操作符 操作数;注释,汇编语言语句,(2)操作符可以是指令、伪指令或宏指令的助记符。(3)操作数字段是操作符的操作对象。(4)注释字段是以“;”开头的说明部分,可以用英文或者中文书写。,(1)名字项是程序设计人员自己定义的符号,用于代表内存单元的 地址,表示本条语句的符号地址。一般来说,名字可以是标号和 变量,统称为标识符。,1.汇编语言格式,5.1.2 汇编语言语句,教学进程,1.汇

4、编语言格式,标号:标号在代码段中定义,后面跟着冒号标号。变量:变量在数据段或附加数据段中定义,后面不跟冒号。,标识符,算术操作符有+、-、*、/和 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。若为标号

5、,则程序将回送代表该标号类型的数值:NEAR 为-1,FRA为-2。,5.1.2 汇编语言语句,教学进程,4.,数值回送操作符,格式:OFFSET变量或标号 功能:返回变量或标号所在段的段内偏移地,5.1.2 汇编语言语句,取段基地址 格式:SEG 变量或标号 功能:返回变量或标号所在段的段地址,教学进程,4.数值回送操作符,取地址的偏移量,格式:LENGTH 变量 功能:如果变量是用DUP说明,则返回DUP定义变量的重 复次数,否则,返回值为1。,取变量字节数 格式:SIZE BIANL1 功能:返回变量的字节数,等于LENGTH与TYPE的乘积。,教学进程,5.1.2 汇编语言语句,4.数

6、值回送操作符,取变量单元数,汇编语言语句,PTR操作符 格式:类型 PTR 符号名 功能:该操作符用于指定操作数的类型。,属性操作符,教学进程,5.,THIS操作符 格式:THIS 类型 功能:把它后面指定的类型或距离属性赋给当前的变量、标号或定 制表达式。,段操作符 格式:段寄存器名:地址表达式 功能:用来表示变量或地址表达式的段属性。,格式:SHORT 标号 功能:用来修饰转移指令的目标地址的属性,偏移量为8位。分类运算符 格式:HIGH 表达式 LOW 表达式 功能:从表达式种分离出高字节、低字节。,运算符:EQ(相等)、NE(不等于)、LT(小于)、GT(大于)、LE(小于或等于)、G

7、E(大于或等于),当关系成立时,运算结果为1(FFH或FFFFH),否则为0。格式:表达式1 关系运算符 表达式2,SHORT操作符,教学进程,5.1.2 汇编语言语句,属性操作符,5.,汇编语言语句,运算的优先级别,教学进程,7.,EQU 等价伪指令 格式:符号名 EQU 表达式 功能:用来定义一个符号,用该符号代表机器指令助记符、伪 指令助记符、寄存器名字、各种运算符号、常数等。,伪指令语句,1.符号定义伪指令,教学进程,等号伪指令 格式:符号名表达式 功能:等号伪指令用来定义一个符号,用该符号代表表达式、常数等。,教学进程,伪指令语句(续),1.符号定义伪指令,解除符号定义伪指令 格式:

8、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_s

9、eg1 segment;定义数据段data_seg1 ends*code_seg segment;定义代码段 assumeds:data_seg1,es:data_seg1 assume cs:code_seg start:;程序执行的起始地址mov ax,data_seg1;数据段地址 mov ds,ax;存入DS寄存器mov ax,data_seg1;附加段地址mov es,ax;存入ES寄存器 code_seg ends;代码段结束*end start,5.1.3 伪指令语句,教学进程,段定义伪指令举例,格式:功能:完成过程定义,在过程体 中实现过程的操作功能。,5.1.3 伪指令语句,

10、过程定义伪指令,教学进程,4.,条件汇编有多种伪操作指令:(1)IF 表达式 功能:表达式为1,汇编程序段1,否则跳过。(2)IFE 表达式 功能:表达式为0,汇编程序段1,否则跳过。(3)IFB 参数 功能:参数为空格,汇编程序段1,否则跳过。,5.1.3 伪指令语句,格式:IF 表达式 程序段1 ELSE 程序段2 ENDIF,5.,教学进程,条件汇编伪指令,(4)IFNB 参数 功能:参数不为空格,汇编程序段1,否则跳过。(5)IFIDN 参数1,参数2 功能:字符串参数1与字符串参数2相同,汇编程序1,否则跳过。,5.1.3 伪指令语句,教学进程,条件汇编有多种伪操作指令(续),5.,

11、条件汇编伪指令,格式:宏指令名 MACRO 形式参数1,形式参数2,ENDM 其中,MACRO和ENDM是一对伪操作。,宏指令语句,1.宏指令的定义,教学进程,宏指令语句,MIN CL,SI,DI;把由SI和DI间接寻址的两个内存单元中;不带符号数中小的送入CL 汇编后展开:PUSH AXMOV AL,SI;实参SI替换形参SR1CMP AL,DI;实参DI替换形参SR2JNB?00;符合地址ADDR被?00替换MOV AL,DI?00:MOV CL,AL;实参CL替换形参DESPOP AX号代表宏展开的语句。,教学进程,宏调用举例,宏指令语句,格式:LOCAL符号地址1,符号地址2,这些符号

12、地址在宏展开时,由汇编程序重新命名。,局域符号定义,例:宏定义可以无参数宏定义:SAVEREG MACROPUSH AXPUSH BXPUSH CXPUSH DXENDM宏调用:SAVEREG,教学进程,2.,例:宏定义参数可以时操作码 宏定义:REGINCMOCROP1,P2,P3MOV AX,P1P2P3ENDM 宏调用:REGINCIVAR1,INC,AX 宏展开:MOV AX,IVAR1 INC AX,宏指令语句,伪操作PURGE可以取消宏定义 宏定义:ADD2MACROOPTR1,OPTR2,RESULTMOV AX,OPTR1ADD AX,OPTR2MOV RESULT,AXEND

13、M 宏调用:ADD2XX,YY,ZZPURGEADD2,教学进程,伪操作PURGE,汇编语言程序设计,顺序程序设计,例:计算Y=5X+8,设X为无符号字节数据,且在ARGX单元存放。计算结果,存入RLTY单元。,教学进程,5.2,SSEG SEGMENTSTACK;堆栈段开始 STK DB20 DUP(0)SSEG ENDS;堆栈段结束 DSEG SEGMENT;数据段开始 ARGX DB15 RLTY DW0 DSEG ENDS;数据段结束 CSEG SEGMENT;代码段开始 ASSUMECS:CSEG,DS:DSEG ASSUMESS:SSEG,CALC:MOVAX,DSEG MOVDS

14、,AX MOVAX,SSEG MOVSS,AX MOVSP,LENGTH STK MOVAL,ARGX;取原始数 MOVBL,05 MULBL;计算5x MOVBX,08 ADDAX,BX;再加上8 MOVRLTY,AX;保存结果 MOVAX,4C00H INT21HCSEG ENDS ENDCALC,教学进程,顺序程序设计举例(续),分支程序设计举例:设内存中有三个互不相等的无符号字数据,分别存放在ARG开始的字单元,编制程序将其中最大值存入MAX单元。,分支程序设计,教学进程,SSEGSEGMENTSTACKSTKDB20DUP(0)SSEGENDSDSEGSEGMENTARGDW7138

15、H,84A6H,29EHMAXDW?DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGASSUMESS:SSEG,START:MOVAX,DSEG MOVDS,AX MOVAX,SSEG MOVSS,AX MOVSP,SIZESTK LEASI,ARG;取数据首址 MOVAX,SI;取第1个数 MOVBX,SI+2;取第2个数 CMPAX,BX;两数比较 JAE FMAX1;AX中的数大 MOVAX,BX;大数送AXFMAX1:CMPAX,SI+4;大数与第3个数比较 JAE FMAX2;AX中的数大 MOVAX,SI+4;第3个数大FMAX2:MOV MAX,A

16、X;保存最大值 MOVAX,4C00H INT 21HCSEG ENDSENDFSTART,教学进程,分支程序设计举例(续),循环程序设计,1、循环的结构形式,教学进程,循环程序设计,例:内存DATA开始存放100个单字节数据。编写程序统计这些数据内所有为“1”的位的个数,将结果存入NUMB单元。完成此例需要统计每一个字节数据中“1”的个数,可以用右移指令把该数据的各位逐个移到进位标志位CF中,当CF=1,计数器值加1,直到100个数据检查完毕。,2、,教学进程,循环程序的设计方法,循环程序设计,源代码清单:SSEGSEGMENTSTACK 开始STACK DW 100 DUP(0)SSEGE

17、NDS DSEGSEGMENTASSUME CS:CSEG,DS:DSEGASSUME SS:SSEG START:MOVAX,DSEG MOVDS,AX MOVAX,SSEG MOVSS,AX MOVSP,SIZE STACK MOVSI,OFFSET DATA MOVCL,100 XORAL,AL,教学进程,循环程序设计,LOOP2:MOVCH,08H XORBH,BH MOV AH,SILOOP1:RORAH,1JNCCHT1INCBHCHT1:DECCHJNZLOOP1INCSIDECCHJNZLOOP2MOVDNUMB,BHMOVAH,4CHINT21HCSEGENDSENDSTAR

18、T,教学进程,格式:过程名 PROC 属性 过程名 ENDP过程名为标识符,它又是子程序入口的符号地址,与标号的作用相同。属性(Attribute)是指类型属性,可以是NEAR或FAR。用户对过程属性的确定原则很简单,即:(1)如果调用程序和过程在同一个代码段中,则使用NEAR属性。(2)如果调用程序和过程不在同一个代码段中,则使用FAR属性。,一般子程序有五部分组成:,子程序设计,1.过程定义,教学进程,子程序设计,现场主程序在调用子程序前可能在CPU寄存器和内存中存有一 些有用的数据,这些数据就是调用前的现场,现场保护在子程序的执行过程中很可能会改表这些单元的内容。因此在子程序开始执行前,

19、把主程序中有用的数据先保 存到堆栈中,这向工作称为现场保护。恢复为使子程序返回到主程序后,主程序能够在原有环境下继 续执行,必须将现场保护时保存在堆栈中的现场数据重 新恢复。,2.,教学进程,现场的保存与恢复,子程序设计,子程序调用除一般的简单调用外,还可以嵌套调用、递归调用。在子程序执行完毕后,必须回到调用它的主程序。因此,在每个子程序结束时必须有返回指令,返回指令为RET。,3.,教学进程,子程序的调用和返回,子程序设计,4.,例:十进制到十六进制数转换程序。程序要求从键盘取得一个十进 制数,然后把该数以十六进制形式在屏幕上显示出来。,CSEGsegmentssume CSCSEG mai

20、n procfar;程序的主要部分START:call decibin;调用子程序decibincall crlf;调用子程序crlfcall binihex;调用子程序binihex,教学进程,程序举例,call crlf jmp repeat main endp decibin procnear;子程序decibin mov bx,0 newchar:movah,1 int 21h;从键盘接收单个字符;非09之间的数退出 subal,30h jlexit cmp al,9d jg exit cbw;al扩展到ax;BX中的数乘以10 xchgax,bx movcx,10d mulcx xc

21、hgax,bx,5.2.4 子程序设计,教学进程,4.,程序举例(续),addbx,ax jmpnewchar;接收下一个字符exit:ret decibinendp Binihex procnear;子程序binihex movch,4 rotate:movcl,4 rolbx,cl moval,bl andal,0fh addal,30h cmp al,3ah jlprintit add al,7h printit:movdl,al mov ah,2 int21h decch jnzrotate ret,教学进程,5.2.4 子程序设计,4.,程序举例(续),binihexendpcrlf

22、procnear;子程序crlf;显示回车 movdl,0dh movah,2 int21h;显示换行movdl,0ah movah,2 int21h ret crlf endp CSEG endsend main,教学进程,5.2.4 子程序设计,4.,程序举例(续),返回系统(功能号:4CH)功能:在程序结束后,将对微机的控制权交换给操作系统。显示字符串(功能号:09H)功能:可以将内存缓冲区中的字符串输出到显示器,缓冲区的字符 串以$作为结束符,缓冲区首地址在寄存器DX中。,DOS功能调用,教学进程,第5章 汇编语言,教学进程,小结,5.1 8086汇编语言基础 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.5 DOS功能调用,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号