收藏 分享(赏)

第03章 汇编语言67965.ppt

上传人:dreamzhangning 文档编号:2771307 上传时间:2018-09-27 格式:PPT 页数:65 大小:295KB
下载 相关 举报
第03章 汇编语言67965.ppt_第1页
第1页 / 共65页
第03章 汇编语言67965.ppt_第2页
第2页 / 共65页
第03章 汇编语言67965.ppt_第3页
第3页 / 共65页
第03章 汇编语言67965.ppt_第4页
第4页 / 共65页
第03章 汇编语言67965.ppt_第5页
第5页 / 共65页
点击查看更多>>
资源描述

1、3.3.1 汇编语言源程序,了解: 计算机的三种语言 源程序的结构 汇编语言语句格式,一、计算机设计语言,机器语言 汇编语言 高级语言,面向机器 的语言,机器语言,汇编语言,高级语言,汇编程序,汇编语言源程序,用助记符编写,源程序的编译程序,汇编程序,汇编语言源程序,机器语言目标程序,汇编语言程序设计与执行过程,输入汇编语言源程序 源文件 .ASM 汇编(编译) 目标文件 .OBJ 链接 可执行文件 .EXE 调试 最终程序,二、汇编语言源程序结构,数据段名 SEGMENT 数据段名 ENDS附加段名 SEGMENT 附加段名 ENDS,堆栈段名 SEGMENT 堆栈段名 ENDS代码段名 S

2、EGMENT 代码段名 ENDS,三、汇编语言语句类型,指令性语句指示性语句,CPU执行的语句,能够生成目标代码,CPU不执行,而由汇编程序执行的语句,不生成目标代码,四、汇编语言语句格式,指令性语句:标号: 前缀 助记符 操作数,操作数 ;注释,指令的符号地址,标号后要有冒号,操作码,注释前加分号,指示性语句格式,名字 伪指令助记符 操作数 ,操作数, ;注释,变量的符号地址,其后不加冒号,指示性语句中至少有一个操作数,标号、名字,标号后有冒号,在指令性语句前;名字后不加冒号,在指示性语句前。 英文字母、数字及专用字符组成,最大长度不能超过31个,且不能由数字打头,不能用保留字(如寄存器名,

3、指令助记符,伪指令)。,操作码,指令码 命令CPU要完成的操作伪指令助记符,指示汇编程序要完成的操作。 用来定义变量,分配存储单元, 指示程序开始和结束等,注释,用分号作为注释的开始; 用于说明程序或语句的功能,以便于阅读和理解,操作数,寄存器 存储器单元 常量 变量或标号 表达式,常量,数字常量 字符串常量:用引号引起的字符或字符串 例:A,ABCD,汇编时被译成对应的ASCII码41H,42H,43H,44H,变量,代表内存中的数据区,程序中视为存储器操作数 变量的属性:段 值 变量所在段的段地址偏移量 变量单元地址与段首地址之间的位移量。类 型 字节型、字型和双字型,五、表达式,算术运算

4、 逻辑运算 关系运算 取值运算和属性运算 其它运算,算术运算和逻辑运算符,算术运算符 +,-,*,/,MOD 逻辑运算符 AND,OR,NOT,XOR 例:MOV AL,8 AND 4MOV AL,8+4-1,关系运算符,参与关系运算的必须是两个数值 关系不成立,结果为0; 关系成立,结果为FFFFH。,EQ NE LT GT LE GE,取值运算符,取值运算符用于分析存储器操作数的属性,取值运算符,OFFSET 取得其后变量或标号的偏移地址 SEG 取得其后变量或标号的段地址,TYPE 取变量的类型 LENGTH 取所定义存储区的长度 SIZE 取所定义存储区的字节数,取值运算符例,MOV

5、AX,SEG DATAMOV DS,AXMOV BX,OFFSET DATALEA BX,DATA,等价于,取值运算符例,若BUFFER存储区是用如下伪指令定义: BUFFER DW 200 DUP(0)则:TYPE BUFFER 等于2LENGTH BUFFER 等于200SIZE BUFFER 等于400,属性运算符,属性运算符PTR用于指定其后存储器操作数的类型 例:MOV BYTE PTRBX,12H,其它运算符,方括号: 方括号中内容为操作数的偏移地址段重设符段寄存器名: 用于修改默认的段基地址,3.3.2 伪指令,掌握: 伪指令的格式及实现的操作 伪指令的应用,伪指令,由汇编程序执

6、行的“指令系统” 用于定义变量、分配存储区、定义逻辑段、指示程序开始和结束等,常用伪指令,数据定义伪指令 符号定义伪指令 段定义伪指令 过程定义伪指令 结束伪指令,一、数据定义伪指令,用于定义数据区中变量的类型 格式:变量名 伪指令助记符 操作数, ;注释,某些情况下可省略,可选,数据定义伪指令,伪指令助记符 DB 定义的变量为字节型 DW 定义的变量为字类型(双字节) DD 定义的变量为双字型(4字节) DQ 定义的变量为4字型(8字节) DT 定义的变量为10字节型,数据定义伪指令例,DATA1 DB 11H,22H,33H,44H DATA2 DW 11H,22H,3344H DATA3

7、 DD 11H*2,22H,33445566H,以上变量在内存中的存放形式,数据定义伪指令,伪指令的性质决定所定义变量的属性; 定义字符串必须用DB伪指令 例:DATA1 DB ABCD,66H,A,B,C,D,41H,42H,43H,44H,66H,重复操作符,为一个数据区的各单元设置相同的初值 格式:变量名 伪指令助记符 n DUP(初值,) 例:DW 20 DUP(0)DB 3 DUP(22H,11H,?),随机数,用?预留存储空间,MEM1 DB 34H,A,?,?,?DW 20 DUP(?),预留40个字节单元,二、符号定义伪指令,格式:符号名 EQU 表达式 操作:用符号名取代后边

8、的表达式,不可重新定义 例:CONSTANT EQU 100VAR EQU 30H+99H,EQU说明的表达式不占用内存空间,三、段定义伪指令,说明逻辑段的起始和结束; 说明不同程序模块中同类逻辑段之间的联系形态,段定义伪指令,段名 SEGMENT 定位类型 组合类型 类别 段名 ENDS,说明逻辑段的起点,说明不同模块中同名段的组和连接方式,定位类型,PARA: 段的起点从节边界开始(16个字节为1节) BYTE: 段的起点从存储器任何地址开始 WORD:段的起点从偶地址开始 PAGE: 段的起点从页边界开始(256个字节为1页),组合类型,与其它模块中的同名段在满足定位类型的前提下 具有的

9、组合方式: NONE: 不组合 PUBLIC: 依次连接(顺序由LINK程序确定) COMMON: 覆盖连接 STACK: 堆栈段的依次连接 AT 表达式:段定义在表达式值为段基的节边界 MEMORY: 相应段在同名段的最高地址处。,类别,不同模块连接时将相同类别的段放在连续的内存区域中,段定义伪指令例,DATA SEGMENT MEM1 DB 11H,22H DATA ENDS,四、设定段寄存器伪指令,说明所定义逻辑段的性质 格式ASSUME 段寄存器名:段名,段寄存器名:段名,,五、结束伪指令,表示源程序结束 格式:END 标号,一个完整源程序结构例,DSEG SEGMENT DATA1

10、DB 1,2, DATA2 DW 1234H DSEG ENDS ESEG SEGMENTDB 20 DUP(?) ESEG ENDS SSEG SEGMENT STACK STACKDB 200 DUP(?) SSEG ENDS,一个完整源程序结构例,CSEG SEGMENTASSUME CS:CSEG,DS:DSEG,ES:ESEG,SS:SSEGSTART:MOV AX,DSEGMOV DS,AXMOV AX,ESEGMOV ES,AXMOV AX,SSEGMOV SS,AXCSEG ENDSEND START,源程序代码,六、过程定义伪指令,用于定义一个过程体 格式:过程名 PROC

11、NEAR / FAR RET过程名 ENDP,过程入口的符号地址,P166例,七、宏命令伪指令,宏命令-源程序中由汇编程序识别的具有独立功能的一段程序代码 格式:宏命令名 MACRO ENDM,宏体,P167例,八、其它伪指令,ORG - 段内程序代码或变量的起始偏移地址 格式:ORG 表达式 例:ORG 2000H,计算值为非负常数,其它伪指令,NAME-为目标程序设定一个名字 格式:NAME 模块名TITLE-为程序清单指定打印标题 格式:TITLE 标题名,可以缺省,P169例,4.3 功能调用,DOS 功能调用 高级调用,操作系统提供 BIOS功能调用 低级调用,DOS 功能调用,包含

12、多个子功能的功能包,用软中断指令调用,中断类型码固定为21H; 各子功能采用功能号来区分。,附录C,DOS 功能调用,设备管理 目录管理 文件管理 其它,DOS 功能调用,调用格式:MOV AH,功能号INT 21H,1.从键盘输入单字符并显示,调用方法:MOV AH,01INT 21H 输入的字符在AL中,单字符输入例,GET_KEY: MOV AH,1 INT 21H CMP AL,Y JZ YES CMP AL,N JZ NO JNZ GET_KEY YES: NO: ,交互式应答程序,2. 从键盘输入字符串,AH 功能号OAH DS:DX 字符串在内存中的存放地址 INT 21H,定义

13、字符缓冲区,用户自定义缓冲区格式:,0DH,N1,N2,整个缓冲区,最大键入字符数,实际键入字符数,输入字符串程序段,DAT1 DB 20,?,20 DUP(?)LEA DX,DAT1MOV AH,0AHINT 21H,在数据段中定义,输入缓冲区,14H,?,20个字节,定义后的输入缓冲区初始状态:,3. 单字符显示输出,AH 功能号O2H DL 待输出字符 INT 21H,单字符显示输出例,MOV AH,02MOV DL,41HINT 21H,执行结果: 屏幕显示A,4. 字符串输出显示,AH 功能号O9H DS:DX 待输出字符串的偏移地址 INT 21H,字符串输出显示,被显示的字符串必

14、须以$结束,且所显示的内容不应出现非可见的ASCII码,字符串输出显示例,DATA SEGMENT MESS1 DB Input String: 0DH,0AH,$ DATA ENDS CODE SEGMENT MOV AH,09 MOV DX,OFFSET MESS1 INT 21H,4.4 汇编语言程序设计,设计步骤: 根据实际问题抽象出数学模型 确定算法 画程序流程图 分配内存工作单元和寄存器 程序编码 调试,程序流程图符号,起始:,功能:,判断:,子过程:,在计算机上进行程序设计过程,D:masmEDIT 输入源程序 D:masmMASM 汇编 D:masmLINK 链接 D:masmTD 调试,

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

当前位置:首页 > 实用文档 > 往来文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报