zoukankan      html  css  js  c++  java
  • 汇编学习笔记43

    第七单 宏指令语句

    1.掌握宏指令及其用法

    一、结构和记录

    一、结构

    结构是为了更有效地对数据进行组织和描述

    宏, 汇编语言除了提供简单数据变量的伪指令(如DB, DW, DD)外,还提供了用于说明复杂数据类型的伪指令。

    利用这些伪指令能够说明复杂的数据类型,从而定义复杂的数据变量。

    1. 结构类型的说明

    结构伪操作指令STRUC是MASM支持的一种伪操作,它可以把各种不同类型的数据放在同一个数据结构里,便于某些数据处理的需要。

    格式:

    结构名 STRUC

        数据定义语句序列(DB, DW, DD等)

    结构名 ENDS

    其中由DW, DB, DD等伪操作指令定义不同类型的数据,它们可以使用变量名来表示各个字段起始地址,所以变量名又称为字段名。

    在说明结构类型时,可以给予字段赋初值,也可以不赋初值。如果字段是一个字符串,那么要确保其初值有足够的长度,以适应可能最长的字符串。

    如下语句说明了一个名为MESST的结构类型

    MESST STRUC

      ID DW ?

      STORE DB 0

      PNAME DB 'ABCDEFGH'

    MESST ENDS

    字段ID, STORE, PNAME分别有偏移值为0,2,3

    在说明结构时,结构名必须是唯一的,各字段名也应该是唯一的

    注意,在说明结构类型时,不进行任何存储分配,只有在定义结构变量时才进行存储分配

    2. 结构变量的定义

    结构变量的定义一般格式如下:

    [变量名] 结构名 <[字段值表]>

    例:

    STUDENT1 MESST <103, 88, 'WANG'>

    STUDENT2 MESST <104, 89>

    STUDENT3 MESST <>

    MESS 99DUP(<>)

    对宏汇编程序MASM而言,如果某个字段有多值,那么在定义结构变量时,就不能给该字段重赋初值。

    3.结构变量及存取字段的访问

    通过结构变量名可以直接存取结构变量。若要存取结构变量中的某一字段,则可采用如下形式:

    结构变量中.结构字段名

    结构字段名所代表的字段必须是对应结构所具有的字段,这种形式表示的变量地址偏移值是结构变量地址(起始地址)的偏移值与相应字段偏移值之各。

    结构变量的地址的偏移值先存入某个基址或变址寄存器,然后用[寄存器名]代替结构变量名。

    MOV BX, OFFSET YESTERDAY

    MOV AL, [BX].MONTH

    二、记录

    1.记录类型的说明

    在描述记录型数据或使用记录型变量之前,要说明记录类型

    格式如下:

    记录名 RECORD 字段[, 字段]

    每一字段的格式为:

    字段名: 宽度[=表达式]

    字段名是记录中字段的名字,宽度表示相应的字段所占的位数。宽度必须是常数,最大为16.

    一个记录可以有多个字段,字段之间以逗号分隔开,但在一般情况下各字段的宽度之和不超过16

    如:

    COLOR RECORD BLINK:1, BACK: 3, INTENSE: 1, FORE: 3

    这四个字段所占总宽度是8位,所以称为字节记录类型。

    在说明记录类型时,不实际分配存储单元。

    如果一个记录中所有说明字段的总宽度大于8,那么汇编程序会给对应记录类型变量分配两个字节,否则,就给对应记录变量分配一个字节。

  • 相关阅读:
    自然语言处理3.4——使用正则表达式检测词组搭配
    自然语言处理3.3——使用Unicode进行文字处理
    自然语言处理3.1——从网络和硬盘访问文本
    自然语言处理2.3——词典资源
    自然语言处理2.2——条件频率分布
    自然语言处理——NLTK中文语料库语料库
    自然语言处理2.1——NLTK文本语料库
    【转载】使用LFM(Latent factor model)隐语义模型进行Top-N推荐
    Ajax (jquery)实现智能提示搜索框(in Django)
    python操作mysql数据库
  • 原文地址:https://www.cnblogs.com/hailong/p/1939623.html
Copyright © 2011-2022 走看看