TYPE 演算子

構文    TYPE  <式>

TYPE 演算子は<式>の種類によって、いろいろな数値を返します。

<式>がデータラベルの場合、そのデータ1つ当りのサイズを返します。<式>がコードラベルの場合、PTR 演算子の説明の表にあるような値を返します。

<式>が構造体型名またはレコード型名の場合、その構造体またはレコードのサイズを返します。

それ以外の場合、0を返します。

適用可能な式

TYPE 演算子はすべての式に適用できます。

以下では、TYPE 演算子とともに、後述の SIZEOF, LENGTHOF, LENGTH, SIZE の各演算子をまとめて例示します。

CODE1    LABEL    NEAR
CODE2    LABEL    FAR
DATA1    DB    0, 1, 2
DATA2    DW    0, 1, 2
DATA3    DB    8 DUP(0, 1, 2)
DATA4    DW    8 DUP(7 DUP(0), 1, 2, 3)
STAG    STRUC
    DB    0, 1, 2, 3, 4
STAG    ENDS
SDAT    STAG    <>,<>,<>
RTAG    RECORD    BLUE:3, RED:3, GREEN:3
RDAT    RTAG    <>,<>,<>

    MOV    AX, TYPE CODE1      ; 0FFFFh
    MOV    AX, TYPE CODE2      ; 0FFFEh
    MOV    AX, TYPE DATA1      ; 1
    MOV    AX, TYPE DATA2      ; 2
    MOV    AX, TYPE DATA3      ; 1
    MOV    AX, TYPE DATA4      ; 2
    MOV    AX, TYPE STAG       ; 5
    MOV    AX, TYPE SDAT       ; 5
    MOV    AX, TYPE RTAG       ; 2
    MOV    AX, TYPE RDAT       ; 2

    MOV    AX, SIZEOF DATA1    ; 3 * 1 = 3
    MOV    AX, SIZEOF DATA2    ; 3 * 2 = 6
    MOV    AX, SIZEOF DATA3    ; 3 * 8 * 1 = 24
    MOV    AX, SIZEOF DATA4    ; 10 * 8 * 2 = 160
    MOV    AX, SIZEOF STAG      ; 5
    MOV    AX, SIZEOF SDAT      ; 5 * 3 = 15
    MOV    AX, SIZEOF RTAG      ; 2
    MOV    AX, SIZEOF RDAT      ; 2 * 3 = 6

    MOV    AX, LENGTHOF DATA1    ; 3
    MOV    AX, LENGTHOF DATA2    ; 3
    MOV    AX, LENGTHOF DATA3    ; 3 * 8 = 24
    MOV    AX, LENGTHOF DATA4    ; 10 * 8 = 80
    MOV    AX, LENGTHOF SDAT    ; 3
    MOV    AX, LENGTHOF RDAT    ; 3

    MOV    AX, LENGTH DATA1     ; 1
    MOV    AX, LENGTH DATA2     ; 1
    MOV    AX, LENGTH DATA3     ; 8
    MOV    AX, LENGTH DATA4     ; 8

    MOV    AX, SIZE DATA1       ; 1
    MOV    AX, SIZE DATA2       ; 2
    MOV    AX, SIZE DATA3       ; 8 * 1 = 8
    MOV    AX, SIZE DATA4       ; 8 * 2 = 16

[目次]