По созданию ОС
Какая восхитительная Н-Е-Н-А-В-И-С-Т-Ь!!!11
Попробую угадать.
Он сейчас напишет:
"Спасибо конечно, но это я уже и сам понял. Все-равно происходит ошибка помогите хоть кто-нибудь!!! Буду очень-очень благодарен."
46 постов — с ума сойти можно. Неделя терпимости на codenet, И kot_ ещё даже не откусил ТС голову.
[/offtop]
как видишь, я редко ошибаюсь - дебилы имеют весьма характерный набор сигнатур и поведенческих характеристик. Поэтому ТС лучше еще раз дать туже ссылку и оставить покоится с миром. И да - на меня можно обижаться, на меня можно не обижаться - мне вобщем то все равно.
Есть две категории людей с неправильно заданными вопросами.
Есть студенты, которые хотят, чтобы все сделали за них,
а есть школьники, которым интересно что-то сделать, но они не умеют ни пользоваться гуглом, ни читать документацию, ни даже ясно выражать свои мысли.
И если с первой категорией все понятно ("ссылка" укажет что им делать), то у второй еще есть шанс научиться. Я сам когда-то давно относился ко второй категории.
если человеку интересно что-то сделать - он берет и делает. А не скулит, что у него заканчивается терпение и пр. Мы все когда то начинали. Да и в роли начинающего я стараюсь оказываться как можно чаще - научится чему либо - никогда не поздно. А есть ленивые, тупые убобища - с непомерным апломбом и "ну сделайте. а то терпение заканчивается". "Ссылка" - достаточно простой тест, после которого легко понять кто перед тобой - первый или второе. И кстати тест весьма эффективный - с точностью до 100% :) Если нормального человека пошлешь нахер - он как правило задумывается - почему или что сделал не так. Идиот же - проявит себя всегда.
а вы чего ожидали ? графического рабочего стола , музычку и состояние билла гея ? :)
всё нормально - ваш код делает ровно то , что вы ему нашкодили .
старайтесь искать ответы самостоятельно
Будет, если написать для него свой обработчик.
1) загрузить файл;
2) выполнить инструкцию перехода.
Видимо уже скоро взорвется.
командой JMP или Jxx .
в фасме это например так пишется : jmp far 0h:7e00h
Что касается первого пункта, то надо анализировать структуру файловой системы (включая различные расширения, если это необходимо). Я не выкладываю исходники моих загрузчиков, но можно поискать в сети загрузчики с открытыми исходниками.
GCSoft, для запуска COM-файлов можешь прикрутить к загрузчику код, расположенный по ссылке, которую я давал выше.
необязательно , но я предпочитаю указывать компилятору тип команды явно )
скорее всего вы берёте исходники , написанные под тасм или масм и пытаетесь их адаптировать под фасм . при адаптации у вас и лезут косяки .
macro read string
{
c db 0
char db 1,0
i db 0
.repeat
mov ah,10h
mov [string+si],al
int 16h
inc si
mov [char],al
int 16h
mov ah,0eh
mov al,[char]
int 10h
.if al=0dh
mov [c],1
.endif
.until [c]=1
}
</code>
pushf
pushad
cicle_print:
lodsb
test al,al
jz end_print
mov ah,0eh
mov bl,7
int 10h ;используем функцию BIOS
jmp cicle_print
end_print:
popad
popf
ret ;конец процедуры вывода
error:
mov si,errorstring
call printf
dead_cicle_mbr:
jmp dead_cicle_mbr
errorstring db 'error',0ah,0dh,0
считываем сканкод , проверяем - если знак (буква , число , знак препинания), то записываем ; если сканкод="энтер" , то выходим из цикла.
{
i db 0
command:
mov ah,10h
int 16h
cmp al,0Dh
jz en
mov [title + si],al
inc si
mov ah,09h
mov bx,0004h
mov cx,1
int 10h
jmp command
en:
}
{
mov di,0
lab:
mov ah,10h
int 16h
cmp al,0Dh
jz e
mov [title+di],al
add di,1
jmp lab
e:
}
Как сделать, чтобы можно было много раз ее использовать?
процедуры прекрасно многоразово используются . смысла в макросах не вижу .
обратите внимание на имена меток у меня и сравните со своими .
Если ТС йо##утый на голову то тут ничего не поможет.
mov si,0
cod@:
mov ah,10h
int 16h
cmp al,0Dh
jz en@
cmp ah,0Eh
jz bs@
mov [strAl+si],al
mov ah,0eh
mov al,[strAl+si]
int 10h
inc si
jmp cod@
en@:
ret
bs@:
mov [strAl + si],0
dec dl
int 10h
mov ah,0ah
mov al,' '
int 10h
cmp si,0
jz cod@
dec si
jmp cod@
macro clrkbd
{
mov di,0
.repeat
mov [strAl+di],0
inc di
.until di=256
}
macro input s
{
call read
mov si,0
.repeat
mov al,[strAl+si]
mov [s+si],al
inc si
.until al=0
clrkbd
}
strAl db 256 dup(0)