第04章汇编程序设计语言课件.ppt

上传人:小飞机 文档编号:2108245 上传时间:2023-01-11 格式:PPT 页数:47 大小:177.98KB
返回 下载 相关 举报
第04章汇编程序设计语言课件.ppt_第1页
第1页 / 共47页
第04章汇编程序设计语言课件.ppt_第2页
第2页 / 共47页
第04章汇编程序设计语言课件.ppt_第3页
第3页 / 共47页
第04章汇编程序设计语言课件.ppt_第4页
第4页 / 共47页
第04章汇编程序设计语言课件.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

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

1、第四章 8086汇编语言程序设计,几个概念8086汇编语言的语句8086汇编中的伪指令8086汇编中的运算符汇编语言程序设计宏定义与宏调用系统调用,第四章 8086汇编语言程序设计几个概念,几个概念,汇编语言汇编语言源程序汇编汇编程序,几个概念汇编语言,什么是汇编程序?汇编语言源程序不能由机器直接执行,必须翻译成由机器代码组成的目标程序,这一过程称为汇编。把汇编语言源程序翻译成目标程序的软件称为汇编程序。如8086 系统的汇编程序ASM-86,及其扩展功能后的8086宏汇编程序MASM-86。,什么是汇编语言?汇编语言是一种采用助记符(英文缩写)表示的程序设计语言。使用汇编语言编写的程序称为汇

2、编语言源程序。它与机器语言(0、1编写的代码)密切相关。,什么是汇编程序?什么是汇编语言?汇编语言是一,机器语言与汇编语言,机器语言:机器语言是计算机硬件系统能够直接识别 的计算机语言,每一条语句实际上是一条 二进制形式的指令代码,由操作码和操作 数组成。参见P52-53汇编语言:汇编语言用助记符代替操作码,用符号地 址代替操作数。,机器语言与汇编语言机器语言:机器语言是计算机硬件系统能够直接,4.1 8086汇编语言的语句,汇编语言由指令性语句和指示性语句组成。一、指令性语句格式标号:操作码 操作数1,操作数2;注释二、指示性语句格式 标识符(名字)指示符(伪指令)表达式 三、有关属性 存储

3、器操作数的属性有三种:段值、段内偏移量和 类型。,4.1 8086汇编语言的语句 汇编语言由指令性语句和,指令语句的一般格式如下:标号:操作码 操作数;注释1、标号:标号是机器指令语句存放地址的符号表示,代表该指令目标代码的第一个字节地址,后 面必须紧跟冒号“:”。2、操作码:操作码为语句的核心成分,表示该语句的 操作类型。3、操作数:操作数表示操作码的操作对象。4、注释:注释均以分号开始,它可占一行或多行,一 般放在一条语句的后面。,指令语句的一般格式如下:,伪指令语句格式,伪指令语句格式如下:标识符 伪指令 表达式;注释 标识符:标识符是伪指令语句的一个可选项。伪指令:伪指令指定汇编程序要

4、完成的具体操 作,如规定的数据定义伪指令DB、DW、DD,段 定义伪指令SEGMENT,说明伪指令ASSUME等。表达式:伪指令后面的表达式可以是常数、字符 串、常量名、变量名等,其个数由具体的伪指令决 定,各个操作数之间必须以“逗号”分隔。注释:伪指令的注释必须以“;”开始,其作用同 指令语句中的注释部分。,空格,伪指令语句格式伪指令语句格式如下:空格,存储器操作数即变量,变量通常是存放在某些存储单元的数据,以变量名的形式出现在程序中,可代表符号地址、数据区或存储区的第一个数据单元,如BUF。变量是用数据定义伪指令DB、DW、DD等定义的。,变量的三种属性:段属性(SEGMENT):表示变量

5、存放在哪一个逻 辑段中(即变量所在段的段地址)。偏移属性(OFFSET):表示变量的偏移地址,即 在逻辑段中距段的起始点的字节数 类型属性(Type):表示变量占用存储单元的字节 数。用DB定义的变量类型属性为字节;用DW定义 的变量类型属性为字(2B);用DD定义的变量类 型属性为双字(4B)。,存储器操作数即变量 变量通常是存放在某些存储单元的,4.2 8086汇编中的伪指令,一、符号定义语句 1、等值语句 格式:符号名 EQU 表达式 功能:为常量、表达式及其他各种符号定义一个 等值的符号名,但它不申请存储单元。不 允许重新定义。例:PORT EQU 1234 BUFF EQU PORT

6、58 MEM EQU DS:BP20H COUNT EQU CX ABC EQU AAA,4.2 8086汇编中的伪指令一、符号定义语句,2、等号语句 格式:符号名=表达式 功能:为常量、表达式及其他各种符号定义一个 等值的符号名,并能对所定义的符号多次 重复定义,且以最后一次定义的值为准。例:NUM34 NUM341,第04章汇编程序设计语言课件,二、变量定义语句 格式:符号名 DB/DW/DD 表达式,二、变量定义语句,1、定义一组数据 例1:BUFF DW 1234H,0ABCDH,8EH DW 79DH,7B6AH 可以为一个或连续的存储单元设置数值初值。2、定义一串字符例2:STR

7、DB Welcome!用DB伪指令为ASCII字符串中的每一个字符分配一个字节单元,字符串必须用单引号括起来。3、定义保留存储单元 例3:SUM DW?,?为数据项分配存储单元的一种方法,只是存储单元中不预置确定的值,常用来预留存储单元。,1、定义一组数据,4、复制操作 复制操作符DUP(Duplication)可预置重复的数值 n DUP(表达式)例4:ALL_ZERO DB 0,0,0,0,0 用复制操作可改为:ALL_ZERO DB 5 DUP(0)为若干重复数据单元分配存储单元。5、将已定义的地址存入内存单元 例5:LIT DD CYC CYC:MOV AX,BX,4、复制操作,三、段

8、定义语句1、段定义语句格式:段名 SEGMENT 定位类型 组合类型 类别 段名 ENDS 段定义伪指令用于将源程序划分成若干段,即代码段(存放程序),数据段(存放数据),堆栈段,附加段。只需要掌握 段名 SEGMENT 段名 ENDS,三、段定义语句,2、段假设语句 ASSUME 段寄存器名:段名,功能:向汇编程序指示当前各段所用的段寄存 器,设定段寄存器与段的关系。3、ORG伪指令、地址计数器$格式:ORG 功能:指定在它之后的代码或数据存放的起始地 址的偏移量,以表达式的值作为起始地 址,连续存放程序或数据。$代表当前的地址。4、END 表示源代码结束 格式:END 常数或表达式 功能:

9、该语句标志整个程序的结束,是源程序的 最后一条语句。,2、段假设语句,四、过程定义语句 过程名 PROC NEAR/FAR RET 过程名 ENDP功能:完成过程定义,在过程体中实现过程的操作功 能。当一程序块被定义为过程后,程序中其他 地方就可用CALL指令调用该过程。调用过程的格式为:CALL 过程名 过程名实质上是过程入口的符号地址,它和标号一样,也有三种属性:段、偏移量和类型(距离)。一般来说,被定义为过程的程序块中应该有返回指令RET,执行RET指令后,控制返回到原来调用指令的下条指令。,四、过程定义语句,4.3 8086汇编中的运算符,一、常用运算符1、算术运算符(加)、(减)、*

10、(乘)、/(除)、MOD(求余)。2、逻辑运算符 AND、OR、XOR、NOT,4.3 8086汇编中的运算符 一、常用运算符,3、关系运算符 EQ(相等)、NE(不等、)、LT(小于)、GT(大于)、LE(小于等于)、GE(大于等于)。关系成立,全1 关系不成立,全0例:MOV DL,10H LT 16;MOV DL,0例:AND AX,555 GT 222;AND AX,0FFFFH,3、关系运算符,二、常用的操作符4、分析操作符1)SEG操作符 取段地址例:MOV AX,SEG BUFF2)OFFSET操作符 取地址的偏移量 例:MOV BX,OFFSET BUFF,二、常用的操作符,3

11、)TYPE操作符 对于变量有3种:1字节型;2字型;4双字型。对于标号有2种:1NEAR(段内);2FAR(段间)。例:BUFF DB 20H MOV BX,TYPE BUFF MOV BX,01,3)TYPE操作符,4)LENGTH操作符 格式:LENGTH 变量名 功能:返回一个变量名所占存储单元(字节、字 或双字)的数目。若用重复定义子句说 明,则返回DUP前的数字;若没有DUP 说明,则返回值总是1。5)SIZE操作符 SIZETYPELENGTH 例:BUFF DW 10 DUP(?)MOV CX,LENGTH BUF;MOV CX,10 MOV CX,SIZE BUF;MOV CX

12、,20,4)LENGTH操作符,5、综合运算符(合成操作符)功能:1、由已有的操作数建立新的操作数;2、新操作数和已有的操作数类型不一样。新的类型只在当前指令内有效。1)PTR运算符 格式:类型 PTR 表达式例:INC WORD PTR BX wx DW 1234H MOV AL,BYTE PTR wx MOV AH,BYTE PTR wx+12)THIS操作符 格式:THIS 类型(或属性)例:FIRST EQU THIS BYTE SECOND DW 100 DUP(?)运算符的优先级别见p96。,PTR:已分配存 储器单元;THIS:不分配存 储器单元。,5、综合运算符(合成操作符)P

13、TR:已分配存,4.4 汇编语言程序设计,常用的汇编语言程序框架:DATA SEGMENT;定义数据段VAL1 DB 12H,8EH;定义变量 DATA ENDS;数据段结束 CODE SEGMENT;定义代码段 ASSUME DS:DATA,CS:CODE;段属性说明 START:MOV AX,DATA;初始化DS MOV DS,AX MOV AX,4C00H;返回DOS INT 21H CODE ENDS;代码段结束 END START;源程序结束,4.4 汇编语言程序设计 常用的汇编语言程序框架:,特点程序分段语句由指令性和指示性语句组成两种程序框架,特点,框架一:DATA SEGMEN

14、T;定义数据段VAL1 DB 12H,8EH;定义变量 DATA ENDS;数据段结束 CODE SEGMENT;定义代码段 ASSUME DS:DATA,CS:CODE;段属性说明 START:MOV AX,DATA;初始化DS MOV DS,AX;填写代码 MOV AX,4C00H;返回DOS INT 21H CODE ENDS;代码段结束 END START;源程序结束,框架一:,框架二:DATA SEGMENT;定义数据段VAL1 DB 12H,8EH;定义变量 DATA ENDS;数据段结束 CODE SEGMENT;定义代码段MAIN PROC FAR ASSUME DS:DATA

15、,CS:CODE;段属性说明 START:PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX;填写代码 RETMAIN ENDP CODE ENDS;代码段结束 END START;源程序结束,框架二:,一、汇编语言程序设计基本步骤 分析问题,确定模型确定算法 绘制流程图编写程序检查和调试 二、汇编语言程序的基本结构,一、汇编语言程序设计基本步骤,1、顺序结构 p97,1、顺序结构,2、分支结构,2、分支结构,举例p98,实现,举例p98实现,用查表法确定多分支例:某应用程序主菜单有8个可选项,其入口地址分别 记为R0、R1R7。要求编制程序根据变量N

16、的 值转向相应的处理程序(N为入口编号)。步骤:a、把入口地址放在BASE开始的内存单元;b、根据N的内容进行查表实现分支转移。,用查表法确定多分支,例:某应用程序主菜单有8个可选项,其入口地址分别 记为R0、R1R7。要求编制程序根据变量N的值 转向相应的处理程序(N为入口编号)。DATA SEGMENT ADD BX,AXBASE DW R0,R1,R2,R3 MOV AX,BX DW R4,R5,R6,R7 JMP AX N DB 5 R0:DATA ENDS JMP OK CODE SEGMENT R1:ASSUME CS:CODE,DS:DATA JMP OK START:MOV A

17、X,DATA MOV DS,AX R7:MOV AL,N OK:MOV AH,4CH ADD AL,AL INT 21H MOV AH,0 CODE ENDS MOV BX,OFFSET BASE END START,例:某应用程序主菜单有8个可选项,其入口地址分别,3、循环结构,循环控制有三种:计数法 条件法(比较条件结束)多重循环(设定标志结束),3、循环结构 循环控制有三种:计数法 条件法(比较,第04章汇编程序设计语言课件,Call proc1,ret,4、子程序,(1)实现方法主程序有调用指令CALL子程序有返回指令RET(2)特点 CALL指令与RET缺一不可现场保护入口出口参数设

18、置,Call proc1ret4、子程序(1)实现方法,子程序编写:1、子程序组成(1)使用说明a、子程序功能b、使用寄存器情况c、入口出口参数(2)程序体入口出口参数传递现场保护功能程序段,例:编写AX*10AX子程序,子程序编写:例:编写AX*10AX子程序,;这是一个乘10子程序;使用寄存器AX;入口:AX,出口:AXMUL10PROC FARPUSH BX;保护现场PUSHFADD AX,AX;2AXMOV BX,AX;2AXBXADD AX,AX;4AXADD AX,AX;8AXADD AX,BX;10AXPOPF;恢复现场POP BXRETMUL10ENDP,功能程序段,;这是一个

19、乘10子程序功能程序段,2、现场保护和入口出口参数传递(1)现场保护方案一:在子程序中保护 灵活,不方便方案二:在主程序中保护 方便,不灵活(2)参数传递寄存器传递变量传递堆栈传递,2、现场保护和入口出口参数传递,4.4 系统调用,一、PCDOS执行流程,BIOS,IBMBIO,IBMDOS,4.4 系统调用一、PCDOS执行流程BIOSIBMBIO,键盘命令,命令处理程序,文件管理,基本输入/输出,BIOS,用户程序,用户程序,ROM,IBMBIO,IBMDOS,键盘命令命令处理程序文件管理基本输入/输出BIOS用户程序用,二、DOS系统子程序功能1、磁盘管理2、内存管理3、系统输入/输出共

20、87个子程序,二、DOS系统子程序功能,三、系统功能调用 对87个子程序进行编号,根据编号进行相关处理格式:1、入口参数(可选)2、编号AH3、INT 21H,三、系统功能调用,编号AHINT 21H,AH=11号调用,AH=22号调用,编号AHAH=1AH=2,常用的系统调用:1、1号调用键盘输入单字符功能:从键盘输入一个字符,若Ctrl+Break键,则退出。输入参数:无输出参数:AL=ASCII码。调用格式:MOV AH,1 INT 21H2、8号调用无回显键盘输入单字符3、6号调用显示及输入,若DL=0FFH输入,否则显 示。4、9号调用输出字符串,DS:DX=输出字符缓冲区 首地址。

21、5、10号调用输入字符串,常用的系统调用:,设置缓冲区注意事项:缓冲区第1字节存放预定字符个数,最多255个;缓冲区第2字节保留,用于调用返回时存放实际输入 的字节个数;缓冲区第3字节开始,存放输入的字符;缓冲区要考虑留1个字节作为回车符。例:BUF DB 20 DB?DB 20 DUP(?);最多可键入19个字符.MOV DX,OFFSET BUF MOV AH,0AH INT 21H,设置缓冲区注意事项:,4.5 宏定义与宏调用,一、宏定义和宏调用1、格式 宏指令名 MACRO 参数表;宏定义体 ENDM2、优点缩短源程序长度,但不减少代码长度;程序易读。3、参数可以是多种形式,与过程调用不同,它不使用堆栈。,4.5 宏定义与宏调用一、宏定义和宏调用 与过程调,作业:P1161,4,6,作业:,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号