導航:首頁 > 編程語言 > 匯編程序入口為指令是什麼

匯編程序入口為指令是什麼

發布時間:2022-11-15 05:41:23

『壹』 vs反匯編函數入口處指令

這個很簡單ebp-0c0h是給出一段深度為0c0h堆棧,留給你的函數存變數。
因為第一條指令前還有一條指令mov ebp esp所以從ebp到esp是一個深度為0c0h的堆棧,可以想想下esp想當於地面
現在你朝地下挖了個深度為0c0h的洞,ebp現在就是洞底。
然後,rep stos是重復指令,重復次數是 30h 次,表示每次都向那個洞里放0cccccccch,
0ccccccch是4個位元組,放30次,剛好等於第一句指定的堆棧的深度(16進制 30h*4=0c0h,有不理解打開windows
計算器算下)
所以餘下三句的意思就是你把那個洞里全放成了0cccc cccch
為什麼要放0ccccccch?
0cccccccch是個機器指令,是個中斷指令。因為堆棧是存變數的,不可能被執行,所以一旦萬一發生錯誤使堆棧被執行,那也只能執行個中斷
被斷了下來。
《天書夜讀從匯編到windows內核編程》第一章有詳細說明,有什麼不理解你再去參考下吧

『貳』 匯編 radasm win32程序 怎麼指定程序入口地址

前些天,看到這個標題,直接過了,因為這個好像根本不是問題,結果過了幾天,看這個問題還沒有結果,於是好奇,進來看看。

RadASM只是一個開發環境,具體使用什麼語言,你要有那個語言的編譯和鏈接器,放在任何目錄都可以,然後在對應那個語言的xxxx.ini中指定編譯器和連接器的位置,如果是MASM宏匯編,那麼需要在MASM.INI中指定,例如:

[Enviroment]
1=path,c:masm32in;

[CharTab]
2=0251222522222232;20-2F
3=1111111111242221;30-3F

[Open]
0="匯編源文件 (*.asm;*.inc;*.mac;*.txt),*.asm;*.inc;*.mac;*.txt"
1="資源文件 (*.rc),*.rc"
2="文本文件 (*.txt),*.txt"
3="所有文件 (*.*),*.*"
src="匯編文件 (*.asm),*.asm,asm"
hdr="頭文件 (*.inc),*.inc,inc"
mod="模塊 (*.asm;*.mac),*.asm;*.mac"

1=path 這個就是用來定義宏匯編編譯器的地址,填上正確的地址即可。

至於匯編源程序,你完全可以如在DOS環境下使用的那樣,例如:

.data

s1 db '這里放數據『,0

.code

entry proc

mov eax, [eax].PEB.ImageBaseAddress

call GetCurrAddr

mov hInstance[ebx], eax

......

entry endp

.data

s2 db '這里也放數據,當然也可以放到前面去。

.code

start:
mov dest, offset Mz
mov clenth, Len

invoke GetCurrentDirectory,nBufLen, addr szFName
invoke lstrcat,addr szFName, addr myFName

invoke CreateFile,addr szFName, ; pointer to name of the file
GENERIC_WRITE or GENERIC_READ,; access (read-write) mode
null, ; share mode
null, ; pointer to security attributes
CREATE_ALWAYS, ; how to create
FILE_ATTRIBUTE_NORMAL, ; file attributes
NULL

mov hFile, eax
invoke WriteFile,hFile,dest,clenth,addr br,NULL

.if eax
invoke lstrcpy,addr szFName,addr myFName1
invoke lstrcat,addr szFName,addr szOpenOk
invoke MessageBox,null,addr szFName,
addr szCaption,MB_OK
.else
invoke MessageBox,NULL,addr szOpenEr,
addr szCaption,MB_ICONERROR or MB_OK
.endif

invoke CloseHandle,hFile
xor eax, eax
invoke ExitProcess,eax

end start

編譯鏈接後,代碼從 start開始執行,start 的級別比 entry 高,如果代碼中有entry,同時有start,那麼編譯後,結果是start,而不是entry,准確的說法是結尾 end 後面根的啟動地址名稱,隨便叫什麼都可以,習慣上用 start。

這是我以前寫書時寫的一些演示代碼,都是在RadASM中開發的,代碼絕對都可以編譯運行的,我在附件里給你發一個匯編源代碼,你可以試著用RadASM來編譯一下。

『叄』 匯編語言用於指示程序開始的地址的偽指令是

有兩種方式指定程序開始執行的地址:

  1. END偽指令。

    格式為END <程序入口標號>

  2. .STARTUP偽指令。(注意前面有個點)

    程序將從此處開始執行,無需在END偽指令中指定。


『肆』 匯編 dw 在程序 入口前面,是不是說dw 命令就不執行 程序入口到底是什麼意思

匯編語言中,DW 是偽指令,它在作用是:往存儲器中存放數據。
比如,LED漢字顯示屏,顯示漢字的大量點陣數據,就可以用 DW 來存放。
這樣的點陣數據,是不應該當做程序來執行的,程序的入口,就不應該是 DW 所在的地方。

但是,也有高手,用 DW 指令,向存儲器中,存放指令的機器碼。
這樣的機器碼,是可以當做程序來執行的,程序的入口,就可以是 DW 所在的地方。

『伍』 如何說明匯編程序的入口

匯編語言的注釋是每行從分號「;」開始的,分號之後的內容都屬於注釋。一般而言,匯編語言的注釋在以下幾個地方:
1、程序的最前面,注釋內容一般說明該程序總的說明,解釋程序的主要功能,程序的版本號,程序的修改日誌,程序的編制人等等
2、子程序的前面,一般說明該子程序或函數完成的功能,輸入參數,輸出參數,影響的標志位等等。
3、指令行的後面,注釋該行語句的功能。
比如以下簡單程序的注釋。
;--------------------------------------
;該程序完成一個LED燈的閃爍
;編制時間:XXXXX
;完成人:XXXX
;--------------------------------------
ORG 0000H

LJMP MAIN:
ORG 0030H
MAIN:
CLR P1.0 ;led置低

LCALL DELAY ;延時

SETB P1.0 ;LED置高

LCALL DELAY ;延時

SJMP MAIN ;轉MAIN循環
;------------------------------
;延時子程序
;輸入參數:無
;輸入參數:無
;------------------------------
DELAY:
MOV R2,#200

D1:
MOV R3,#250

DJNZ R3,$

DJNZ R2,D1

RET

END

『陸』 匯編語言指令大全,要詳細的 !!!!

一、數據位傳送指令:

1、MOV C, bit ;bit 可直接定址位 C←(bit)

2、MOV bit,C ;C 進位位 (bit) ← C

二、位變數修改指令:

1、CLR C ; 將C=0

2、CLR bit

3、CPL C ; 將C求反再存入C

4、CPL bit ; 將bit求反再存入bit

5、SETB C ; 將C=1

6、SETB bit ; (bit) ← 1

三、位變數邏輯指令:


ANL C, bit ANL C, bit ORL C, bit ORL C, bit

『柒』 匯編語言 ENTRY 是什麼指令

在ARM匯編中,ENTRY 是一個偽指令,用於指定匯編程序的入口點。在一個較大型的完整的匯編程序(多個源文件組成的工程)中至少要有一個ENTRY(也可以有多個,當有多個ENTRY時,程序的真正入口點由鏈接器指定),但在某一個源文件里最多隻能有一個ENTRY(可以沒有)。

『捌』 51單片機匯編程序入口後加的跳轉指令"LJMP"是因為什麼 如:ORG 0 LJMP STAR ORG 0003H LJMP INT0S

要弄明白這個問題,你要對51單片機的中斷有一個初步的了解,我可以給你介紹一下。
比方說你希望不管程序運行到哪裡,只要你一按某個按鍵,就執行一段你預先寫好的程序,然後再回到原來的地方繼續。你按按鍵的動作可以視為單片機的一個I/O管腳電平由高到低(如果你把按鍵接在I/O和地之間)。在51單片機中,有兩個I/O可以實現這樣的功能(這就是外中斷,ORG
0003H
LJMP
INT0S
中的INT0S就是外中斷0,具體你可以查51單片機中斷系統的資料)。
那它到底是怎樣實現的呢?比方說,某一時刻,你的按鍵按下了,處理器會知道滿足了外中斷的觸發條件,那它會執行哪一段程序呢?設計師人為地給它規定了一個固定的地址,如外中斷0被觸發時就是跳到地址為0003H的單元開始執行,別的中斷(定時器等)同理,都有一個固定的地址,一旦被觸發就會自動跳到那個地址,這就是中斷向量。
那為什麼是0003H而不是程序存儲器的末尾呢?這是因為不同51單片機的存儲器大小是不同的,如果中斷向量也因此而不同的話,單片機開發的麻煩就太多了。所以設計師乾脆就把中斷向量放在開頭。單片機復位後是從0000H開始執行的,總不能讓它一開始就無緣無故中斷,所以要轉移到一個和中斷向量不相乾的地方執行主程序。ORG
0
LJMP
STAR(其實應該是START)就是這樣一個轉移指令,轉到標記為START的主程序處開始執行。一條LJMP指令的長度為3,這也就是第一個中斷向量為0003H的原因了(不浪費一絲空間,不得不佩服Intel設計師的高明)。
ORG
0003H
LJMP
INT0S
為什麼中斷向量處還要跳轉呢?這是因為中斷向量間的空間也很有限,只能完成一些最簡單的任務,稍微長一點的程序就需要放在更大的空間里,從中斷向量處跳轉到該處執行真正的中斷服務程序。
有關中斷系統的具體內容,建議你還是看看相關資料,我只是把它的基本原理和你講了一下,真正使用還是請你自己探索。

『玖』 jne的匯編指令是什麼

匯編指令是匯編語言中使用的一些操作符和助記符,還包括一些偽指令(如assume,end)。用於告訴匯編程序如何進行匯編的指令,它既不控制機器的操作也不被匯編成機器代碼,只能為匯編程序所識別並指導匯編如何進行。

jne是匯編指令中的一個條件轉移指令。當ZF=0,轉至標號處執行。

閱讀全文

與匯編程序入口為指令是什麼相關的資料

熱點內容
穿越之命令與征服將軍 瀏覽:351
android廣播重復 瀏覽:832
像阿里雲一樣的伺服器 瀏覽:318
水冷空調有壓縮機嗎 瀏覽:478
訪問日本伺服器可以做什麼 瀏覽:432
bytejava詳解 瀏覽:448
androidjava7 瀏覽:384
伺服器在山洞裡為什麼還有油 瀏覽:885
天天基金app在哪裡下載 瀏覽:974
伺服器軟路由怎麼做 瀏覽:291
冰箱壓縮機出口 瀏覽:227
OPT最佳頁面置換演算法 瀏覽:644
網盤忘記解壓碼怎麼辦 瀏覽:852
文件加密看不到裡面的內容 瀏覽:653
程序員腦子里都想什麼 瀏覽:434
oppp手機信任app在哪裡設置 瀏覽:188
java地址重定向 瀏覽:272
一年級下冊摘蘋果的演算法是怎樣的 瀏覽:448
程序員出軌電視劇 瀏覽:90
伺服器系統地址怎麼查 瀏覽:56