{"id":246,"date":"2024-07-27T10:39:29","date_gmt":"2024-07-27T02:39:29","guid":{"rendered":"https:\/\/blog.jishuge.cn\/?p=246"},"modified":"2024-07-27T10:39:30","modified_gmt":"2024-07-27T02:39:30","slug":"%e5%85%b3%e4%ba%8e%e7%94%a8%e6%b1%87%e7%bc%96%e8%af%ad%e8%a8%80%e4%bb%8e%e7%a1%ac%e7%9b%98%e8%af%bb%e5%8f%96%e6%95%b0%e6%8d%ae","status":"publish","type":"post","link":"https:\/\/blog.jishuge.cn\/?p=246","title":{"rendered":"\u5173\u4e8e\u7528\u6c47\u7f16\u8bed\u8a00\u4ece\u786c\u76d8\u8bfb\u53d6\u6570\u636e"},"content":{"rendered":"\n<p>MBR\u4e3b\u6247\u533a\u4ee3\u7801\uff0c\u4ee3\u7801\u4ece1\u53f7\u6247\u533a\uff0c\u7b2c2\u5757\u6247\u533a\u8bfb\u53d6\u6570\u636e<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"avrasm\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[org 0x7c00]\n[bits 16]\n\nstart:\n    ; \u8bbe\u7f6e\u6bb5\u5bc4\u5b58\u5668\n    xor ax, ax\n    mov ds, ax\n    mov es, ax\n    mov ss, ax\n    mov sp, 0x7c00\n\n    ; \u8bbe\u7f6e\u8bfb\u53d6\u53c2\u6570\n    mov ah, 0x02        ; BIOS\u8bfb\u53d6\u6247\u533a\u529f\u80fd\n    mov al, 1           ; \u8bfb\u53d61\u4e2a\u6247\u533a\n    mov ch, 0           ; \u67f1\u9762\u53f7 = 0\n    mov cl, 2           ; \u6247\u533a\u53f7 = 2\n    mov dh, 0           ; \u78c1\u5934\u53f7 = 0\n    mov dl, 0x80        ; \u9a71\u52a8\u5668\u53f7 = 0x80 (\u7b2c\u4e00\u4e2a\u786c\u76d8)\n    mov bx, buffer      ; ES:BX = \u7f13\u51b2\u533a\u5730\u5740\n\n    ; \u8bfb\u53d6\u6247\u533a\n    int 0x13\n    jc error            ; \u5982\u679cCF=1,\u8df3\u8f6c\u5230\u9519\u8bef\u5904\u7406\n\n    ; \u663e\u793a\u6210\u529f\u6d88\u606f\n    mov si, success_msg\n    call print_string\n\n    ; \u663e\u793a\u8bfb\u53d6\u7684\u5b57\u7b26\u4e32\n    mov si, buffer\n    call print_string\n\n    jmp $               ; \u65e0\u9650\u5faa\u73af\n\nerror:\n    push ax             ; \u4fdd\u5b58\u9519\u8bef\u4ee3\u7801\n    mov si, error_msg\n    call print_string\n    \n    ; \u663e\u793a\u5177\u4f53\u9519\u8bef\u539f\u56e0\n    pop ax              ; \u6062\u590d\u9519\u8bef\u4ee3\u7801\n    call print_error\n\n    jmp $               ; \u65e0\u9650\u5faa\u73af\n\nprint_string:\n    push ax\n    mov ah, 0x0e        ; BIOS \u7535\u4f20\u6253\u5b57\u673a\u8f93\u51fa\n.loop:\n    lodsb               ; \u52a0\u8f7dSI\u6307\u5411\u7684\u5b57\u8282\u5230AL,\u5e76\u9012\u589eSI\n    test al, al         ; \u68c0\u67e5\u662f\u5426\u5230\u5b57\u7b26\u4e32\u7ed3\u5c3e(0x00)\n    jz .done            ; \u5982\u679c\u662f0,\u7ed3\u675f\u6253\u5370\n    int 0x10            ; \u5426\u5219,\u6253\u5370\u5b57\u7b26\n    jmp .loop\n.done:\n    pop ax\n    ret\n\nprint_error:\n    push si\n    mov si, unknown_error\n    cmp ah, 0x01\n    je .print\n    mov si, invalid_command\n    cmp ah, 0x04\n    je .print\n    mov si, reset_failed\n    cmp ah, 0x05\n    je .print\n    mov si, disk_changed\n    cmp ah, 0x06\n    je .print\n    mov si, dma_boundary\n    cmp ah, 0x09\n    je .print\n    mov si, bad_sector\n    cmp ah, 0x0A\n    je .print\n    mov si, bad_track\n    cmp ah, 0x0B\n    je .print\n    mov si, media_type\n    cmp ah, 0x0C\n    je .print\n    mov si, sector_not_found\n    cmp ah, 0x10\n    je .print\n    mov si, general_failure\n    cmp ah, 0x20\n    je .print\n    mov si, unknown_error\n.print:\n    call print_string\n    pop si\n    ret\n\nsuccess_msg db 'Read successful. Content: ', 0\nerror_msg db 'Error reading disk. Reason: ', 0\nunknown_error db 'Unknown error', 0\ninvalid_command db 'Invalid command', 0\nreset_failed db 'Disk reset failed', 0\ndisk_changed db 'Disk changed', 0\ndma_boundary db 'DMA boundary error', 0\nbad_sector db 'Bad sector', 0\nbad_track db 'Bad track', 0\nmedia_type db 'Unsupported media type', 0\nsector_not_found db 'Sector not found', 0\ngeneral_failure db 'General failure', 0\n\nbuffer:\n\ntimes 510-($-$$) db 0\ndw 0xaa55<\/pre>\n\n\n\n<p>\u7b2c2\u5757\u6247\u533a\u7b2c1\u53f7\u6247\u533a\u7684\u6570\u636e\uff0c\u5269\u4e0b\u7684\u5168\u90e8\u90fd\u8bbe\u7f6e\u4e3a0x00<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Data db 'Hi, I come from hard disk drive!'\ntimes 510-($-$$) db 0x00<\/pre>\n\n\n\n<p>\u4f7f\u7528Nasm\u7f16\u8bd1\u5668\u7f16\u8bd1\u4ee3\u7801\uff0c\u5206\u522b\u5199\u5165\u7b2c1\u5757\u548c\u7b2c\u4e8c\u5757\u6247\u533a\uff0c\u6570\u636e\u5982\u4e0b\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"609\" height=\"1024\" src=\"https:\/\/cdn.piwiki.cn\/jishuge\/2024\/07\/20240727023214719-609x1024.png\" alt=\"\" class=\"wp-image-247\" srcset=\"https:\/\/cdn.piwiki.cn\/jishuge\/2024\/07\/20240727023214719-609x1024.png 609w, https:\/\/cdn.piwiki.cn\/jishuge\/2024\/07\/20240727023214719-178x300.png 178w, https:\/\/cdn.piwiki.cn\/jishuge\/2024\/07\/20240727023214719.png 659w\" sizes=\"auto, (max-width: 609px) 100vw, 609px\" \/><\/figure>\n\n\n\n<p>\u901a\u8fc7VirtualBox\u6765\u8fd0\u884c<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"765\" height=\"506\" src=\"https:\/\/cdn.piwiki.cn\/jishuge\/2024\/07\/20240727023419329.png\" alt=\"\" class=\"wp-image-248\" srcset=\"https:\/\/cdn.piwiki.cn\/jishuge\/2024\/07\/20240727023419329.png 765w, https:\/\/cdn.piwiki.cn\/jishuge\/2024\/07\/20240727023419329-300x198.png 300w\" sizes=\"auto, (max-width: 765px) 100vw, 765px\" \/><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>MBR\u4e3b\u6247\u533a\u4ee3\u7801\uff0c\u4ee3\u7801\u4ece1\u53f7\u6247\u533a\uff0c\u7b2c2\u5757\u6247\u533a\u8bfb\u53d6\u6570\u636e \u7b2c2\u5757\u6247\u533a\u7b2c1\u53f7\u6247\u533a\u7684\u6570\u636e\uff0c\u5269\u4e0b\u7684\u5168\u90e8\u90fd\u8bbe\u7f6e\u4e3a0x00  &hellip; <a href=\"https:\/\/blog.jishuge.cn\/?p=246\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u5173\u4e8e\u7528\u6c47\u7f16\u8bed\u8a00\u4ece\u786c\u76d8\u8bfb\u53d6\u6570\u636e<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":250,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27],"tags":[],"class_list":["post-246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-27"],"_links":{"self":[{"href":"https:\/\/blog.jishuge.cn\/index.php?rest_route=\/wp\/v2\/posts\/246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.jishuge.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jishuge.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jishuge.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jishuge.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=246"}],"version-history":[{"count":1,"href":"https:\/\/blog.jishuge.cn\/index.php?rest_route=\/wp\/v2\/posts\/246\/revisions"}],"predecessor-version":[{"id":251,"href":"https:\/\/blog.jishuge.cn\/index.php?rest_route=\/wp\/v2\/posts\/246\/revisions\/251"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jishuge.cn\/index.php?rest_route=\/wp\/v2\/media\/250"}],"wp:attachment":[{"href":"https:\/\/blog.jishuge.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jishuge.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jishuge.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}