汇编语言,数据段中,标号前面加不加offset有什么区别?

时间:2024-04-13 15:54:02
data segment
string db 40h dup(0)
string_1 db 'Input characters:',0dh,'$'
data ends

那么,
mov bx,string

mov bx offset string

有什么区别呢?


加了offset附给bx的是string的地址,不加是附的string的值

//*************************理解

content db 10h dup(0)

move ax offset content

content这个标号前加了offset相当于将content的偏移地址赋值给了ax,偏移地址是编译器算出来的,这样就类似

与把offset content变成了一个代表偏移地址的数值,相当于立即数寻址方式了。

这样汇编在执行指令时变成了 :move ax 数值     

操作符offset

[plain] view plain copy
  1. ;操作符offset在汇编语言中是由编译器处理的符号,它的功能是  
  2. ;取得标号的偏移地址  
  3. assume cs:codesg  
  4. codesg segment  
  5. start:mov ax,offset start  ;相当于mov ax,0  
  6.     s:mov ax,offset s      ;相当于mov ax,3  
  7. codesg ends  
  8. end start  

汇编语言,数据段中,标号前面加不加offset有什么区别?