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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

window10下搭建汇编环境(软件+资料)

發(fā)布時間:2024/9/3 windows 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 window10下搭建汇编环境(软件+资料) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

window10下搭建匯編環(huán)境


0x00 軟件和資料

軟件包含:

  • dosbox
  • debug
  • masm
  • link
  • exe2bin(這個暫時可以忽略)

資料包含:

  • 王爽老師的《匯編語言》第二版
  • 《匯編語言》第二版 中的習(xí)題答案
  • 匯編語言編程藝術(shù)(清晰版)

下載地址:

鏈接:https://pan.baidu.com/s/17QfCsbvYNwLnUCHIzsluDQ
提取碼:i27u

0x01 環(huán)境搭建

把軟件放在同一個文件夾下,
我的放在D/Debug

  • 安裝dosbox
  • 選擇安裝目錄(最好是自己選擇一個目錄,方便后面查找

    我在D盤創(chuàng)建了一個dosbox文件夾,把它安裝在D盤的dosbox下,選擇好安裝目錄后,點(diǎn)擊安裝即可。

    2. 修改dosbox配置文件

    安裝好dosbox后,
    我們相當(dāng)于有了一個可以運(yùn)行debug,masm等(我們寫的匯編程序也是用這個終端來運(yùn)行)程序的終端程序(cmd,windows10自帶的cmd是運(yùn)行不了debug,masm。。程序的)。

    現(xiàn)在有了可以運(yùn)行這些程序的cmd,
    現(xiàn)在去嘗試運(yùn)行一下debug,
    我們要先轉(zhuǎn)到debug程序所在的目錄下,
    (我的debug程序放在了D/Debug)
    在dosbox中輸入:

    mount D D:/Debug

    (mount命令是掛載硬盤或鏡像的命令,這條指令我的的理解是:把D/Debug文件夾里的東西在D盤上創(chuàng)建了一個鏡像)

    回車之后再輸入:D:
    然后回車,就轉(zhuǎn)到了所在目錄

    再輸入debug即可運(yùn)行debug程序(運(yùn)行其他程序同理,因?yàn)橹拔覀兙桶阉鼈兎旁诹送粋€目錄下):

    debug常用命令(不區(qū)分大小寫)有:

    r: 查看,修改 cpu寄存器中的內(nèi)容;
    d:查看內(nèi)存中的內(nèi)容
    e:改寫內(nèi)存中的內(nèi)容
    u:將機(jī)器指令翻譯成匯編指令
    t:執(zhí)行下一條匯編指令
    a:以匯編的格式在內(nèi)存中寫入一條機(jī)器指令(寫匯編指令)


    其他指令請自行嘗試,大膽嘗試!(這里并不會損害我們自己的電腦)

    這里有一個問題:每次我們打開dosbox,都需要寫命令轉(zhuǎn)到需要運(yùn)行的程序的文件夾然后才能運(yùn)行程序,很不方便。

    我想要的是直接打開dosbox,直接輸入程序名即可運(yùn)行

    所以我們就需要修改一下dosbox的配置,
    在dosbox安裝目錄中,找到如下圖選中的這個文件

    用記事本打開這個文件(雙擊會默認(rèn)用記事本打開),
    在文件結(jié)尾寫入并保存

    MOUNT D D:\Debug D:


    現(xiàn)在打開dosbox,直接輸入程序名就可以運(yùn)行程序了。

    3. 其他
    debug:調(diào)試程序(數(shù)據(jù)默認(rèn)就是十六進(jìn)制,不需要加h)

    masm:編譯程序

    link:鏈接程序

    dosbox:終端運(yùn)行程序

    對于debug和masm,link這三個程序的切換,
    在運(yùn)行debug的時候,輸入quit或q可退出運(yùn)行debug,
    從而可以輸入其他程序名來運(yùn)行其他程序.
    但是對于masm和link要退出,目前我不知道有什么退出命令,
    我的做法是,隨便輸入一個字母,按幾下下回車即可。(或者關(guān)閉重新打開dosbox,再輸入其他程序名)

    0x03 寫匯編程序?qū)嵗?/h3>

    1. 小型匯編程序:

    可以用debug寫。
    (但是一般還是用記事本或Notepad++等編輯軟件寫好,然后在dosbox下編譯鏈接運(yùn)行。debug一般都是用來調(diào)試的。)

    下面用debug寫一個簡單的程序:


    輸入u可以查看匯編指令

    輸入t 即可執(zhí)行一條匯編指令,然后可以觀察寄存器的變化



    執(zhí)行完可以看到AX = 6

    2. 比較大型的匯編程序:

    用記事本或Notepad++寫好,然后在dosbox下編譯鏈接運(yùn)行.
    比如寫一個:計(jì)算2^8的程序:
    在debug,masm,link…所在目錄下(這樣編譯運(yùn)行的時候就直接可以寫文件名,而不用寫具體路徑)新建文件2_8.asm,
    用記事本打開,寫入:

    assume cs:codecode segmentmov ax,2mov cx,8s: add ax,axloop smov ax,4c00hint 21hcode endsend

    保存。
    然后打開dosbox。
    編譯,輸入:

    masm 2_8.ASM

    (這里是標(biāo)準(zhǔn)的文件,.ASM可以不加文件類型后綴,如果是txt,則需要加上文件類型后綴.txt)
    如果要給編譯得到的文件重命名則在Object fileName后輸入文件名,
    否則直接回車,一路回車。

    編譯后會得到一個.OBJ文件:

    鏈接,輸入:

    link 2_8

    一路回車。。

    最終得到了一個可執(zhí)行文件:2_8.EXE

    直接在dosbox中輸入:
    2_8.EXE執(zhí)行,執(zhí)行完成,屏幕并不會顯示什么,因?yàn)椴]有寫輸出相關(guān)的指令(匯編輸出有點(diǎn)麻煩,要把16進(jìn)制結(jié)果進(jìn)行轉(zhuǎn)換,現(xiàn)在就是熟悉一下編程環(huán)境)。


    現(xiàn)在只能使用debug來追蹤程序指令的執(zhí)行。
    輸入:

    debug 2_8.EXE

    輸入r,可以查看當(dāng)前寄存器的情況,
    輸入u,可以看到我們的匯編指令已經(jīng)加載入了內(nèi)存中。
    然后就是t,單步執(zhí)行指令了。

    可以使用:g 偏移地址來一跳過我們不想追蹤的部分,如下圖,
    0006之前的已經(jīng)執(zhí)行完了,即0006以前的指令看上去“一步就執(zhí)行完了”.
    我們繼續(xù)輸入t,就可以追蹤循環(huán)部分。

    0x04

    …匯編輸出真TM麻煩(不過,為了 代碼了解底層實(shí)現(xiàn) 還是需要好好學(xué)。。)

    來一個簡單的“Hello world!”輸出吧:



    不解釋,多看書~

    總結(jié)

    以上是生活随笔為你收集整理的window10下搭建汇编环境(软件+资料)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。