zoukankan      html  css  js  c++  java
  • 汇编语言中LABEL伪指令的功能?

    LABEL 一般用作定义变量和标号的属性,它是与紧接着的下一条变量和标号定义语句相关的,其类型可以为BYTE、WORD、DWORD、QWORD、NEAR、FAR等等。用法为:
    buffer(变量) LABEL BYTE(类型)

    例如:
    Buffer1 LABEL WORD
    Buffer2 DB 20 DUP (?)
    通常,紧接着的下一条语句定义的类型与LABEL指定的类型不同。而实际上,Buffer1是Buffer2的别名,两者指向内存中的同一个存储地址。换言之,同一组数据定义了两种不同的类型,在接受不同数据类型的访问时,可以指定相应的标号。如接受一个字类型数据访问时,使用Buffer1;接受字节类型数据访问时,使用Buffer2。否则因为数据类型不匹配,编译器编译时将出现异常。

    说到LABEL,也不得不提到另一个与之功能相近的伪指令THIS。THIS通常也与它的下一条变量定义语句相关,因为在数据类型过多的情况下接受不同数据类型访问时,使用PTR属性限定符显得十分繁琐,比如起初定义了变量:
    Buffer1 EQU THIS WORD
    Buffer2 DB 20 DUP (0)
    假设有如下语句:
    mov AX, Buffer1
    mov AX, Buffer2
    其中,在作字类型访问时,mov AX, Buffer1相当于mov AX, WORD PTR Buffer2,这样省去了繁琐的PTR操作符。

    以上两条语句在内存中的安排:
    |...... ......01h ...... ......| 02h | | | |...... ...... ...... ......|
    |
    (Buffer1、Buffer2首地址)

    Buffer1指向的数据为0201h
    Buffer2指向的数据为01h

  • 相关阅读:
    MySQL学习笔记7——约束
    MySQL学习笔记8——多表查询
    剑指Offer-4.重建二叉树(C++/Java)
    MySQL学习笔记6——备份与恢复
    MySQL学习笔记5——编码
    剑指Offer-3.从尾到头打印链表(C++/Java)
    codeforce Gym 100500I Hall of Fame (水)
    codeforce Gym 100500F Door Lock (二分)
    code Gym 100500D T-shirts(暴力)
    codeforce Gym 100500C ICPC Giveaways(水)
  • 原文地址:https://www.cnblogs.com/wushangzhizun/p/7875617.html
Copyright © 2011-2022 走看看