1. 程式人生 > >組合語言,資料段中,標號前面加不加offset有什麼區別?

組合語言,資料段中,標號前面加不加offset有什麼區別?

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