南邮微机原理课件

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

注意:
80486在实模式下定义的逻辑段最大长度不允许超过64K , 一般采用16位寻址方式。 TASM5默认段长度为USE16
【小结】
微型计算机原理与接 口技术
1. 段定义语句有4个属性参数,每一个参数都有多种选择。
2. 模块化程序中才有必要考虑各模块之间同名段的定位
方式和链接方式。对于单一模块的程序不需考虑这些问题。
5.2.1 源程序的结构
一个完整的源程序在结构上必须做到: 用方式选择伪指令说明执行该程序的微处理 器类型; 用段定义语句定义每一个逻辑段; 用过程定义语句定义每一个子程序; 用ASSUME语句说明段约定; 用汇编结束语句说明源程序结束; 程序在完成预定功能之后,应能安全返回DOS。
DATA MESG DATA
6. 返回DOS语句
微型计算机原理与接 口技术
程序在完成预定任务之后,必须返回DOS。返回DOS最常用的 方法是使用DOS系统4CH功能调用,即连续执行以下3条(或2 条)指令:
MOV AH,4CH MOV AL,返回码 ; 不准备组织批处理
文件,此条可省 INT 21H
微型计算机原理与接
.486
功能:
是逻辑段的定界语句,源程序中每一个逻辑段都必须用段定义语句定界。
段定义语句格式如下:
段名 SEGMENT 定位参数 链接参数 ‘分类名’ 段长度 段体
段名 ENDS
SEGMENT/ENDS
是一对段定义语句,一个逻辑段从SEGMENT语句开始,到ENDS语句结束。
段名 命名规则根据段体的性质起一个适当的段名。通常用DATA 做为数据段的段名,用STACK做为堆栈段的段名,CODE为代码段的段名。
定位参数,链接参数,‘分类名’
微型计算机原理与接 口技术
为段定义语句的3个属性参数,可以选用1~3个,也可以全部省略。
属性参数的功能: 为源程序的汇编、链接提供必要的信息。
3. 段约定语句
微型计算机原理与接 口技术
格式: ASSUME 段寄存器:段名,……,段寄存器:段名
功能: ASSUME 语句通知汇编程序,寻址逻辑段使用哪一个 段寄存器。
说明: ① ASSUME语句是非执行语句,要求放在代码段之中,执行寻址操作之
前。习惯上,把ASSUME语句作为代码段的第一条语句。 ② ASSUME语句,仅仅是约定了对某个逻辑段进行寻址操作时使用哪一
DATA
ENDS
定义键标志单元(KEYFLAG)的物理地址为00417H,以便代码段中可以使用
变量名KEYFLAG访问这个单元。
AT 参数不能使用在代码段。
⑥ 缺省:表明该段是一个独立的逻辑段,链接程序对于不同模块中,链接参数 缺省的同名段,不进行组合。
注意:
模块化程序设计中才用到链接参数
微型计算机原理与接 口技术
;定义代码段
ASSUME CS:CODE,DS:DATA,SS:STACK ;说明段约定
BEG: MOV AX,DATA
;BEG为启动地址标号
MOV DS,AX
MOV CX,10
LAST: MOV AH,9
MOV DX,OFFSET MESG
INT 21H
LOOP LAST
MOV AH,4CH
INT 21H
;同·286P,且汇编80386全部指令
·486或 ·486C ;同·386,且汇编80486实模式指令
·486P
;同·386P,且汇编80486全部指令
通常,方式选择伪指令放在程序的头部,做为源程序的第一条 语句。不设置方式选择伪指令与设置·8086是等价的。
2. 段定义语句
微型计算机原理与接 口技术
Warning no stack segment 这行信息仅仅是提醒用户注意,并不表示源程序有什么错误。
微型计算机原理与接 口技术
⑤ AT 表达式: 该属性表明:逻辑段在定位时,其段基址等于表达式给出的值。 AT属性常和 ORG伪指令配合 如: DATA SEGMENT AT 0040H
ORG 0017H KEYFLAG DB ?
① PUBLIC:通知链接程序,把不同模块中具有PUBLIC属性的同名段,在 满足定位方式前提下,按照指定的链接顺序进行链接,组成一个逻辑段;
② MEMORY:实验证明 MEMORY属性和 PUBLIC属性是等价的; ③ COMMON:通知链接程序,把不同模块中,具有 COMMON 属性的同名 段,根据指定的链接顺序,按照 “覆盖” 方式组合成一个逻辑段。组合之后 的逻辑段体积,等于链接之前具有 COMMON 属性同名段中最大的段体;
1. 方式选择伪指令
微型计算机原理与接 口技术
功能: 通知汇编程序,当前的源程序指令是哪一种CPU指令,经过汇 编链接之后生成的目标程序在哪一种CPU机型上运行。 不属于选定CPU的指令均为非法指令。80486指令集是在 8086、8088、80286、80386基础上逐步发展起来的,很显 然,80486的某些指令在早期的80X86系列是没有的,为了使汇 编程序能够识别,在高版本的汇编程序中,对应于每一种CPU的 指令系统,都有一个目标指令的集合。
(4) 段长度
微型计算机原理与接 口技术
这一参数是80386、80486汇编语言新增的段参数,只有高版 本的汇编器才能识别,它有两种描述方式可供选择:
① USE16:表示该逻辑段长度最大允许为64K,单元的有效地 址为16位,访问该逻辑段应采用16位寻址方式。
② USE32:表示该逻辑段长度可以超过64K,单元的有效地址 为32位,访问该逻辑段采用32位寻址方式。
3. 单一模块的程序,如果有堆栈段的话,堆栈段的链接属
性应为 STACK(因为只有STACK属性才表示该段是堆栈
段),分类名应为用’STACK’,且不能省略。其它的逻辑段,
前3个属性参数都选用缺省方式。
4. 不同模块中,链接方式相同的同名段,如果有‘分类名’
的话,‘分类名’必须相同。
5. DOS环境下运行的程序选用USE16做段长度。
④ PAGE 页地址:表示该逻辑段的目标代码,从一个能被256整除的地址开 始依次存放。
注意:
链接程序对于不同模块中的同名段进行链接时,对于有BYTE属性的段,总 是紧接着前一段存放,不留空闲单元。对于有WORD属性的段,也是紧接前一 段存放,最多留出一个空闲单元。
微型计算机原理与接 口技术
(2) 链接参数 链接又称组合,链接参数通知链接程序如何将不同模块中的同名逻辑段组合 成一个段
指令以句号开头, 格式和功能如下:
微型计算机原理与接 口技术
·8086
;只汇编8086、8088指令。
·286或 ·286C ;只汇编8086、8088及80286实模式指令
·286P
;只汇编8086、8088及80286全部指令
·386或 ·386C ;同·286,且汇编80386实模式指令
·386P
微型计算机原理与接 口技术
④ STACK: 具有STACK属性的逻辑段是堆栈段,链接程序将把不同模块中 具有STACK属性的同名段链接成一个大的堆栈段。链接后的堆栈空间是链 接前各模块预留的堆栈空间之和。 程序装入后,DOS自动给SS寄存器赋值,使之等于堆栈段段基址,自动给SP赋 值,使之等于堆栈空间的字节数,使 SS:SP自动指向栈顶。 链接程序要求:EXE文件的汇编源程序,必须有堆栈段,否则链接时发出警告 信息:
微型计算机原理与接
(1) 定位参数
口技术
定位参数通知链接程序,逻辑段的目标代码在存储器中如何存放。
① BYTE字节地址:表明该逻辑段的目标代码可以从任意地址开始依次存放;
② WORD 字地址:表示该逻辑段的目标代码,从偶地址开始依次存放;
③ PARA (或者缺省) 节地址:表示该逻辑段的目标代码,从一个能被16整除 的地址开始依次存放;
.486
微型计算机原理与接
;方式定义
口技术
SEGMENT USE16
;定义数据段
DB ‘HELLO’,0DH,0AH,’$’
CS
ENDS
CODE BEG: LAST:
CODE
SEGMENT USE16
ASSUME CS:CODE,DS:DATA
MOV
AX,DATA
MOV
DS,AX
MOV CX,10
MOV
(3) ‘分类名’ 表示逻辑段的类别。 由用户定义,是长度不超过40个字符的字符串。 分类名必须用单引号括起来,分类名可有可无。 习惯上,数据段分类名用’DATA’,代码段分类名用’CODE’,
堆栈段分类名用 ‘STACK’。 链接程序把不同模块中分类名相同的同名段组织成一类,存放
在邻近的存储区中。
注意 :在单一模块的源程序中,以及在模块化程序的主模块
中必须用此格式作为源程序的最后一条语句。
微型计算机原理与接 口技术
格式2: END 功能 : 通知汇编程序,源程序到此结束。在模块化程序的 子模块中,必须用此格式作为源程序的最后一条语句。
结束语句有三种:
段结束 (SEGMENT/ENDS) 过程结束(PROC/ENDP) 汇编结束(END)
AH,9
MOV
DX,OFFSET MESG
INT
21H
LOOP LAST
MOV
AH,4CH
INT
21H
ENDS
END BEG
;定义代码段 ;说明段约定 ;BEG为启动地址 MESG
‘H’ ‘E’ ‘L’ ‘L’
‘O’ DS
0D 0A ‘$’
;返回DOS ;汇编结束
微型计算机原理与接 口技术
1. 方式选择伪指令 2. 段定义语句 3. 段约定语句 4. 过程定义语句 5. 汇编结束语句 6.返回DOS语句 这类语句是与程序结构密切相关的基本语句,用来说明 MPU类型、段结构与寻址方式的段约定、目标块的定位和 源程序结束。
格式1: END 程序的启动地址标号
例如 : END BEGIN
功能 : 通知汇编程序,源程序到此结束,用BEGIN作标号的指
令是程序的启动指令。
DOS装载程序的可执行文件(EXE文件)时,自动把标号BEGIN
所在段的段基址赋给CS,把BEGIN所在单元的偏移量赋给IP。
从而CPU自动从BEGIN开始的那条指令依次执行程序。
个段寄存器,而段寄存器的初值还必须在程序中用指令设置。
4. 过程定义语句
微型计算机原理与接 口技术
“过程”即“子程序”。子程序必须用RET作为返回指令,用 过程定义语句为子程序定界。
格式: 过程名 PROC 属性参数 …… 过程的实体
…… RET 过程名 ENDP
5. 汇编结束语句
微型计算机原理与接 口技术
第5章
微型计算机原理与接 口技术
宏汇编语言
5.1 宏汇编语言的开发过程 5.2 宏汇编语言基本语句
5.1 宏汇编语言的开发过程
微型计算机原理与接 口技术
编辑程序
Edit 等
. ASM 文件
汇编程序
TMASM
. OBJ 文件
连接程序
TLINK
. EXE 文件
5.2 宏汇编语言基本语句
微型计算机原理与接 口技术
;返回DOS
CODE ENDS
END BEG
;汇编结束
;方口式技定术义
DATA SEGMENT USE16
;定义数据段
MESG DB ‘HELLO’,0DH,0AH,’$’
DATA ENDS
STACK SEGMENT PARA STACK ‘STACK’ USE16;定义堆栈段
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT USE16
相关文档
最新文档