Assembly 内存段
我们已经讨论了汇编程序的三个部分。这些部分代表不同的内存段。
有趣的是,如果更换部分关键字段,会得到相同的结果。试试下面的代码:
segment .text ;code segment global _start ;must be declared for linker _start: ;tell linker entry yiibai 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, world!',0xa ;our dear string len equ $ - msg ;length of our dear string
上面的代码编译和执行时,它会产生以下结果
Hello, world!
内存段
分段存储模型的系统内存划分成独立的段,引用指针位于段寄存器组。每个段是指包含特定类型的数据。一个段被用于包含指令代码,另一个段存储的数据元素,和第三个分部保持程序堆栈。
根据上面的讨论,我们可以指定不同的内存段:
-
数据段 - 它由数据段的和bss段。数据段的用来声明数据元素的存储程序的内存区域。本节不能扩大后的数据元素的声明,并在整个程序中它仍保持不变。
bbs部分是静态内存部分,其中包含的缓冲区进行数据宣布以后在程序。这个缓冲存储器是零填充。
-
代码段 - 它表示文字部分。这定义的区域在存储器中存储的指令代码。这也是一个固定的区域。
-
堆 - 此段包含传递给程序的功能和程序内的数据值。
本站文章除注明转载外,均为本站原创或编译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创优秀实例教程
转载请注明:文章转载自:代码驿站 [http:/www.codeinn.net]
本文标题:Assembly 内存段
本文地址:http://www.codeinn.net/assembly/997.html
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创优秀实例教程
转载请注明:文章转载自:代码驿站 [http:/www.codeinn.net]
本文标题:Assembly 内存段
本文地址:http://www.codeinn.net/assembly/997.html