ASM 板


LINE

看板 ASM  RSS
實作出 SD card 的 READ_SINGLE_BLOCK 的指令了 這個指令能從 SD card 讀出 512byte 終於能從 SD card 讀取資料了 :D 讀出 SD card 的 address 0 的內容 這個地方放的是鼎鼎大名的MBR (Master Boot Record), 主開機區塊 ---- 對硬碟來說, x86 電腦開機會從 Cylinder=0, Header=0, Sector=1的地方拷貝512byte 到記憶體位址 0000:7C00 的地方執行, C/H/S = (0, 0, 1) 的這個區塊就是 MBR 我們會說 "硬碟如果開機磁區壞了, 就整個沒救了" 在磁碟片的時代, 我們經常說 "第 0軌壞掉的磁片, 跟報銷沒兩樣" MBR 的角色是如此的重要, 值得花點時間研究一下 !! ---- 下面是我從 SD 卡讀出的 MBR 內容, 看不懂對吧? 看得懂才怪勒 XD 這堆是給 CPU吃的機械碼, 這一小段程式正是 bootloader 會去看 partiton table 的內容, 並且跳躍到不同 partition 的位置, 載入作業系統 下面的網頁有這段機械碼的反組譯, 有興趣的人可看看 http://www.geocities.com/thestarman3/asm/mbr/STDMBR.htm 很有趣的地方是標藍色的區塊, 原來拿一顆沒裝OS的硬碟開機 電腦會顯示 Missing operating system 是由 MBR 裡的程式跑出來的 很好玩吧 :) Offset 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 00000000 FA 33 C0 8E D0 BC 00 7C 8B F4 50 07 50 1F FB FC ??邾.|悬P.P.帒 00000016 BF 00 06 B9 00 01 F2 A5 EA 1D 06 00 00 BE BE 07 ?.?.禰?...噢. 00000032 B3 04 80 3C 80 74 0E 80 3C 00 75 1C 83 C6 10 FE ?耼聴.耼.u.纱.? 00000048 CB 75 EF CD 18 8B 14 8B 4C 02 8B EE 83 C6 10 FE 肙懰.?酱.麴纱.? 00000064 CB 74 1A 80 3C 00 74 F4 BE 8B 06 AC 3C 00 74 0B 肕.耼.t藶??.t. 00000080 56 BB 07 00 B4 0E CD 10 5E EB F0 EB FE BF 05 00 V?.??^鋺錌?. 00000096 BB 00 7C B8 01 02 57 CD 13 5F 73 0C 33 C0 CD 13 ?|?.W?_s.3櫛. 00000112 4F 75 ED BE A3 06 EB D3 BE C2 06 BF FE 7D 81 3D Ou篿?邆壇.錚}? 00000128 55 AA 75 C7 8B F5 EA 00 7C 00 00 49 6E 76 61 6C U沿?纋.|..Inval 00000144 69 64 20 70 61 72 74 69 74 69 6F 6E 20 74 61 62 id partition tab 00000160 6C 65 00 45 72 72 6F 72 20 6C 6F 61 64 69 6E 67 le.Error loading 00000176 20 6F 70 65 72 61 74 69 6E 67 20 73 79 73 74 65 operating syste 00000192 6D 00 4D 69 73 73 69 6E 67 20 6F 70 65 72 61 74 m.Missing operat 00000208 69 6E 67 20 73 79 73 74 65 6D 00 00 00 00 00 00 ing system...... 00000224 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000256 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000272 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000288 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000304 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000336 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000352 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000368 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000384 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000416 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000432 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 ................ 00000448 3B 00 06 2E EE DE F7 00 00 00 09 F3 3C 00 00 00 ;...鍪?...?... 00000464 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000496 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA ..............U MBR 的結尾一定是 0x55, 0xAA, 當我從 SD card 讀出MBR以後 這兩個 byte 讓我相信我讀出來的不是垃圾 上圖上綠色的部分, 就是所謂的 partition table entry, 一個 entry 16 bytes. 我這張 SD 卡只有一個 partition, 在 0x55, 0xAA 以前, 還塞得下 3個 partition 這就是為什麼, 一顆硬碟只能放 4個 primary partition. ---- 下表是我這張 Transcend 2G SD 的 Partition Table 訊息 Offset Description Size Value ----------------------------------------------------------------- 0x00 Bootable flag 1 0x00 0x01 First Partition Sector 3 0x003B03 0x04 File System Descriptor 1 0x06 0x05 Last Partition Sector 3 0xDEEE2E 0x08 # of sectors between MBR to partition 4 0x000000F7 0x0C # of sectors in the partition 4 0x003C3F09 一個 sector 等於 512byte, 這張卡一共有 0x3C3F09 = 3948297 sectors 容量為 3948297*512 = 2021528064 = 1927.879 MB, 約略等於 2G 然後他跟我說, 我可以到 Sector 0xF7 的位置, 那裡是這個 partition 的開頭 到這裡可以拿到 FAT table... 只要我能讀出內容, 我就能讀出檔案了 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.90.139
1F:推 YTsungL:嗯嗯, 推 01/21 00:01







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP