匯編代碼轉(zhuǎn)機(jī)器碼工具,AsmToByte是一款匯編代碼轉(zhuǎn)機(jī)器碼的小工具,支持地址jmp和call,支持宏匯編,省去了大家手動(dòng)轉(zhuǎn)換的操作,有需求的朋友們可以下載體驗(yàn)。
使用方法:
如下圖所示,上方窗口輸入?yún)R編代碼,點(diǎn)擊轉(zhuǎn)換按鈕后,下方機(jī)會(huì)轉(zhuǎn)換為機(jī)器碼,有三種模式。
1.一個(gè)源程序從寫出到執(zhí)行的過程
編寫匯編源程序——對(duì)源程序進(jìn)行編譯連接——執(zhí)行可執(zhí)行文件中的程序
2.源程序
在匯編語言源程序中,包含兩種指令,一種是匯編指令,一種是偽指令。匯編指令是有對(duì)應(yīng)的機(jī)器碼的指令,可以被編譯為機(jī)器指令,最終為CPU所執(zhí)行。而偽指令沒有對(duì)應(yīng)的機(jī)器指令,最終不被CPU所執(zhí)行。而是由編譯器來執(zhí)行,根據(jù)偽指令來進(jìn)行相關(guān)的編譯工作。
segment和ends是一對(duì)成對(duì)使用的偽指令。這事在寫可被編譯器編譯的匯編程序時(shí),必須要用到的一對(duì)偽指令。segment和ends的功能是定義一個(gè)短,segment說明一個(gè)段開始,ends說明一個(gè)段的結(jié)束。一個(gè)段必須有一個(gè)名稱來標(biāo)識(shí),使用格式為:
段名 segment
....
....
....
段名 ends
一個(gè)匯編程序是由多個(gè)段組成的,這些段被用來存放代碼、數(shù)據(jù)或當(dāng)做?臻g來使用。一個(gè)源程序中所有將被計(jì)算機(jī)所處理的信息:指令、數(shù)據(jù)、棧,被劃分到了不同的段中。一個(gè)有意義的匯編程序中至少要有一個(gè)段,這個(gè)段用來存放代碼。
end是一個(gè)匯編程序的結(jié)束標(biāo)記,匯編器在編譯匯編程序的過程中,如果碰到了偽指令end,就借宿對(duì)源程序的編譯。
assume這條偽指令的含義為“假設(shè)”。用來假設(shè)某一段寄存器和程序中的某一個(gè)用segment... ends第一的相關(guān)聯(lián)。
源程序中的“程序”是指源程序中最終由計(jì)算器執(zhí)行、處理的指令或數(shù)據(jù)。
匯編程序中,出了匯編指令和偽指令外,還有一些標(biāo)識(shí),比如“codesg”(見書中第四章)。一個(gè)標(biāo)識(shí)只帶了一個(gè)地址。比如codesg在segment的前面,作為一個(gè)段的名稱,這個(gè)段的名稱最終將被編譯、鏈接程序處理為一個(gè)段的段地址。
我們知道,一個(gè)程序結(jié)束后,將CPU的控制權(quán)交還給使它得以運(yùn)行的程序,我們稱這個(gè)過程為程序返回。
mov ax,4c00H
int 21H
這兩條指令所實(shí)現(xiàn)的功能就是程序返回。
在匯編語言編譯的時(shí)候,語法錯(cuò)誤容易發(fā)現(xiàn),也容易解決。而邏輯錯(cuò)誤通常不容易被發(fā)現(xiàn)。
匯編程序從寫出到執(zhí)行的過程
編程(Edit)——1.asm——編譯(編譯)——1.obj—— 連接(link)——1.exe——加載(command)——內(nèi)存中的程序——運(yùn)行(CPU)
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版