• 80X86学习笔记变量与标号


    变量表示存储单元中存放的数值,标号表示存储单元中存放的指令代码。

    (1)数据定义语句

    通过数据定义语句可为数据项分配存储单元,并根据需要设置其初值,还可用符号代表数据项,此时符号与分配的存储单元相联系。

    1.数据定义语句

    数据定义语句最常用的是伪指令语句。

    格式:

    [变量名]数据定义符 表达式[,表达式,….,表达式];注释

    例:

    VARB DB 3

    VARW DW –1234

    BUFF DB 100, 3+4, 5*6

    (1)定义字节数据项

    定义字节数据项的数据定义符是DB

    例:

    COUNT DB 100

                   DB 0DH, 0AH, ‘$’

    TABLE    DB 0, 1, 4, 9, 16

    (2)定义字数据项

    符号为DW

    例:

    FLAG DW 2FCDH, 100, –1

    VECT DW 0

    DW 100H

    (3)定义双字数据项

    符号为DD

    例:

    VECTOR DD 4

    FARPTR DD 12345678H, 0

    (4)定义没有初值的数据项

    ?不预置对应变量的初值,仅仅是给变量分配存储单元。

    例:

    INBUFF DB 5, ?,  ?, 8, ?

    VARW DW ?

    OLDV DD ?

    (5)定义字符串

    DB也可以用于定义字符串,字符串要用引号括起来,单引号和双引号皆可,只要配对。

    例:

    MESS1 DB ‘HELLO!’

    上述语句与如下语句起相同作用:

    MESS1 DB ‘H’,’E’,’L’,’L’,’O’

    MESS DB ‘AB’

    MESS2 DW ‘AB’;写反注意!A高位

    (6)定义其他类型数据项

    定义8字节:DQ

    定义10字节:DT

    例:

    DT 0

    DQ ?

    2.重复操作符DUP

    有时需要定义数组,还需要定义数据缓冲区,为此在数据定义语句中使用的重复操作符DUP

    格式:

    count DUP (表达式)

    例:

    BUFFER1 DB 5, 0, 5 DUP (?)

    BUFFER2 DB 100 DUP (0, 2 DUP(1,2), 0, 3)

    BUFFER3 DB 256 DUP (‘ABCDE’)

    DATA DW 1, 5 DUP (1, 2, 4 DUP (0))

    (2)变量和标号

    1.变量和标号属性

    变量和和标号均表示存储器操作数,都具有如下三种属性:

    (1)段值,变量和标号对应存储单元所在段得段值。

    (2)偏移,   变量和标号对应存储单元的起始地址的段内偏移。

    (3)类型,变量类型主要是字节,字,双字,标号类型主要

    是NEAR FAR 近表示段内标号,远表示段间标号。

    2.析值操作符

    也称为数值回送操作符,原因是这些操作符把一些特征或存储地址的一部分作为数值回送。

    五个析值操作符的简单使用格式如下:

    SEG 变量名或标号

    OFFSET 变量名或标号

    TYPE 变量名或标号

    LEHGTH 变量名

    SIZE 变量名

    例:VARW DW 1234H, 5678H

            VARB  DB  3,4

    设VARW从100H开始:

    (1)操作符SEG能返回变量所在的段值

    MOV AX, SEG VARW

    MOV DS, AX

    (2)操作符OFFSET返回变量或者标号的偏移

    MOV BX, OFFSET VARW

    把VARW偏移(100H)送BX

    MOV DI, OFFSET VARW+2

    MOV SI, OFFSET VARB

    (3)操作符TYPE返回变量或标号类型,类型用数值表示,常见类型和对应数值规定如下:

    字节:1   字:2  双字:4  NEAR:-1   FAR:-2

    可见变量类型值是对应该类型变量项所占用的字节数,而标号的类型值却没有实际的物理意义。

    对于ADD SI, TYPE VARW 汇编将程序形成为:ADD SI, 2

    (4)LENGTH返回利用DUP定义的数组中元素个数

    如果变量定义语句中没有使用DUP, 则返回1.

    如果嵌套DUP,则返回最外层重复数。

    MOV CX, LENGTH VARW; 1送CX

    MOV CX, LENGTH VARB;  1送cx

    (5)SIZE返回利用DUP定义的数组占用的字符数,可按下式计算:

    SIZE 变量= (LENGTH 变量) * (TYPE 变量)

    MOV CX, SIZE VARW; 2->CX

    MOV CX, SIZE VARB; 1->CX

    3.属性操作符

    操作符PTR

    汇编程序在汇编指令”MOV [SI], 1”时,将发出警告提示信息或出错提示信息。

    MOV WORD PTR [SI], 1;   指明字类型

    MOV BYTE PTR [SI], 1

    PTR是最常用的合成操作符,用在地址表示式前,用于指定火临时改变变量和标号类型。

    格式:

    类型 PTR 地址表达式

    类型可以是BYTE WORD DWORD NEAR FAR

    PTR并不分配存储但愿,只是临时性的强制指定变量或标号的类型。

    例:

    JMP FAR PTR OK

    JMP DWORD PTR OLDVECT

    例:假设程序中的数据定义如下:

    LNAME DB 30 DUP (?)

    CODE_LIST DB 1, 7, 8, 3, 2

    用一条MOV指令将LNAME的偏移地址放入AX,用一条指令将CODE_LIST头两个字节的内容放入SI。

    MOV AX, OFFSET LNAME

    MOVE SI, WORD PTR CODE_LIST

  • 相关阅读:
    安装MSSQL2008出现的问题记录
    制作安装包遇到的问题
    算法设计方法动态规划
    基础果然要牢记(一次失败的电面)
    搜狗垂搜笔试
    几种堆的时间复杂度分析
    正则表达式转NFA
    组合数学(1)
    算法设计方法贪心算法
    最短路径问题
  • 原文地址:https://www.cnblogs.com/seebro/p/2432104.html
Copyright © 2020-2023  润新知