注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

编程学习

我的网上家园

 
 
 

日志

 
 

13章学习: 用户程序的结构  

2013-03-05 16:07:47|  分类: 《x86汇编语言: |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
;程序头部开始
;========================================================
0x0:    用户程序总大小 4字节
0x4:    头部大小 4字节
0x8:    用户栈选择子 4字节 栈由内核进行分配,回填选择子到此处
0xc:    用户需要的栈大小 4字节  1表示4KB 2表示8KB
0x10:  用户程序入口点的起始偏移 4字节 32位的起始偏移
0x14:  用户程序代码段起始汇编地址 4字节 ,内核加核用户程序以后,回填代码段选择子到此处 
0x18:  用户代码段大小,以字节为单位 4字节
0x1c:  用户数据段的起始汇编地址 4字节 内核加载用户程序以后,回填数据段选择子到此处
0x20:  用户数据段大小 4字节
0x24:  SALT表(符号-地址检索表)的大小 4字节
0x28:  SALT表开始 (每个表项最大256字节,不足256字节用0填充)
;头部结束
;=======================================================
数据段
;=======================================================
代码段
;程序结束

练习源代码:

section header vstart=0
;========================================
user_length   dd program_end   ;用户程序总长度
header_length dd header_end  ;头部长度
stack_seg     dd 0 ;栈选择子
stack_length  dd 2 ;栈建议大小
entry         dd start ;入口点的偏移地址
code_seg      dd section.code.start ;代码段选择子
code_length   dd code_end        ;代码段长度
data_seg      dd section.data.start ;数据段选择子
data_length   dd data_end        ;数据段长度

salt_length   dd (header_end-salt)/256
salt:
PrintString db '@PrintString'
times 256-($-PrintString) db 0

TerminateProgram db '@TerminateProgram'
times 256-($-TerminateProgram) db 0

ReadDiskData db '@ReadDiskData'
times 256-($-ReadDiskData) db 0



header_end:
;==========================================
section data vstart=0
buffer times 1024 db 0
message db 0xd,0xa,'   user program running!',0xd,0xa,'Disk data: ',0xd,0xa,0
data_end:
;============================================
[bits 32]
section code vstart=0
start: 
mov eax,ds
mov fs,eax
mov eax,[stack_seg]
mov ss,eax
mov esp,0

mov eax,[data_seg]
mov ds,eax
mov ebx,message
call far [fs:PrintString]
mov eax,100
mov ebx,buffer
call far [fs:ReadDiskData]
mov ebx,buffer
call far [fs:PrintString]

jmp far [fs:TerminateProgram]


code_end:
section trail
program_end:
  评论这张
 
阅读(18)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017