微机第2章 汇编语言程序设计课件

上传人:我*** 文档编号:145970407 上传时间:2020-09-25 格式:PPT 页数:58 大小:387.50KB
返回 下载 相关 举报
微机第2章 汇编语言程序设计课件_第1页
第1页 / 共58页
微机第2章 汇编语言程序设计课件_第2页
第2页 / 共58页
微机第2章 汇编语言程序设计课件_第3页
第3页 / 共58页
微机第2章 汇编语言程序设计课件_第4页
第4页 / 共58页
微机第2章 汇编语言程序设计课件_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《微机第2章 汇编语言程序设计课件》由会员分享,可在线阅读,更多相关《微机第2章 汇编语言程序设计课件(58页珍藏版)》请在金锄头文库上搜索。

1、2.3 汇编语言,2.3.1 汇编语言程序的上机过程 2.3.2 源程序框架 2.3.3 汇编语言语句的格式 2.3.4 伪指令语句 2.3.5 常用DOS系统功能调用和BIOS功能调用,2.3.1,具体步骤:,2.3.1 汇编语言程序的开发过程,程序的设计,源程序Progam.asm,汇编语言和机器语言一一对应,如:,MOVAL,00H,3E 00,2.3.2 源程序框架,2.3.2 源程序框架,代码段,DATA SEGMENT;定义数据段 (数据定义) DATA ENDS EXTRA SEGMENT;定义附加段 (数据定义) EXTRA ENDS STACK SEGMENTPARA STA

2、CK STACK; 堆栈区间预留字节数定义 TOP EQU THIS WORD STACKENDS,CODE SEGMENT;定义代码段 ASSUMECS:CODE,DS:DATA,ES:EXTRA,SS:STACK START:MOVAX,DATA MOVDS,AX MOVAX,EXTRA MOVES,AX MOVAX,STACK MOVSS,AX MOVSP,OFFSET TOP MOVAH,4CH INT21H CODEENDS ENDSTART,执行完程序,返回DOS,有两种方法:,1 标准序: 将主程序定义成远(FAR)过程,最后一条指令为RET,在程序开始,用下列指令设置堆栈段,M

3、AIN PROC FAR PUSHDS MOVAX,0 PUSHAX RET MAIN ENDP,由于开始执行程序的时候,DS、ES并未指向相对应的逻辑段,因此,还要设置DS及ES的值 MOVAX,DATA MOVDS,AX MOVES,AX,MAIN PROC FAR PUSHDS MOVAX,0 PUSHAX MOVAX,DATA MOVDS,AX MOVES,AX RET MAIN ENDP,2、非标准序: 代替标准序部分,在代码段结束之前增加两条语句 MOVAX,4C00H(或MOV AH,4CH) INT 21H,2.3.2 汇编语言的语句,2.3.3 汇编语言的语句,汇编语言的语句

4、格式分类 语句一般由分隔符分成的四个部分组成,它们有两种类型: 1. 指令语句(执行性语句)由处理器指令构成的语句,它通常对应一条机器指令,出现在程序的代码段中,其结构如下:,2.伪指令语句,2. 伪指令语句(说明性语句)由伪指令构成的语句,它通常指示汇编程序如何汇编源程序,其结构如下:,(1)标号和名字,2.3.4 伪指令语句,汇编程序提供一些指令使你能控制一个程序进行汇编,这些指令,称为伪操作指令。 它只有在程序汇编时才有作用,且不会产生任何机器代码。 伪指令可以完成数据定义、分配存储区、指示程序结束等功能。,1. 段定义伪指令,1.段定义伪指令:SEGMENT和ENDS 指令格式: 段名

5、SEGMENT 定位类型 组合类型 类别名 ;指令语句或伪指令语句 段名ENDS 功能:用来定义段的组合,指出段名及段的各种属性,并表示段的开始和结束。,指令说明,2.段寄存器说明伪指令:ASSUME 格式: ASSUME 段寄存器名:段名称,段寄存器:段名称, 功能:设定特定的段寄存器指向特定的逻辑段。 注意:只说明程序中的各逻辑段与各段寄存器的关系,并未给段寄存器赋实际的初值。因此编程者需要在程序中对被说明的各段寄存器设初值(CS除外,SS根据堆栈段的设置而定),各段寄存器的设置,对于代码段:CS和IP初值在程序执行时由伪指令语句END START装入,无需在程序中设置; 对于堆栈段:若在

6、段定义时选用了组合类型STACK,系统链接时会自动初始化SS和SP,因此可不用对其初始化; 如用到数据段DS或附加数据段ES,需要在程序中初始化,如: ASSUME CS:CODE,DS:DATA,SS:STACK MOV AX,DATA MOV DS,AX,名称种类说明,3.END 格式: END entry point label label是PROC中的“过程名”或程序入口标号 功能:用来指明整个程序的结束 。 主程序中label不能省略,子程序中可省略。,4.数据定义伪指令 (1)等值语句:EQU (2)等号语句: (3)数据定义及存储空间分配伪操作:DB、DW、DD、DQ和DT,(1

7、)EQU,(1)等值语句:EQU 格式:名称 EQU 表达式 功能:用于给表达式赋予一个名称。在程序指令中,若用到表达式可用名称代替。 实例: VALUEEQU10 COUNT EQUVALUE 经过以上定义后,在程序中若写VALUE则代表10;若你写COUNT,则是代表VALUE,在此例是10。 注意:对同一名称不能重复定义,如: PORT EQU 80H PORT EQU PORT+1 (错),(2),(2)等号语句:= 格式:名称 = 表达式 说明: “=”伪操作与EQU类似,但EQU可以定义文字(例COUNT EQU VALUE)和数值,而“=”只能用以定义数值; “=”伪操作中的名称

8、允许重复定义,而EQU不允许重复定义。 实例: PORT = 18 PORT = PORT + 1,(3),(3)数据定义及存储空间分配伪操作DB、DW、DD、DQ和DT 格式:名称 伪操作符表达式 DB(Define Byte ) :定义字节数据,为每个操作数分配1个字节存储空间; DW(Define Word ) :定义字数据,为每个操作数分配2个字节存储空间; DD(Define Double word ) :定义双字,为每个操作数分配4个字节存储空间; DQ(Define Quadword):定义四个字 ,为每个操作数分配8个字节存储空间; DT(Define Tenbytes):定义

9、十个字节,为每个操作数分配10个字节存储空间。, 当定义的数据元素为2字节及以上时,“低字节存放在低地址,高字节存放在高地址”。 DATA1 DB 08H DB 10H DATA2 DW 0011H DATA3 DD11223344H 假设DATA1的起始地址是 20200H,相对应内存内容如右图所示:,DATA1,DATA2,DATA3,20200H,20201H,08H,10H,44H,33H,22H,11H, , 数据定义格式中,“名称”是可有可无的。但如果有,程序中就可以用此名称来调用这个变量。 数据定义格式中,“表达式”可以是: 一个常数; 如:DATA1 DW 1234H 连续几个

10、用逗号分开的常数; 如: DATA1 DB 1,2,41H,42H 又如:DATA2DW 1,2,3,续,字符串(必须放在英文的单引号或双引号内),每个字符占一个字节,用其对应的ASCII码来表示,因此常用DB为操作符。 如: STRING DB Reg16 ?,续,?(问号,作用:预留单元,不赋具体初值) 如:res dw ? 一个复制形式的运算符:DUP DUP:是重复数据定义操作符,它利用给出的一个初值(或一组初值)以及重复次数来初始化存储器。 如:DATA DB 5 DUP(45H),5.指定地址伪指令ORG 格式: ORG表达式 ORG$+表达式 功能:用来指明该语句下面的程序段在段

11、内的起始地址 。 $:表示地址计数器的当前值(汇编ORG语句前的值)。 地址计数器:记载正在汇编的数据或指令目标代码存放在当前逻辑段内偏移量的部件。 说明:格式中的表达式的值是一个2字节的无符号数,例子,例子: DATASEGMENT A1 DB1,2 ORG 10H A2 DB3,4 ORG $+5 A3 DB5,6 ORG 0100H A4 DW1,$+4 DATAENDS,6.变量标号属性类伪指令,6.变量和标号属性类伪指令 (1)地址操作符: 功能:取得名字或标号的段地址和偏移地址两个属性。 种类(5): :表示将括起来的表达式作为存储器地址指针; $:表示当前偏移地址; :(段前缀的

12、冒号):表示采用指定段的段地址寄存器。 SEG变量/标号;返回变量或标号的段地址 OFFSET变量/标号;返回变量或标号的偏移地址,MOVBX,OFFSET BUF LEA BX,BUF MOVBX,SEG BUF,(2)类型操作符 功能:对变量或标号的类型属性进行相关设置。 种类(6种): (1)PTR操作符 格式:类型名 PTR 变量/标号 功能: 使名字或标号具有指定的类型; 使用PTR可以临时改变名字或标号的当前属性。,类型名,PTR操作符中的“类型名”可以是下列三组: BYTE、WORD、DWORD、QWORD(变量); 或者是NEAR或FAR(标号或过程名);,(2)THIS操作符

13、,(2) THIS 操作符 格式:THIS类型名 功能:与EQU配合使用,创建采用当前地址,但为指定类型的操作数。 实例: b_var equ this byte w_var dw 10 dup(0) 两句的功能: w_var是一个按字访问变量;定义b_var为一个按字节访问变量,但与变量w_var的地址相同。,(3)(4),7.过程定义伪指令:PROC和ENDP 格式: 过程名PROC 类型 RET RET 过程名 ENDP 功能:PROC和ENDP两个伪指令,分别指明一个过程的开始、结束及属性。,各部分介绍,过程名是用户给过程起的名称。它是提供给其它程序调用使用的,因而,过程名是不能省略的

14、。具有段基地址、偏移地址和类型三个属性。 类型: NEAR:近过程,只能被过程所在逻辑段中的其他程序调用(缺省的默认值) ; FAR:远过程,可被任何逻辑段中的程序调用。 RET:过程的返回指令,至少包含一个 。 过程的调用: CALL 过程名,8.宏指令,8.宏指令 (1)宏定义 格式: 宏指令名 MACRO形式参数 宏体 ENDM,说明,例2-9 定义一条宏指令,实现对某个寄存器左移4次。 LSHIFTMACROREG MOVCL, 4 SALREG, CL ENDM 这里LSHIFT是宏指令名,REG为形式参数,宏指令LSHIFT实现对寄存器REG左移4次。REG在调用时将由实际参数提供

15、具体的寄存器名。,例子2,例如:定义的宏指令既可以实现左移,又可以实现右移.SHIFTMACRO N, REG, CC MOV CL, N S由BCD1中取出一个字节的 MOVDL , AL;组合BCD码 SHIFT 4 , DL,HR;宏调用:移位 ADD DL , 30H;将DL的内容右移4次 CDISP; 宏调用:显示高位BCD码 AND AL , 0FH ADD AL , 30H MOV DL , AL CDISP;宏调用:显示低位BCD码,宏展开,;宏展开:汇编后对应的程序 MOVAL , BCD1 MOVDL , AL +MOVCL , 4; SHIFT4 , DL ,AR宏展开

16、+SHRDL , CL ADDDL , 30H +MOVAH , 02H;CDISP宏展开 +INT21H ANDAL , 0FH ADDAL , 30H MOVDL , AL +MOVAH , 02H; CDISP宏展开 +INT21H,(4)宏定义中的变量与标号,内容回顾,代码段,DATA SEGMENT;定义数据段 (数据定义) DATA ENDS EXTRA SEGMENT;定义附加段 (数据定义) EXTRA ENDS STACK SEGMENTPARA STACK STACK; 堆栈区间预留字节数定义 TOP EQU THIS WORD STACKENDS,CODE SEGMENT;定义代码段 ASSUMECS:CODE,DS:DATA,ES:EXTRA,SS:STACK START:MOVAX,DATA MOVDS,AX MOVAX,EXTRA MOVES,AX MOVAX,STACK MO

展开阅读全文
相关资源
相关搜索

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

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号