微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

汇编内存管理

section    .text
   global _start         ;must be declared for using gcc

_start:                     ;tell linker entry point

   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         ;pointing 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐