Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2009, 22:14   #41
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Цитата:
думаешь это слишком много? бывают программы и длиннее.
В то время, наверно, работы с оборудованием было поменьше, программы были покороче, ну и ОС соотв. по-компактней.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 30.05.2009, 08:26   #42
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

работа с оборудованием не является задачей операционной системы, это делают драйвера, а драйвера пишут разработчики устройств.
rpy3uH вне форума Ответить с цитированием
Старый 30.05.2009, 10:12   #43
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Цитата:
работа с оборудованием не является задачей операционной системы
Позволю себе не согласиться в ОС должна быть встроеная поддержка таких устройств, как клавиатура, дисковод, различных контроллеров, которые сейчас встроены в чипсет, работа с видео памятью.
Цитата:
драйвера пишут разработчики устройств.
Это, конечно, так, но вам врят ли получится убедить кого-нибудь из "Creative", чтобы они написали драйвер для MyOS.
Так что все остальное тоже реализуется разработчиком ОС.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 30.05.2009 в 10:51.
Goodwin98 вне форума Ответить с цитированием
Старый 30.05.2009, 21:43   #44
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Цитата:
Сообщение от DEADHUNT Посмотреть сообщение
думаешь это слишком много? бывают программы и длиннее.
Если ТАКОГО качаства, как в Linux, то ето достаточно.

Теперь там 6.000.000 кода. Это много или мало?

Что касается драйверов, то какие-то все равно должны быть, иначе ОС вообще не будет работать.

Последний раз редактировалось BaronTreep; 30.05.2009 в 21:47.
BaronTreep вне форума Ответить с цитированием
Старый 01.06.2009, 23:25   #45
Timofey
 
Регистрация: 08.12.2008
Сообщений: 6
По умолчанию

Если говорить о драйверах,то следует отметить,что это многослойные
системы,самый нижний слой есть разработчики устройств, это и есть аппаратно зависимая часть.
Timofey вне форума Ответить с цитированием
Старый 24.07.2009, 20:50   #46
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

С этим загрузчиком есть одна большая проблема(сразу как то не заметил, так как свой по другому примеру писал). Проблема эта заключается в том что BIOS загружает код по адресу 0000:7C00 а не 7C00:0000(сегмент : смещение) как указано тут. Проблема видимо в исходнике, так как сам образ вполне рабочий(в этой теме далее был).
PS: Чуть с ума не сошел когда пытался заставить этот загрузчик работать, образ то рабочий а собственноручно скомпилированный не работает. Вывод: доверяй но проверяй
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 25.09.2009, 19:33   #47
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Приветствую.
Вопрос, тем кто писал загрузчики, не пойму почему Bochs вылетает при попытке перехода (длиного прыжка) в защищенный режим.

Код загрузчика
Код:
LOADER_SEG equ 0x7c00
BUFFER_SEG equ 0x7e00
KERNEL_SEG equ 0x100000

[BITS 16]
[ORG LOADER_SEG]

_start:

; Override some bogus BIOS
	jmp 0x0:_real_start
	
_real_start:

; Prepare for work
	cli
	xor ax, ax
	mov ds, ax
	mov ss, ax
	mov es, ax
	mov sp, LOADER_SEG
	
; Check if LBA is supported
	mov si, msg_lba
	call message
	mov ah, 0x41
	mov dl, 0x80 ; 0x80 - primary master
	mov bx, 0x55aa
	int 0x13
	jc on_error ; Error
	mov si, msg_ok
	call message
	
; Read sectors
	mov si, msg_read
	call message
	mov ah, 0x2
	mov al, 0x40 ; Number of sectors to use 0...127 (0x7f) 64 blocks = 32 Kb
	mov bx, BUFFER_SEG ; Memory buffer
	mov cx, 0x1 ; Sector offset
	mov dh, 0x0 ; Header
	mov dl, 0x80 ; Disk (the 7th bit is enabled)
	int 0x13
	jc on_error ; Error
	mov si, msg_ok
	call message
	
; Turn off cursor
	mov ah, 0x1
	mov ch, 0x20
	int 0x10
	
; Open A20
	in al, 0x92
	or al, 0x2
	out 0x92, al
	
; Load GDT
    lgdt [gdtr]	; Load gdt register
	
; P-mode
	mov eax, cr0
	or al, 0x1
	mov cr0, eax
	
; Long jump to protected code segment
	jmp 0x8:_protected_start
	
; error
on_error:
	mov si, msg_error
	call message
	jmp $ ; Loop
	
; Output message
l:
	mov bx, 0x0001
	mov ah, 0xe
	int 0x10
message:
	lodsb
	cmp al, 0
	jne l
	ret
	
; Data
msg_lba: db "0x41 int 0x13 - Check Extensions Present...", 0
msg_read: db "0x42 int 0x13 - Extended Read Sectors From Drive...", 0
msg_ok: db "Ok", 13, 10, 0
msg_error: db "Error", 13, 10, 0

gdt:
	; Zero D
	dw 0x0, 0x0, 0x0, 0x0
	; CS
	dw 0xffff  ; Limit
	dw 0x00 ; Base Low
	db 0x00 ; Base High
	db 0x9a ; 10011010 = 1 - бит присутствия, 00 - кольцо, 1 - not system, 101 - CS (code segment _ _ x), 0 - access bit
	db 0xcf ; 11001111 = 1 - лимит в 4 Кб кусках, 1 - 32-bit mode, 0 - Reserved, 0 - for internal use, 1111 - limit
	db 0x00 ; Base High
	; DS
	dw 0xffff ; Limit
	dw 0x00 ; Base Low
	db 0x00 ; Base High
	db 0x92 ; 10010010 = 1 - бит присутствия, 00 - кольцо, 1 - not system, 001 - DS (data segment r w _), 0 - access bit
	db 0xcf ; 11001111 = 1 - лимит в 4 Кб кусках, 1 - 32-bit mode, 0 - Reserved, 0 - for internal use, 1111 - limit
	db 0x00 ; Base High
gdt_end:

gdtr:
	;dw 8192
	dw gdt_end - gdt - 1
	dd gdt
	
TIMES 510 - ($ - $$) db 0
db 0x55, 0xaa

[BITS 32]

_protected_start:

	jmp $ ; вот сюда мы не доходим

; Load DS and SS
	mov ax, 0x10
	mov ds, ax
	mov ss, ax
	mov ax, es

; Copy kernel
	mov esi, _kernel_start
	mov edi, KERNEL_SEG
	mov ecx, 0x4000 ; 64 Kb is size of our kernel
	rep movsd
	jmp KERNEL_SEG
Конфиг борща
Код:
romimage: file=$BXSHARE/BIOS-bochs-latest

megs: 512

vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest

ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path=hdd.bin, mode=flat, cylinders=306, heads=4, spt=17, translation=none

boot: disk

mouse: enabled=0
BOBAH13 вне форума Ответить с цитированием
Старый 04.03.2010, 15:07   #48
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

собственно думаю продолжить тему.
мои успехи сейчас это работа с IDT(APIC)
обработка ввода клавы(пока кривая...недавно вышло тока)
на эмуле(бочс) грузится, на пне втором нет...вылетает...позже хочу определить обработчики всех прерываний и соответственно выяснить проблему.
на моем компе не читает с дискеты(загрузчик)
причины пока не знаю...потом отдизассамблю ДОС загрузчик и посмотрю как он делает(он грузится)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.12.2010, 12:42   #49
kuraga1991
 
Регистрация: 29.12.2010
Сообщений: 3
По умолчанию

Здравствуйте! То, что лежит в архиве на второй странице, в Qemu выдает пустой экран. Если это не коммерческая тайна, Вы не помните, в чем проблема?) И еще с Новым годом!!! Буду благодарен за ответ!
kuraga1991 вне форума Ответить с цитированием
Старый 01.02.2011, 17:28   #50
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Если это не коммерческая тайна, Вы не помните, в чем проблема?)
там сорец не работал под qemu если не ошибаюсь.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объявление собственной глобальной процедуры Gorin Общие вопросы Delphi 11 06.11.2007 17:49
РАЗРАБОТКА DLL Leo Общие вопросы Delphi 2 26.10.2007 21:35
Разработка протокола OrdJONY Общие вопросы по программированию, компьютерный форум 2 04.10.2007 13:21