日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nasm汇编:段的申明、$$、$

發布時間:2024/4/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nasm汇编:段的申明、$$、$ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

段的申明:section Segment_Name align=0_? vstart=1_?
Segment_Name 表示段名
0_? 表示對齊的字節數
1_? 表示段內匯編地址的開始點
section.段名.start:獲取段處的段地址與偏移地址(段地址:高地址2字節,偏移地址:低地址2字節)
缺省:未定義時的默認值
$$:值為vstart,當vstart未定義時(vstart缺省),默認值為所屬段相對于程序開頭的位置
$:值為vstart + 所在行與所在段的相對位移

section data0 ;程序開頭地址:0x00000000,已對齊不需要align,缺省vstart值為它所屬段的起始地址(此處為0x00000000) db 0,0,0 ;地址0x00000000~0x00000002 db $$,$ ;地址0x00000003~0x00000004,$$=vstart=0x0,$=vstart+(所在行地址-所在段地址)=0x3 t0_: ;指向上一行結束緊接著的下一個字節地址(vstart+0x00000005) mov ax,t0_ ;地址0x00000005~0x00000006section data1 align=16 ;段開頭地址:0x00000010,align=16意味著段開頭地址與最近的能整除16的位置為起始地址,缺省vstart值為它所屬段的起始地址(此處為0x00000010) db 0xa,0,0 ;地址0x00000010~0x00000012 db $$,$ ;地址0x00000013~0x00000014,$$=vstart=0x10,$=vstart+(所在行地址-所在段地址)=0x13 t1_: ;指向上一行結束緊接著的下一個字節地址(vstart+0x0000005) mov ax,t1_ ;地址0x00000015~0x00000016section data2 align=16 vstart=0x33 ;段開頭地址:0x00000020,align=16意味著段開頭地址與最近的能整除16的位置為起始地址,vstart值為0x33 db 0xa,0xa,0 ;地址0x00000020~0x00000022 db $$,$ ;地址0x00000023~0x00000024,$$=vstart=0x33,$=vstart+(所在行地址-所在段地址)=0x36 t2_: ;指向上一行結束緊接著的下一個字節地址(vstart+0x00000005) mov ax,t2_ ;地址0x00000025~0x00000026section data3 align=16 vstart=0x55 ;段開頭地址:0x00000030,align=16意味著段開頭地址與最近的能整除16的位置為起始地址,vstart值為0x55 db 0xa,0xa,0xa ;地址0x00000030~0x00000032 db $$,$ ;地址0x00000033~0x00000034,$$=vstart=0x55,$=vstart+(所在行地址-所在段地址)=0x58 t3_: ;指向上一行結束緊接著的下一個字節地址(vstart+0x00000005) mov ax,t3_ ;地址0x00000035~0x00000036section exit align=16 ;段開頭地址:0x00000040,align=16意味著段開頭地址與最近的能整除16的位置為起始地址,缺省vstart值為它所屬段的起始地址(此處為0x00000040) db 0xa,0xa,0xa ;地址0x00000040~0x00000042 db $$,$ ;地址0x00000043~0x00000044,$$=vstart=0x40,$=vstart+(所在行地址-所在段地址)=0x43 t4_: ;指向上一行結束緊接著的下一個字節地址(vstart+0x00000005)

總結
1、觀察t0_,t1_,t2,t3,不難發現,vstart對其段內標號的作用
vstart未定義時,vstart缺省值為所在段起始地址,其內標號表示標號處相對于程序頭的偏移
vstart定義為0時,其內標號表示標號處相對于其段的偏移
vstart定義為x時,其內標號表示x+標號處相對于其段的偏移
意味著vstart規定段內匯編起始地址,造成標號所表示位置不一定是其所處位置

vstart的另一種理解 vstart未定義時,所屬段起始地址為真實段地址 vstart定義后,所屬段起始地址為vstart 而$$始終代表所屬段起始地址 于是有 vstart缺省時 vstart默認為段偏移 $$為所屬段起始地址為段真實起始地址 段內標號表示的也都是真實地址(vstart(真實段偏移)+標號相對于段的偏移) vstart定義時 所屬段起始地址變為vstart $$也就為vstart 段內標號表示的不一定都是真實地址(vstart(不一定為真實段偏移)+標號相對于段的偏移)

總結

以上是生活随笔為你收集整理的nasm汇编:段的申明、$$、$的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。