|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 兰陵月 于 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 db 0 ;缓冲区
- message_1 db 0x0d,0x0a,0x0d,0x0a
- db '**********User program is runing**********'
- db 0x0d,0x0a,0
- message_2 db ' Disk data:',0x0d,0x0a,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_1
- call far [fs:PrintString]
-
- mov eax,100 ;逻辑扇区号100
- mov ebx,buffer ;缓冲区偏移地址
- call far [fs:ReadDiskData] ;段间调用
-
- mov ebx,message_2
- call far [fs:PrintString]
-
- mov ebx,buffer
- call far [fs:PrintString] ;too.
-
- jmp far [fs:TerminateProgram] ;将控制权返回到系统
-
- code_end:
- ;===============================================================================
- SECTION trail
- ;-------------------------------------------------------------------------------
- program_end:
复制代码
diskdata.txt文件~
|
|