Assembly彙編
Assembly彙編教學
Assembly - 什麼是彙編語言
Assembly 環境設置
Assembly 基本語法
Assembly 內存段
Assembly 寄存器
Assembly 系統調用
Assembly 尋址模式和MOV指令
Assembly 變量聲明
Assembly 常量
Assembly 算術指令
Assembly 邏輯指令
Assembly 條件
Assembly 循環
Assembly 數字
Assembly彙編 字符串處理
Assembly彙編 MOVS指令
Assembly彙編 LODS指令
Assembly彙編 STOS指令
Assembly彙編 CMPS指令
Assembly彙編 SCAS指令
Assembly彙編 數組
Assembly彙編 過程
Assembly彙編 遞歸
Assembly彙編 宏
Assembly彙編 文件管理
Assembly彙編 內存管理
Assembly彙編 內存管理
由內核提供的**sys_brk()**系統調用,分配內存而無需移除。這個調用應用圖像存儲在內存分配內存後面。本系統功能允許您設置的最高的可用地址的數據部分。
這個系統調用需要一個參數,這是最高的內存地址需要設置。這個值被存儲在EBX寄存器。
任何錯誤的情況下sys_brk()返回-1或返回負的錯誤代碼本身。下面的例子演示了動態內存分配。
例子:
下面的程序分配16KB內存使用sys_brk()系統調用:
section .text global _start ;must be declared for using gcc
_start: ;tell linker entry yiibai
mov eax, 45 ;sys\_brk
xor ebx, ebx int 80h add eax, 16384 ;number of bytes to be reserved
mov ebx, eax
mov eax, 45 ;sys\_brk int 80h cmp eax, 0 jl exit ;exit, if error
mov edi, eax ;EDI \= highest available address sub edi, 4 ;yiibaiing to the last DWORD
mov ecx, 4096 ;number of DWORDs allocated
xor eax, eax ;clear eax
std ;backward
rep stosd ;repete for entire allocated area
cld ;put DF flag to normal state
mov eax, 4 mov ebx, 1 mov ecx, msg
mov edx, len int 80h ;print a message exit: mov eax, 1 xor ebx, ebx int 80h section .data
msg db "Allocated 16 kb of memory!", 10 len equ $ - msg
上面的代碼編譯和執行時,它會產生以下結果:
Allocated 16 kb of memory!