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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2012, 00:08   #121
program2001
Пользователь
 
Аватар для program2001
 
Регистрация: 20.02.2011
Сообщений: 68
Радость

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
помним что надо будет редактор и компилятор запустить под вашей системой.
Конечно помним))
Цитата:
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
Linus Torvalds

Последний раз редактировалось program2001; 13.11.2012 в 21:36.
program2001 вне форума Ответить с цитированием
Старый 13.11.2012, 23:06   #122
program2001
Пользователь
 
Аватар для program2001
 
Регистрация: 20.02.2011
Сообщений: 68
По умолчанию

Не подскажите как ловить нажатие кнопки питания?Потренироваться)
И как из ассемблера вызывать си функцию?
Цитата:
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
Linus Torvalds

Последний раз редактировалось program2001; 13.11.2012 в 23:11.
program2001 вне форума Ответить с цитированием
Старый 13.11.2012, 23:46   #123
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это событие ACPI(что самое по себе не хилая тема)

Цитата:
И как из ассемблера вызывать си функцию?
поидее можно слинковать все вместе.
но я лично делал все же наоборот.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.05.2013, 08:38   #124
androdrev
Форумчанин
 
Аватар для androdrev
 
Регистрация: 19.03.2013
Сообщений: 135
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
boot.asm
Код:
[BITS 16]	;Говорим что 16 битный код
[ORG 0]	;Начало с 0000:0000

jmp	entry ;Пропускаем данные и передаем управление коду по метке entry, а так же для корректировки на 0000:07c0

	cyls_read			db 10	;Кол-во цилиндров для чтения
	max_errors			db 5	;Максимальное кол-во ошибок

	;Сообщения для информирования пользователя
	msg_loading 		db "Loading", 0
	msg_loading_proc 		db ".", 0
	msg_reading_error 	db "Error reading from floppy. Errcode:", 0
	msg_giving_up 		db "Too many errors, giving up", 0x0a, 0x0d, "Reboot your system, please", 0
	msg_crlf 			db 0x0a, 0x0d ;Всем знакомые 2 байты, для переноса строки и каретки.

entry:
	cli				;Запрещаем прерывания BIOS
	mov	ax, 0x07c0		;Указываем адрес куда нас BIOS загрузил
	mov	ds, ax
	mov 	ax, 0x9000		;Адрес сегмента
	mov 	es, ax
	xor 	si, si		;Копируем с нуля
	xor 	di, di
	sti				;Разрешаем прерывания BIOS

	mov 	cx, 128		;Говорим перенести 128 двойных слов ( 128 * 2 * 2 байт ) по адресу 9000:0000
	rep 	movsd

	jmp 	0x9000:start	;Передаем управление скопированному коду


start:
	mov	si, msg_loading	;Вывод сообщения
	call	print

	mov 	ax, cs		;Новые значения в сегментные регистры
	mov 	ds, ax
	mov	ss, ax

	mov 	di, 1			;Начнем копирование с дискеты в 0290:0000 с первого цилиндра
	mov 	ax, 0x290
	xor 	bx, bx

.loop:
	mov	si, msg_loading_proc	;Выводим точку :)
	call	print

	mov 	cx, 0x50
	mov 	es, cx

	push 	di
		
	shr 	di, 1
	setc 	dh
	mov 	cx, di
	xchg 	cl, ch

	pop	di
	cmp 	di, cyls_read		;Все ли цилиндры прочитаны
	je 	.quit

	call 	read_cylinder		;Читаем дальше цилиндр	0050:0000 - 0050:2400

	pusha
	push 	ds

	mov 	cx, 0x50			;Копируем данный блок дальше в 0290:0000
	mov 	ds, cx
	mov 	es, ax
	xor 	di, di
	xor 	si, si
	mov 	cx, 0x2400
	rep 	movsb

	pop 	ds
	popa

	inc 	di				;Увеличиваем значения
	add 	ax, 0x240
	jmp 	short .loop			;Продолжаем читать

.quit:
	mov 	ax, 0x50			;Скопированы все цилиндры, прочитаем нулевой цилиндр
	mov 	es, ax
	mov 	bx, 0
	mov 	ch, 0
	mov 	dh, 0
	call 	read_cylinder

	jmp 	0x0000:0x0700		;Все теперь передаем управление коду "вторичного" загрузчика

read_cylinder:				;Функция чтения цилиндра прерывание BIOS 0x13
	mov 	[.errors_counter], byte 0
	pusha

.start:
	mov 	ah, 0x02
	mov 	al, 18
	mov 	cl, 1

	int 	0x13
	jc 	.read_error

	popa
	ret



.errors_counter: db 0			;Кол-во ошибок
.read_error:
	inc 	byte [.errors_counter]
	mov 	si, msg_reading_error
	call 	print
	call 	printh
	mov 	si, msg_crlf
	call 	print

	cmp 	byte [.errors_counter], max_errors
	jl 	.start

	mov 	si, msg_giving_up		;Получили много ошибок, выведим сообщение и повесим систему
	call 	print
	hlt
	jmp	$



hex_table:	db "0123456789ABCDEF"
printh:					;Выведим хекс значение
	pusha
	xor 	bx, bx
	mov 	bl, ah
	and 	bl, 11110000b
	shr 	bl, 4
	mov 	al, [hex_table+bx]
	call 	printc

	mov 	bl, ah
	and 	bl, 00001111b
	mov 	al, [hex_table+bx]
	call 	printc

	popa
	ret


printc:					;Выведим один символ al
	pusha
	mov 	ah, 0x0E
	int 	0x10
	popa
	ret

print:					;Выведим строку si
	pusha
.loop:
	lodsb
	or 	al, al
	jz 	.quit
	mov 	ah, 0x0e
	mov 	bx, 0x7
	int 	0x10
	jmp 	.loop
.quit:
	popa
	ret


TIMES 510 - ($-$$) db 0			;Ставим нулевые байты до 510го байта
dw 0xaa55					;Ставим сигнатуру, говорим BIOS, что это загрузочный сектор

incbin   'setup.o'
Не подскажите, куда это вставлять? Я так и не понял. У меня ассемблеры: NASM, FASm, YASM и еще С++.
androdrev вне форума Ответить с цитированием
Старый 23.05.2013, 12:44   #125
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это код на NASM.

там же можно скачать архив затем.

полистайте тему все же.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.05.2013, 21:04   #126
androdrev
Форумчанин
 
Аватар для androdrev
 
Регистрация: 19.03.2013
Сообщений: 135
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
это код на NASM.

там же можно скачать архив затем.

полистайте тему все же.
Насм не работает в Win 7. При запуске закрывается. Режим совместимости не помогает. что делать?
androdrev вне форума Ответить с цитированием
Старый 23.05.2013, 21:31   #127
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
что делать?
Использовать виртуальные машины или брать другой ассемблер.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.05.2013, 21:37   #128
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Цитата:
При запуске закрывается
Вам еще рано писать ОС.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 23.05.2013, 22:19   #129
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ТС, вы с консольными утилитами не знакомы?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.05.2013, 06:15   #130
androdrev
Форумчанин
 
Аватар для androdrev
 
Регистрация: 19.03.2013
Сообщений: 135
По умолчанию

Цитата:
Сообщение от Goodwin98 Посмотреть сообщение
Вам еще рано писать ОС.
Не рано. FASM и NASM немного разные языки, я точно учил FASM в подробностях, а код от NASM FASM определяет с ошибкой. Как только мы объявляем что код - 16 битный он выдает ошибку. Попробую виртуальной машиной, у меня VMware стоит, очень неплохая вещь!
androdrev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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