MASM标志符(Specifiers)的类型和作用

  16位的MASM汇编中,标识符(Specifiers)的作用很广。什么是标识符,就是需要我们自己命名的标识,如变量名、段名等。标识符的核心作用就是用容易记忆或书写的名称,代表一个不容易记忆或书写的数据和代码。就想用汇编指令代表机器代码一样,本质无区别。

  一、标识符的主要应用到以下方面:

  1、代表地址

  表示代码的地址,用near或far修饰远近(是否跨段),也都可以通过ptr转换。

  2、代表变量

  表示数据和结构(variable、struct、record等),用byte、word等表示数据宽度,也都可以通过ptr转换。

  3、代表常量

  如equ或=等常量定义。

  二、地址的使用

  如label:标号、proc的定义等。

  注意:如果跨段访问数据是通过段前缀来完成,如es:var1;如果跨段访问代码通过far ptr来完成,如jmp far ptr mylabel。

  三、变量的使用

  变量可分为:代表整数地址、代表字符地址、代表浮点数地址和代表变量地址值(variable pointer)四种用法

  1、数值变量的类型(根据变量的空间长度划分):

  Byte(1 Byte)、Word(2 Bytes)、DWord(4 Bytes)、FWord(6 Bytes)、QWord(8 Bytes)、TByte(10 Bytes)

  2、变量的定义

  定义变量的语法:[name] directive initializer[,initializer]...

  directive有以下6种

  DB(Define byte)

  DW(Define word)

  DD(Define doubleword)

  DF(Define farword)

  DQ(Define quadword)

  DT(Define 10-byte)

  3、整型的定义

  DW、DD、DQ可以定义整型,DF一般定义浮点型,DT定义BCD型。
  DD表示整数的内存模型:

  

  DD的内存模型:

  

  DQ的内存模型:

  

  4、BCD型的定义

  unpacked BCD:DB 1,5,8,2;表示2851;packed BCD:DT 9252851;表示9252851

  5、字符串的定义

  比如:DB 97,98或DB 'a','b'或DB "abc"

 注意:DW、DD、DQ、DT后的字符串都不能超过两个字符,如:DT "abc"是不允许的,即使空间可以容下,且这两个字符位于最低字节。

  6、浮点数的定义(Real-Number):

  浮点数有IEEE和Microsoft Binary两种标准,默认是IEEE:

  DD(32-bit)、DQ(64-bit)和DT(80-bit,只80386后支持)三种浮点数,比如:dd 98.6或DQ 5.391E-4

  IEEE标准下的内存模型:

   

  7、数组(array)的定义

  count dup (initialvalue[,initialvalue])

  比如:

  array DD 10 dup(1)

  buffer db 256 dup(?)

  masks db 20 dup(040h,020h,04h,02h)

      db 32 dup("Hello,world")

  tree_d DD  5 dup(5 dup(0))

  8、代表变量的地址-指针变量(pointer variable)

  1)指针的类型:Far和Near

  2)指针的定义:

  定义的语法与变量一致,DW代表Near pointer,DD代表Far pointer,80386之后的平坦寻址模式又不相同,内存模型如下:

  

  

  举例如下:

  np dw string;指向string的近指针

  fp dd string;指向string的远指针

  四、常量的使用

  greed equ "hello,world!"

  pei = 3.14

  

posted @ 2022-11-01 16:23  美洲象  阅读(191)  评论(0编辑  收藏  举报