|  | 
	
	
		
	
	
    
        |  11.12.2009, 08:26 | #1 |  
    | 
  
    |  |  
    |  |  |  
    |     Разведчик |    
            
                 Регистрация: 23.11.2009
                 Сообщений: 10
                 Популярность: 146  
	 Сказал(а) спасибо: 6
		
			
				Поблагодарили 41 раз(а) в 20 сообщениях
			
		
	   | 
                 Простейший boot-loader 
 
            
               
    Продолжаем флуд  )
 
	PHP код: 
		
			
use16
org 0x7C00
 bios_start:
 cli
 mov ax,0x0
 mov es,ax
 mov ds,ax
 mov es,ax
 sti
 
 ;Устанавливаем видеорежим
 mov ax,3
 int 0x10
 
 ;Отключаем курсор
 mov ah,1
 mov ch,0x20
 int 0x10
 
 ;Инициализируем все что нужно для запуска цикла
 mov ax,0xB800
 mov es,ax
 mov si,message
 xor di,di
 ;Цикл переноса данных.
 @@:
 lodsb
 mov ah,0xF
 stosw
 cmp al,0x0
 jnz @b
 ;Бесконечный цикл.
 jmp $
 
 message db "Hello, World!",0
 TIMES 510-($-$$) db 0
 dw 0xAA55
 
 Как видите код более чем тривиален - может быть кого ни будь это подтолкнет к написанию собственной ОС. Из опыта могу сказать что лучше всего писать на ассемблере - понятней, удобней, но разработка идет дольше и приходится переносить сложные алгоритмы на асм самому.
Добавлено через 5 минут 
Кстати чуть не забыл, вот пример перехода в защищенный режим полученный мной на одном форуме в качестве ответа. Этот исходник мне очень помог. 
 
	PHP код: 
		
			
;************************************
; By Dex
 ; Assemble with fasm
 ; c:\fasm Pmode.asm Pmode.bin
 ;
 ;************************************
 org 0x7C00
 use16
 ;****************************
 ; Realmode startup code.
 ;****************************
 start:
 xor   ax,ax
 mov   ds,ax
 mov   es,ax
 mov   ss,ax
 mov   sp,0x7C00
 ;*****************************
 ; Setting up, to enter pmode.
 ;*****************************
 cli
 lgdt  [gdtr]
 mov   eax, cr0
 or    al,0x1
 mov   cr0,eax
 jmp   0x10: protected
 ;*****************************
 ; Pmode. ;-)
 ;*****************************
 use32
 protected:
 mov   ax,0x8
 mov   ds,ax
 mov   es,ax
 mov   ss,ax
 mov   esp,0x7C00
 ;*****************************
 ; Turn floppy off (if space).
 ;*****************************
 mov   dx,3F2h
 mov   al,0
 out   dx,al
 ;*********************************
 ; Print T in the right hand corner
 ;*********************************
 mov   byte [es:0xB809E], "T"
 ;*********************************
 ; Just loop for now
 ;*********************************
 jmp   $
 ;*************************************
 ; GDT.
 ;*************************************
 gdt:        dw    0x0000, 0x0000, 0x0000, 0x0000
 sys_data:   dw    0xFFFF, 0x0000, 0x9200, 0x00CF
 sys_code:   dw    0xFFFF, 0x0000, 0x9800, 0x00CF
 gdt_end:
 
 gdtr:       dw gdt_end - gdt - 1
 dd gdt
 ;*************************************
 ; Make program 510 byte's + 0xaa55
 ;*************************************
 times 510- ($-start)  db 0
 dw 0xaa55
 
 PS: Очень важная информация 
После прыжка к защищенному коду(ну тоесть к 32-битному) обязательно проинициализируйте DS его селектором. В данном случае селектор DS - 0x8  
Соответственно ваш защищенный код должен начинаться так:  
mov ax,0x8 
mov ds,ax 
По другому никак - иначе будете смотреть как ваша ОС перезагружается без конца и края, я на этом баге просидел почти 3 месяца - постоянно совал левый селектор.
     
        
                
 
                        Последний раз редактировалось Ivan_64; 11.12.2009 в 08:32.
                    
                    
                        Причина: Добавлено сообщение
                    
                
             |  
    |  |   |  
	
		
			| Пользователь сказал cпасибо: |  |  
	
		
	
	
	
	
	| 
	|  Ваши права в разделе |  
	| 
		
		Вы не можете создавать новые темы Вы не можете отвечать в темах Вы не можете прикреплять вложения Вы не можете редактировать свои сообщения 
 HTML код Выкл. 
 |  |  |  
	Заявление об ответственности / Список мошенников
		|  Похожие темы |  
	| Тема | Автор | Раздел | Ответов | Последнее сообщение |  
	| [Программа] RF Loader | [s]X@m[s] | Rising Force Online | 5 | 05.02.2011 11:27 |  
	| rf-loader | polifoniya19210 | Архив уязвимостей | 15 | 24.06.2009 18:30 |  
	| [Help]RF Loader 1.8.5 | ТумТум | Rising Force Online | 16 | 25.02.2009 23:02 |  
	| НЕ РУБИТ LOADER ! | Chiter X | Rising Force Online | 1 | 05.02.2009 23:10 |  Часовой пояс GMT +4, время: 20:40. |  |