8086汇编语言程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南 通 大 学
NATOG UNIVERSITY
4.1 汇编语言的程序结构与语句格式
语法——语句和程序结构必须遵循的规则。 源程序按其编译器能够理解的语法编 写方可。
祈通中西 力求精进
南 通 大 学
NATOG UNIVERSITY
4.1.1 汇编语言源程序的框架结构
一、源程序的结构特点 按逻辑段组织源程序。包括代码段、堆栈段、数据段等。 1. 源程序由若干个逻辑段组成每段由伪指令SEGMENT开始、由 ENDS结束。 通常有:代码段 代码段(必不可少) 代码段 堆栈段——建立一个堆栈区,以存放中断时的断 堆栈段 点地址,子程序调用时断点地址及子程序 间传递参数。 数据段和附加数据段——用来在内存中建立一个 数据段和附加数据段 适当容量的工作区用以存放数据。
从源程序获得目标程序的过程
汇编语言源程序 高级语言源程序
汇编(可由汇编程序完成)
编译或解释 (可由编译程序完成)
机器语言程序 (目标代码)
为了能顺利完成汇编,用户必须为汇编程序提供一些额外的、与 硬件有关的信息. 如:程序使用的变量应分别存放在内存的哪个 单元、堆栈应从内存的什么地址开始等等。
祈通中西 力求精进
标号和名字必须符合汇编语言对标识符的规定: 标号和名字必须符合汇编语言对标识符的规定:
以字母开头,由字母(不分大小写)、数字(0~9)及部分特殊字符(? @ $和下划线_等)组成,字符串长度不超过31个。 标识符不能是汇编语言中有特定意义的保留字、助记符、Reg等, 如:CPU的内部寄存器名AH、AL、AX等。
(4)注释
——以“ ;”开始,给以编程说明。 汇编程序对“ ;”后的内容不做处理。 注释对汇编不起任何作用,不对应于任何机器码,仅增强源程序的可读性。
南 通 大 学
NATOG UNIVERSITY
4.2
8086汇编中的伪指令 8086汇编中的伪指令
——指示汇编、链接程序如何进行汇编和链接,影响目标代码 生成,本身不产生目标代码。 ——有符号定义语句、数据定义语句、程序结构语句、模块链 接语句、有关宏的语句、条件汇编语句等。
祈通中西 力求精进
南 通 大 学
NATOG UNIVERSITY
二、源程序与PC DOS的接口 汇编语言源程序(.ASM)经过汇编转变为目标程序(.OBJ), 当用链接程序对其进行链接和定位时,操作系统为每个用户程序 建立: ① 一个256字节的程序段前缀区 (PSP),存放用户程序信息。 在PSP的开始处(偏移地址0000H) 安排一条INT 20H 软中断指令。 INT 20H功能是使系统返回到DOS管 理状态。因此,用户执行程序完后, 必须能够转到PSP起始处执行INT 20H指令。
南 通 大 学
NATOG UNIVERSITY
第二种方法:非标准方法 ① 不定义主程序为FAR过程,并去掉标准序。 ② 在代码段结束之前(即CODE ENDS之前)增加两句: MOV AH,4CH INT 21H ;4CH号的DOS系统功能调用
祈通中西 力求精进
南 通 大 学
NATOG UNIVERSITY
PSP起始 0000H INT
20H
源自文库
定位用 户程序
祈通中西 力求精进
② 定位用户程序 ③ 设置DS和ES的值使之指向PSP的开始处, 即PSP的段地址→ DS和ES。 ④ 将用户程序的段基址、第一条指令的偏移地址设置CS、IP; 同时设置SS、SP。 ⑤ 运行用户程序 注:由于DS、ES由 DOS设置,所以在 保证用户程序执行完后返回DOS的方法—— 用户程序开始处应 第一种方法:标准序法 重新设置DS、ES。 ① 将用户程序中的主程序定义为FAR过程,其最后一条指令为RET(当程序 执行到RET时,会将栈顶的两个字分别送IP、CS) ② 在主程序的开始处将PSP的段地址和偏移地址(DS、ES和0000H)进栈保 护: PUSH DS ;保护PSP段地址 MOV AX,0 ;保护偏移0地址 PUSH AX …… ; 用户程序开始 当用户程序返回时,会返回到DOS(执行INT 20H)。
汇编语言程序是 机器语言程序的 符号表示
编写程序的语言 。
祈通中西 力求精进
南 通 大 学
NATOG UNIVERSITY
用汇编语言编写程序能够: 用汇编语言编写程序能够:
直接利用硬件系统的特性(如寄存器、标志、中断系统等), 直接对位、字节、字、寄存器或存储单元、I/O端口进行处理, 同时也能直接使用CPU指令系统提供的各种寻址方式,编制出高 质量的程序。 程序目标代码占用内存少,执行速度快,效率高,具有实时 性.
南 通 大 学
NATOG UNIVERSITY
第四章 8086汇编语言程序设计
几个概念 8086汇编语言的语句 8086汇编中的伪指令 8086汇编中的运算符 汇编语言程序设计 宏定义与宏调用 汇编语言系统程序设计实例与上机调试
祈通中西 力求精进
南 通 大 学
NATOG UNIVERSITY
几个概念
(3)操作数
——指令语句中提供给指令的操作对象、存放位置。 操作数可以是1个、2个或0个,2个时用逗号‘,’分开。 (INC BX; MOV AX,DATA ; RET) —— 伪指令语句中操作数的格式和含义随伪操作指令不同而不同。 操作数可能为以下几种情况: 常量操作数:如 34 等。 寄存器操作数:如 AX 等。 存储器操作数:如[0100H] 等。 表达式操作数:如[AX+2]、SEG NUM1等。
代码段
祈通中西 力求精进
南 通 大 学
NATOG UNIVERSITY
2. 在代码段起始处, 用ASSUME伪指令说明各个段Reg与逻辑段的关系,并在程序 起始处设置段Reg的初值(代码段CS除外)。 3. 每段由若干语句行组成, 每行只有一条语句且不能超过128个字符,允许有后续行。 整个源程序以END结束,它通知汇编程序停止汇编。END后的 START标号为程序运行时的起始地址。 4. 每条语句由4个字段构成。各字段间用空格分开。 5. 源程序中设有返回DOS的指令语句,使程序执行完后返回DOS系统 的命令接受状态。
(2)助记符、定义符 助记符、
——规定指令或伪指令的操作功能,是语句中唯一不可缺少的部分。 对于指令,汇编程序将其翻译成机器语言指令。 MOV AX, 100 → B8 00 01 对于伪指令,汇编程序据其要求的功能进行处理。 data SEGMENT → data与一段地址对应 string DB ‘Tsinghua’ → string与一内存地址对应 前缀仅可出现在指令助记符前。
汇编源程序 MASM ABC.ASM 有汇编错误信息 ? N 形成目标程序ABC.OBJ Y
连接目标程序 LINK ABC.OBJ 有连接错误信息 ? Y N 形成可执行程序 ABC.EXE , 装入可执行程序到内存 并执行 D:\>sub>ABC 运行结果正确 ? Y 下一程序 N N 用 DEBUG调试程序查错 ? Y 用 DEBUG 调试可执行程序 找到原因 D:\>sub> DEBUG ABC.EXE
祈通中西 力求精进
南 通 大 学
NATOG UNIVERSITY
汇编语言语法
SEGMENT DW 123 DW 456 DW ? ENDS ;语句1 ;语句2 ;语句3 ;语句4 ;语句5
【例题4.1】实现:123 + 456→sum 的源程序 DATA A B SUM DATA CODE
数据段
SEGMENT ;语句6 ASSUME CS:CODE,DS:DATA MAIN PROC FAR ;语句8 START:PUSH DS ;语句9 ………. ; RET ;语句17 MAIN ENDP ;语句18 CODE ENDS ;语句19 END START ;语句20
程序是一组为完成某种功能而按一定顺序(由算法确 定)编排的指令序列。 本章将首先介绍8086宏汇编语言的基本语法及常用伪 指令,然后用实例说明8086宏汇编语言源程序的设计 方法。
祈通中西 力求精进
南 通 大 学
NATOG UNIVERSITY
1. 3种语言
机器语言:当指令和数据都用二进制代码表示时, 计算机能够直接识别与执行,因而称 之为机器语言。 高级语言:是完全独立于机器的通用语言,效率低。 面向过程、面向对象,必须译成机器语言。 汇编语言:汇编语言是一种用符号表示的、面向CPU 指令系统的程序设计语言。 是用指令的助记符、符号地址、标号等
祈通中西 力求精进
南 通 大 学
NATOG UNIVERSITY
4.2.1 符号定义语句
—给表达式赋予一种符号名,以便在程序中用它替代表达式 1、等值语句
格式:符号名 EQU 表达式
例: PORT EQU 40H ; 用PORT代替40H号端口
COUNT EQU CX ; 用COUNT代替CX寄存器 M EQU MOV ; 用M代替MOV指令助记符 注:EQU语句不能重新定义,即在同一源程序中,用EQU 定义过的符号不能赋予不同的值。
祈通中西 力求精进
南 通 大 学
NATOG UNIVERSITY
3. 汇编语言程序的上机与处理过程
上机环境
用户开发的程序:ABC.exe等
应用软件 系统软件 硬件
操作系统:DOS系统 编辑器: EDIT.exe 编译程序:MASM.exe 连接程序:LINK.exe 调试程序:DEBUG.exe
CPU、存储器(ROM、RAM)、I/O接口、输入、输出设备
祈通中西 力求精进
编辑源程序 EDITABC.ASM
汇编语言上机过程 D:>EDIT ABC.asm D:>MASM ABC 有语法错,回EDIT下改该程序 D:>LINK D:>ABC 运行结果错,回EDIT下改程序 或在DEBUG下调试,找原因。 D:>DEBUG ABC.exe ABC 有错,回在EDIT下改程序
4.1.2
8086汇编语言的语句 8086汇编语言的语句
源程序是一个语句序列,每条语句规定一个基本操作,语句 序列完成某个特定的操作任务。 一、语句的种类与格式 1. 语句的种类 (1)指令语句 ____可执行语句,对应CPU指令系统规定的一条指令。 汇编时,汇编程序为之产生一一对应的机器目标代码。 例:MOV AH,4CH INC BX (2) 伪指令语句 ____汇编时给汇编程序提供与硬件有关的汇编信息, 本身并不产生目标代码,CPU不执行。是指示汇编 程序进行汇编的操作。 例:MESSAGE DB ‘THIS IS A SAMPLE PROGRAM.’ ;定义变量MESSAGE 在数据段DATA中的存放形式汇编时,汇编程序将MESSAGE定义为一个字 节类型数据区的首地址,并按字节存储字符串。
例:B EQU [bp+8]
B EQU 20H 不行!
祈通中西 力求精进
南 通 大 学
NATOG UNIVERSITY
2、等号语句
格式:符号名 = 表达式 功能与EQU类似。 例: PP = 89FAH PP = PP+1
;赋值 ; PP = 89FBH
注: 等号语句与EQU语句的相同点: 符号不是变量,所以用EQU、= 定义的符号不占用存储器单 元。 区别: 等号语句可以在同一源程序中重复定义符号。
南 通 大 学
NATOG UNIVERSITY
2. 汇编程序的作用
将源程序翻译成机器语言程序。 按用户要求自动分配存储区域(如程序区、数据区 等) 。 自动地把各种进制数 → 二进制数。 把字符 → ASCII码。 计算表达式的值。 自动对源程序进行检查,指出语法错误(如非法格 式、未定义的助记符、标号、漏掉操作数等)。
祈通中西 力求精进
2. 语句格式 指令语句的一般格式: [标号:] [前缀] 指令助记符 伪指令语句的格式: [名字] 伪指令定义符 [操作数] [操作数] [;注释] [;注释]
(1) 标号和名字 )
标识符字段 标识符字段由各种有效字符组成,一般表示符号地址,具有段基址、偏 移量、类型三种属性。 很多情况下标识符字段是语句中的可选部分,主要为便于程序的读写方 便而使用。 标识符字段通常有: 标号 后跟冒号,在程序中作为JMP、LOOP指令的转移目标,与具 体的指令地址相联系。 名字 用于定义常量名、变量名、过程名、段名等。
相关文档
最新文档