W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
我們已經(jīng)討論了匯編程序的三個部分。這些部分代表不同的內(nèi)存段。有趣的是,如果更換部分關(guān)鍵字段,會得到相同的結(jié)果。試試下面的代碼:
segment .text ;code segment
global _start ;must be declared for linker
_start: ;tell linker entry w3cschool
mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
segment .data ;data segment
msg db 'Hello, w3cschool!',0xa ;our dear string
len equ $ - msg ;length of our dear string
上面的代碼編譯和執(zhí)行時,它會產(chǎn)生以下結(jié)果:
Hello, w3cschool!
分段存儲模型的系統(tǒng)內(nèi)存劃分成獨立的段,引用指針位于段寄存器組。每個段是指包含特定類型的數(shù)據(jù)。一個段被用于包含指令代碼,另一個段存儲的數(shù)據(jù)元素,和第三個分部保持程序堆棧。
根據(jù)上面的討論,我們可以指定不同的內(nèi)存段:
數(shù)據(jù)段 - 它由數(shù)據(jù)段的和bss段。數(shù)據(jù)段的用來聲明數(shù)據(jù)元素的存儲程序的內(nèi)存區(qū)域。本節(jié)不能擴大后的數(shù)據(jù)元素的聲明,并在整個程序中它仍保持不變。
bbs部分是靜態(tài)內(nèi)存部分,其中包含的緩沖區(qū)進行數(shù)據(jù)宣布以后在程序。這個緩沖存儲器是零填充。
代碼段 - 它表示文字部分。這定義的區(qū)域在存儲器中存儲的指令代碼。這也是一個固定的區(qū)域。
堆 - 此段包含傳遞給程序的功能和程序內(nèi)的數(shù)據(jù)值。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: