搜档网
当前位置:搜档网 › 6.1.2 段寄存器的说明语句

6.1.2 段寄存器的说明语句

6.1.2 段寄存器的说明语句


→ 源程序的基本组成 → 段寄存器的说明语句 课件章节 网络课件目录 第1章 预备知识 第2章 CPU资源和存储器 第3章 操作数的寻址方式 第4章 标识符和表达式 第5章 微机CPU的指令系统 第6章 程序的基本结构 第7章 子程序和库 第8章 输入输出和中断 第9章 宏 第10章 应用程序的设计 第11章 数值运算协处理器 第12章 汇编语言和C语言

6.1.2 段寄存器的说明语句
在汇编语言源程序中可以定义多个段,每个段都要与一个段寄存器建立一种对应关系。建立这种对应关系的说明语句格式如下:
ASSUME 段寄存器名:段名[, 段寄存器名:段名, ……]
其中:段寄存器是CS、DS、ES、SS、FS和GS,段名是在段定义语句说明时的段名。
在一条ASSUME语句中可建立多组段寄存器与段之间的关系,每种对应关系要用逗号分隔。例如,
ASSUME CS:CODE1, DS:DATA1
上面的语句说明了:CS对应于代码段CODE1,DS对应于数据段DATA1。
在ASSUME语句中,还可以用关键字NOTHING来说明某个段寄存器不与任何段相对应。下面语句说明了段寄存器ES不与某段相对应。
ASSUME ES:NOTHING
在通常情况下,代码段的第一条语句就是用ASSUME语句来说明段寄存器与段之间的对应关系。在代码段的其它位置,还可以用另一个ASSUME语句来改变前面ASSUME语句所说明的对应关系,这样,代码段中的指令就用最近的ASSUME语句所建立的对应关系来确定指令中的有关信息。
例6.1 汇编语言段及其段说明语句的作用。
DATA1SEGMENT;定义数据段DATA1
word1DW 5678h
byte1DB "ABCDEFG"
DATA1ENDS
DATA2SEGMENT;定义数据段DATA2
word2DW 1234h
word3DW 9876h
DATA2ENDS
DATA3SEGMENT;定义数据段DATA3
byte2DB ?
DATA3ENDS
CODE1SEGMENT;编写代码段CODE1
ASSUMECS:CODE1, DS:DATA1, ES:DATA2;(1)
MOVAX, DATA1;(2)
MOVDS, AX;(3)
MOVAX, DATA2;(4)
MOVES, AX;(5)

MOVAX, word1;访问段DATA1中的字变量word1
MOVword2, AX;访问段DATA2中的字变量word2

ASSUMEDS:DATA3, ES:NOTHING;(6)
MOVAX, DATA3
MOVDS, AX
MOVBL, byte2;访问段DATA3中的字节变量byte2

MOVAX, 4C00H;(7)
INT21H;(8)
CODE1 ENDS

语句(1)和(6)分别说明了段和段寄存器之间的对应关系,其中语句(6)重新说明语句(1)所指定的对应关系。
二组语句(2)和(3)、(4)和(5)实现对段寄存器DS和ES赋初值。ASSUME说明语句只起说明作用,它不会对段寄存器赋值,所以,必须对有关段寄存器赋值。在以后的其它源程序中也都是用此方法来实现对数据段寄存器赋值的。
语句(7)和(8)是调用中断21H的4CH号功能来结束本程序的执行,程序的返回代码由寄存器AL来确定。结束本程序执行的指令是所有主模块必须书写的语句。
注意:代码段寄存器不能由程序员在源程序中

对其赋值,其值是由操作系统在装入它进入系统运行时自动赋值的。
课件章节 课件目录 第1章 预备知识 第2章 CPU资源和存储器 第3章 操作数的寻址方式 第4章 标识符和表达式 第5章 微机CPU的指令系统 第6章 程序的基本结构 第7章 子程序和库 第8章 输入输出和中断 第9章 宏 第10章 应用程序的设计 第11章 数值运算协处理器 第12章 汇编语言和C语言

相关主题