定义段和变量的伪指令

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

1)用数wk.baidu.com表达式定义变量
【例4.11】 K1 DB 10, 4, 10H 4.11】
K2 DW 100, 100H, -5
K3 DD 3*20, 0FFFDH
• 【例4.12】 RS1 DW ADDR1 4.12】 • DW ADDR2 • RS2 DD LOOP1 • DD LOOP2 • 汇编程序在汇编时,在相应存储区域
定义段的伪指令
格式:段名SEGMENT [定位类型][, 组合类型][, 格式:段名SEGMENT [定位类型][, 组合类型][, 字长类 型][, 类别] 类别] ( 段体 ) 段名 ENDS 任何一个逻辑段从SEGMENT语句开始,以ENDS语 任何一个逻辑段从SEGMENT语句开始,以ENDS语 句结束。伪指令名SEGMENT和ENDS是本语句的关键字, 句结束。伪指令名SEGMENT和ENDS是本语句的关键字, 不可以默认,并且必须成对出现。语句中段名是必选项, 不可以默认,并且必须成对出现。语句中段名是必选项, 定位类型、组合类型、字长类型、类别为可选项。 用户自己选定,不能省略,其规定同变量或标号,一个 段开始与结尾用的段名应一致。
中存入有关变量或标号的地址值,其中偏 移地址或段基址均占一个字,低位字节占 用第一个字节地址,高位字节占用第二个 字节地址。若用DD定义变量或标号,则偏 字节地址。若用DD定义变量或标号,则偏 移地址占用低位字,段基址占用高位字。
(3)用字符串定义变量
此时,字符串必须用单引号引起来,其中字符 的个数可以是一个,也可以是多个。注意空格也是 的个数可以是一个,也可以是多个。注意空格也是 字符(ASCII码为20H)。 字符(ASCII码为20H)。 【例4.13】 STRING1 DB '123' 4.13】 STRING2 DB 'HOW ARE YOU? ' STRING3 DW 'C' , 'DE' 注:对字符串的定义可用DB伪指令,也可 注:对字符串的定义可用DB伪指令,也可 用DW伪指令。用DW和DB定义的变量在存储单元中 DW伪指令。用DW和DB定义的变量在存储单元中 存放的格式是不同的。用DW语句定义的字符串只允 存放的格式是不同的。用DW语句定义的字符串只允 许包含一个或两个字符,如果字符多于两个时,必 许包含一个或两个字符,如果字符多于两个时,必 须用DB语句来定义。 须用DB语句来定义。
伪指令SEGMENT和ENDS总是成对使用的。 伪指令SEGMENT和ENDS总是成对使用的。 SEGMENT 伪指令定义一个段的段名和段的首地址, ENDS定义一个段的结束。 ENDS定义一个段的结束。
【例】下面定义了名字叫DATA的数据段,其中有字节变 下面定义了名字叫DATA的数据段,其中有字节变 量S1,保留了80个字节单元: S1,保留了80个字节单元: DATA S1 DATA SEGMENT DB 80 DUP(?) DUP( ENDS
变量定义伪指令
变量定义伪指令用来定义变量的类型,并 为变量中的数据项分配存储单元。变量定 义伪指令有两种不同的格式。 格式:[变量名] 格式:[变量名] DB/DW/DD/DQ/DT 表 达式
DB( DB(define byte):定义一个字节类型的变量,其后 byte):定义一个字节类型的变量,其后 的每个操作数均占用1 的每个操作数均占用1个字节。 DW( DW(define word):定义一个字类型的变量,其 word):定义一个字 后的每个操作数均占用1个字(2 后的每个操作数均占用1个字(2个字节)。 DD( DD(define doubleword):定义一个双字类型的变 doubleword):定义一个双字类型的变 量,其后的每个操作数均占用2个字(4 量,其后的每个操作数均占用2个字(4个字节)。 DQ( DQ(define quadword):定义一个四字类型的变量, quadword):定义一个四字类型的变量, 其后的每个操作数均占用4个字(8 其后的每个操作数均占用4个字(8个字节)。 DT( DT(define ten bytes):定义一个十字节类型的变 bytes):定义一个十字节类型的变 量,其后的每个操作数均占用5个字(10个字节)。 量,其后的每个操作数均占用5个字(10个字节)。 其中,各变量定义伪指令都将高位字节数据存放在 高地址中,低位字节数据存放在低地址中。格式1又可 高地址中,低位字节数据存放在低地址中。格式1 分为以下几种具体用法。
伪指令ASSUME则告诉汇编程序,哪一个段为数据段,哪 伪指令ASSUME则告诉汇编程序,哪一个段为数据段,哪 一个段为堆栈段,哪一个段为代码段。 伪指令ORG用来规定目标程序存放单元的偏移量。 伪指令ORG用来规定目标程序存放单元的偏移量。
结合,有两点需要说明: 1、SEGMENT和ENDS前面的标号如DATA、 SEGMENT和ENDS前面的标号如DATA、 STACK、CODE等,是用户所取。互相配对的 STACK、CODE等,是用户所取。互相配对的 SEGMENT和ENDS前的标号必须一样。 SEGMENT和ENDS前的标号必须一样。 2、ASSUME语句使汇编程序得知哪一段是数据段, ASSUME语句使汇编程序得知哪一段是数据段, 哪一段是堆栈段,哪一段是代码段。但除CS以外, 哪一段是堆栈段,哪一段是代码段。但除CS以外, 各个段寄存器的实际值,还要用MOV指令来赋给。 各个段寄存器的实际值,还要用MOV指令来赋给。 上例中可看到为数据段寄存器DS赋值的两条MOV 上例中可看到为数据段寄存器DS赋值的两条MOV 指令。
相关文档
最新文档