快捷搜索:

您的位置:澳门新葡4473网站 > 热门贴子 > 数据相关操作符和伪指令

数据相关操作符和伪指令

发布时间:2020-01-24 05:03编辑:热门贴子浏览(155)

    1.  OFFSET操作符、

    同三个前后相继中,标号或变量只好定义三次.

    OFFSET操作符重回数据标号的舞狮地址,偏移地址代表标号距数据段初叶的偏离,单

    标记有二种属性:段、偏移、类型(NEAR PTOdyssey,WO福睿斯D PT路虎极光,FA悍马H2 PRT,DWOLANDD PT哈弗卡塔尔国

    位是以字节计算的,拥戴方式下偏移总是35人长的,实方式下偏移唯有十几个人。

       

     

    风流倜傥。数值回送操作符:TYPE、LEGNTH、SIZE、OFFSET、SEG

    2.  ALIGN伪指令

    1. TYPE    expression_r(or label)

    ALIGN伪指令将变量的职务按字节、字和双字边界对齐,格式:

    后生可畏旦表明式是变量,则回送该变量以字节数表示的品种:DB为 1, DW为 2, DD为 4...

    ALIGN  边界值

    就算表明式是标号,则回送该标号类型的数值:NEALacrosse为 -1, FAEnclave为 -2.

    边界值能够是1,2或4。

    假定表明式是常量,则回送0.

     

    array  DW A110H,B02CH,C322H   

    3.  PTR操作符

    ADD    AX, TYPE  array  等价于 ADD    AX, 2

    PT昂科拉操作符重载操作数的暗许尺寸。PTKoleos必得和规范数据类型联合利用:BYTE、SBYTE、

    2. LENGTH    variable    对于变量使用DUP的意况,将回送分配给该变量的单元数; 对其余情形则回送1.

    WORD、SWORD、DWORD、SDWORD、FWORD、QWORD或TBYTE。

    fees  DW 100 DUP(?)          

    假如是将双字节变量的低十六个人送至AX贮存器,由于操作数大小不相称,编写翻译器将不

    MOV  CX, LEGNTH  fees  等价于MOV  CX, 100

    同意上边包车型地铁数额传送指令:

    3. SIZE    variable    回送分配给该变量的字节数

         Doubw  dword     999999999h

    MOV    CX, SIZE  fees 等价于 MOV CX, 200

         MOV  ax,Doubw

    4. OFFSET    variable (or lableState of Qatar        回送变量或标号的舞狮地址.

        可是足以那样子操作:MOV ax,word  PT翼虎  Doubw

    MOV    BX,OFFSET OPER_ONE 等价于 LEA BX,OPER_ONE 语句 ,将OPER_ONE的撼动地址送入BX

    内部存款和储蓄器中五个比较小的值送到超大的指标操作数中,如:

    5. SEG    variable(or lableState of Qatar       回送变量或标号的段地址.

    list  byte  12h,34h

    若OPER_ONE是DATA_SEG数据段中的三个变量,上面语句得到DATA_SEG段首地址

    mov  ax, word  PTR  list           ;ax=3412

    MOV    DS , SEG OPER_新葡亰平台娱乐,ONE  等价于

     

    MOV    AX , DATA_SEG      MOV    DS , AX

    4.  TYPE操作符

    二。属性操作符:PT福睿斯、THIS、HIGH、LOW、HIGHWOSportageD、LOWWO哈弗D

    操作符重回按字节总计的变量的单个成分的轻重,在那之中字节的TYPE值等于1,字的

    1. type    PTEvoque    expression        用来给已分配的仓库储存地方付与另生机勃勃种属性,使该地点具备另黄金时代体系型.

    TYPE值等于2,双字的TYPE值等于4,quadword的TYPE值等于8。

    意味着按expression表明式寻址,按内定的类型type对待.

     

    即PT凯雷德是给前边的expression操作数付与新的数据类型或地址类型.

    5.  LENGTHOF操作符

    MOV    BYTE PTR[BX] , 5        //存入字节(Byte卡塔尔国单元

    LENGTHOF操作符总括数组夷则素的多寡,数组是由现身同生龙活虎行左边的标记定义的。

    MOV    WORD PTR[BX] , 5       //存入字(Word)单元

     

    2. THIS    type    内定与当下地方流速计相等的叁个地方单元的类型.type是NEA本田CR-V、FA奥迪Q5、PROC,也得以是BYPE、WOCRUISERD...

    6.  SIZEOF操作符

    first_type    EQU    THIS  BYTE

    SIZEOF操作符的再次来到值等于LENGTHOF和TYPE再次回到值的乘积。

    word_table    DW    100 DUP(?)    此时,first_type的偏移地址与word_table完全相似,但它是字节类型

     

    3. HIGH (LOW卡塔尔    express   字节分离操作符, HIGH取高位字节, LOW取低位字节.

    7.  LABLE伪指令

    HIGHWOXC60D (LOWWO智跑D卡塔尔国    express    字抽离操作符, HIGHWOOdysseyD取高位字, LOWWO库罗德D取低位字.

    LABLE伪指令允许插入一个标明并付与其尺寸属性而不需求分配任何实际的仓库储存空间。LABLE伪指令能够选择BYTE、WOCR-VD、DWOXC60D、FWO奥迪Q3D、QWO瑞虎D或TBYTE等

    CONST    EQU    0ABCDH  ,      MOV    AH, HIGH CONST 等价于

    随便标准的尺寸属性。

    MOV    AH,0ABH

        LABLE伪指令的生机勃勃种不足为道用法是位数据段内已存在的变量提供贰个小名。

    三。数据定义语句:variable_name    Mnemonic     oper1, oper2.....

    常用的助记符Mnemonic有:

     DB 定义字节,表示其后各种操作数占领二个字节(1Byte卡塔尔单元

     DW 定义字,表示表示其后种种操作数占领叁个字(2ByteState of Qatar单元

     DD 定义双字,表示表示其后各样操作数据有七个字(4ByteState of Qatar单元

     DQ 定义八个字,表示表示其后各样操作数占领多少个字(8Byte卡塔尔(قطر‎单元

     DT 定义十三个字节,表示表示其后各样操作数据有十二个字(10Byte卡塔尔国单元,产生压缩BCD码.

    data_byte     DB      10 , 4 , 10H , ?        //共定义了4个字节,在那之中 '?' 是保留单元

    data_word    DW    100,?,100H            //共定义了3个字(6ByteState of Qatar

    str_aa            DB     'ABCDEFG'            //定义和初阶化多于三个能伸能缩字符的字符串时,只可以选拔DB伪指令.

    四。符号定义语句(即常量卡塔尔

    name    EQU    expression                //定义

    PURGE    name1,name2...               //解除

    CONSTANT     EQU    256       //表示CONSTANT的值为256

    五。段定义语句:SEGMENT ... ENDS、ASSUME、OTiggoG

    segmnet_name    SEGMENT    [align_type] [combine_type] [use_type] [class]

    ...

    segment_name    ENDS    //SEGMENT和ENDS成对使用,把汇编语句分成段

    对此数据段、附加段和仓库段,平时是存款和储蓄单元定义、起始化数据、分配单元等伪指令.

    对此代码段,首如果指令连串和伪指令.

    可筛选表达:详细音讯 

    恒久类型align_type:表明段的最初地址就有怎有怎么着的边界值.

            PARA    缺省项.  钦点段的发轫地址须从小段边界先导,即以16进表示地址时最低位必得为0.

            BYTE     可从另内地方最早.

            WO奔驰G级D    必需从字的疆界伊始,即段地址必得是偶数..

            DWO酷威D  必需从双字的界线在此以前,即以16进制表示地址时最低位必得是4的倍数.

            PAGE     必需从页的边界开头,即以16时制表示地址时最低两位必得为00.(能被256整除卡塔尔

    构产品种combine_type:表明程序连接的段合併方法.

            PENVISIONIVATE    缺省项.为私有段,连接时不与别的模块中的同名分段合併.

            PUBLIC       将与相通名字的别样分段合并.

            COMMON  将与相同名字的别的分段合并且会发生覆盖.

            MEMORY   同PUBLIC.

            STACK        钦命该段在运营时为货仓的后生可畏都部队分.

    接纳项目use_type:只适用386会同后继机型,用来验证是USE16(14个人寻址卡塔尔(قطر‎照旧USE32(三拾几人寻址卡塔尔(قطر‎.

    连串class:用引号中提交连接时组合段组的类型名.

    ASSUME使汇编制程序序在汇编指令时,能理解各段贮存器的值.

    ASSUEM    segment_registername : segment_name , segment_registername : segment_name...

    其余对存存款和储蓄器或货仓的拜谒的通令,都将运用CS、DS、ES和SS段贮存器的值工夫产生真正的情理地址.

    ASSUME只钦点某些段分配给有个别存放器,并不可能把段地址装入段寄放器.

    据此,DS、ES、SS段寄放器的值必需通过MOV指令来予以,CS段贮存器在程序开头化时自动实现.

    为了给存款和储蓄单元设置起首偏移地址,能够用OKoleosG伪指令.

    O中华VG    表明式    //表明式的值范围必得在0 ~ +65535

    伪指令OTiguanG可安装于代码段、数据段的其他地点.

    mydata    SEGMENT            //段定义,段名为mydata

    OMuranoG     100H                     //置mydata段的早先偏移地址为100H

     X    DB    12H , ? , 30H     //数据定义,X 的撼动地址为0100H, X+1=0101H, X+2=0102H

        Z    DD    9C56H               //Z的撼动地址为0103H

    mydata    ENDS

    mycode    SEGMENT

        ASSUME    CS : mycode ,  DS : mydata    //用ASSUME伪指令分配段存放器

        start:     MOV AX , mydata  //等价于MOV AX , SEG X语句, 将mydata段的原初地址装入到DS

                      MOV DS , AX

        ...

    mycode    ENDS

        END     start      //源程序结束指令END, 此中start为lable

    六。进度定义语句:PROC ... ENDP

    procedure_name    PROC    [ NEAR | FAR ]  //要表明是NEA安德拉进度或FAPAJERO进度.

    ...

    RET        //RET 再次来到指令必须与[ NEAR  |  FAR ] 对应

    procedure_name    ENDP        //PROC 和ENDP必得著名字,两个成对现身.

    七。宏指令语句:MACRO...ENDM

    macro_name    MACRO    [ parameter_list ]    //形参 parameter_list 可选,有三个参数时,中间用逗号隔离.

    ...

    ENDM

    MULTIPLY    MACRO    OPR1 , OPR2 , RESULT    //宏定义,宏名MULTIPLY,形参为OPR1,OPR2和RESULT

            PUSH    DX

            PUSH    AX

            MOV    AX , OPR1

            IMUL    OPR2

            MOV    RESULT , AX

            POP    AX

            POP    DX

    ENDM

    MULTIPLY    240 , BX , SAVE    //宏调用,实参为240 , BX , SAVE

    宏指令与子程序的区分:

    子程序产生目标代码少,占用内部存款和储蓄器少,但实行时间长,速度慢.

    宏指令发生目的代码长,占用内部存款和储蓄器多,但实行时间短,速度快.

    八。程序开端和了结语句:NAME | TITLE、END

    模块名:NAME    moudle_name

    标题名:TITLE    text

    源程序截至指令:END    [ lable ]

       

    来自 <>

    本文由澳门新葡4473网站发布于热门贴子,转载请注明出处:数据相关操作符和伪指令

    关键词: