組合語言,資料段中,標號前面加不加offset有什麼區別?
阿新 • • 發佈:2018-11-20
data segment
string db 40h dup(0)
string_1 db 'Input characters:',0dh,'$'
data ends
那麼,
mov bx,string
和
mov bx offset string
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
- ;操作符offset在組合語言中是由編譯器處理的符號,它的功能是
- ;取得標號的偏移地址
- assume cs:codesg
- codesg segment
- start:mov ax,offset start ;相當於mov ax,0
- s:mov ax,offset s ;相當於mov ax,3
- codesg ends
- end start