二、常用伪指令(P58) 伪指令不产生机器代码,CPU也不会产生某种操作 它主要告诉汇编程序哪些是数据,哪些是指令,符号 约定,程序从何处开始,何处结束,即为汇编控制命 伪指令很多,下面主要介绍段定义,过程定义
二 、 常用伪指令(P58) 伪指令不产生机器代码,CPU也不会产生某种操作, 它主要告诉汇编程序哪些是数据,哪些是指令,符号 约定,程序从何处开始,何处结束,即为汇编控制命 令。 伪指令很多,下面主要介绍段定义,过程定义
1、段定义伪指令→定义一个存储段,一个程 序模块可由若干段组成 格式: 〈段名〉 SEGMENT[定位方式组合方 式[类别名 伪指令或指令 〈段名〉ENDS 功能:定义一个以“段名”为名称的存储段
1、段定义伪指令→定义一个存储段,一个程 序模块可由若干段组成。 格式: 〈段名〉 SEGMENT [定位方式][组合方 式][‘类别名’] …… 伪指令或指令 〈段名〉 ENDS 功能: 定义一个以“段名”为名称的存储段
定位方式,组合方式,‘类别名’→赋给段名的 属性,三个可选项主要用于多模块化程序设计 以告诉LINK程序各模块间段如何定位,段与段 如何组合,还可连接在一起。一般单模块程序可 省略。 段名→给段取名,用来指出汇编程序为该段分配的 存储区的起始地址,即段地址,为一常数,用SEG运 算符取得 定位方式→相邻两段间应如何衔接,即对该段的起 始地址所提出的要求。定位方式有四种选择: (1)[PARA](节)→规定段的起始地址总是16的整 数倍,即低四位为零,省略时,系统隐含为此方式, 教材中均默认为PARA方式。 (2)WORD(字)→规定段的起始地址总是2的整 数倍,即低1位为零
•定位方式,组合方式,‘类别名’→赋给段名的 属性,三个可选项主要用于多模块化程序设计, 以告诉LINK程序各模块间段如何定位,段与段 如何组合,还可连接在一起。一般单模块程序可 省略。 • 段名→给段取名,用来指出汇编程序为该段分配的 存储区的起始地址,即段地址,为一常数,用SEG运 算符取得。 • 定位方式→相邻两段间应如何衔接,即对该段的起 始地址所提出的要求。定位方式有四种选择: (1)[PARA](节)→规定段的起始地址总是16的整 数倍,即低四位为零,省略时,系统隐含为此方式, 教材中均默认为PARA方式。 (2)WORD (字)→规定段的起始地址总是2的整 数倍,即低1位为零
(3)Byte(字节)→规定段的起始地址总是1的 整数倍,即能被1整除,任何地址可为段地址, 不留空隙。 (4)Page(页)→规定段的起始地址总 是256的整数倍,即低8位为零
(3) Byte(字节)→规定段的起始地址总是1的 整数倍,即能被1整除,任何地址可为段地址, 不留空隙。 (4)Page( 页)→规定段的起始地址总 是256的整数倍,即低8位为零
组合方式提供本段同其他段的组合关 系,有6种选择方式。 (1)NONE]不选择→表示本段与其他逻辑上不 发生关系,尽管物理上可能相邻,但每段都有 自己的段首址。系统隐含该组合方式,单模块 程序,各段之间不发生关系,采用不选择方式 教材中多数例题的数据段,代码段均为不选择 方式。 (2) PUBLIO公共→将同段名,同类别名的段顺 序相拼,是否留有空隙取决与定位方式
•组合方式——提供本段同其他段的组合关 系,有6种选择方式。 (1)[NONE]不选择→表示本段与其他逻辑上不 发生关系,尽管物理上可能相邻,但每段都有 自己的段首址。系统隐含该组合方式,单模块 程序,各段之间不发生关系,采用不选择方式, 教材中多数例题的数据段,代码段均为不选择 方式。 (2)PUBLIC公共→将同段名,同类别名的段顺 序相拼,是否留有空隙取决与定位方式