兰陵月 发表于 2017-12-1 19:12:49

X86汇编语言-从实模式到保护模式—笔记(26)-第13章 程序的动态加载和执行(4)

本帖最后由 兰陵月 于 2017-12-5 21:52 编辑

         ;代码清单13-3
         ;文件名:c13.asm
         ;文件说明:用户程序
         ;创建日期:2011-10-30 15:19   
         
;===============================================================================
SECTION header vstart=0

         program_length   dd program_end          ;程序总长度#0x00
         
         head_len         dd header_end         ;程序头部的长度#0x04

         stack_seg      dd 0                  ;用于接收堆栈段选择子#0x08
         stack_len      dd 1                  ;程序建议的堆栈大小#0x0c
                                                ;以4KB为单位
                                                
         prgentry         dd start                ;程序入口#0x10
         code_seg         dd section.code.start   ;代码段位置#0x14
         code_len         dd code_end             ;代码段长度#0x18

         data_seg         dd section.data.start   ;数据段位置#0x1c
         data_len         dd data_end             ;数据段长度#0x20
            
;-------------------------------------------------------------------------------
         ;符号地址检索表
         salt_items       dd (header_end-salt)/256 ;#0x24
         
         salt:                                     ;#0x28
         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 db0         ;缓冲区

         message_1         db0x0d,0x0a,0x0d,0x0a
                           db'**********User program is runing**********'
                           db0x0d,0x0a,0
         message_2         db'Disk data:',0x0d,0x0a,0

data_end:

;===============================================================================
      
;===============================================================================
SECTION code vstart=0
start:
         mov eax,ds
         mov fs,eax
   
         mov eax,
         mov ss,eax
         mov esp,0
   
         mov eax,
         mov ds,eax
   
         mov ebx,message_1
         call far
   
         mov eax,100                         ;逻辑扇区号100
         mov ebx,buffer                      ;缓冲区偏移地址
         call far           ;段间调用
   
         mov ebx,message_2
         call far
   
         mov ebx,buffer
         call far          ;too.
   
         jmp far        ;将控制权返回到系统
      
code_end:

;===============================================================================
SECTION trail
;-------------------------------------------------------------------------------
program_end:

diskdata.txt文件~
页: [1]
查看完整版本: X86汇编语言-从实模式到保护模式—笔记(26)-第13章 程序的动态加载和执行(4)