关于this和label的区别

首先来看这个代码

assume cs:code

 

code segment
      char='a'                                        
      table label byte             这里定义了字节型数组table,它的段地址和偏移就是下一个紧接着的存储单元。由这里看出,其实

 

                                           这就和指令 table db 0的含义是一样,但在重复伪指令中是不可能重复执行这样26个这指令,是会出错的。
                                           因为定义了26个table            
     

 rept 26        
      db char
      char=char+1
       endm
    start:  mov al,table+25
     
     
         

 ok: mov ax,4c00h
     int 21h


code ends
end start

 

关于this,这被定义为一个操作符。

比如 mov ax,this byte 这样的指令是可以被编译的

因为this byte将返回一个字节型存储器地址,在某种意义上和lable一样,可以随意指定一个存储器地址

但我们  可以访问label指定的变量地址,要想访问this byte指定的地址,还得加上equ指令,如 table equ this byte

把this指定的地址给予table.

由这里看出,label定义了可以访问的变量,而this只是临时指定。也就是和ptr操作符有相似之处。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值