Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Ср окт 24, 2018 8:26 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 25 сообщений ]  На страницу 1 2 След.
Автор Сообщение
СообщениеДобавлено: Чт май 19, 2005 12:30 am 
Всем привет!
До последнего не хотел никого просить о помощи, но...
В общем проблема в следующем:
Я так сказать очень долго занимался сексом с
одним алгоритмом, но ассемблер для меня язык новый,
и по этому я прошу мне помочь. Суть алгоритма в
следующем:
Необходимо загрузить в память файл, сканировать
его до символов с кодом 10 и 13, и всю последовательность
байт до этих символов вывести на экран. Затем далее сканировать
от предыдущих символов переноса строки до следующих, сново
вывести на экран, то бишь вывести текстовый файл на
экран.
Я естественно предварительно попытался сам построить
такой алгоритм, но ассемблер не C++, наделал кучу
ошибок, и сейчас завис в воздухе.
Если у кого-то есть свободная минутка и желание
мне помоч, буду очень благодарен. Заранее спасибо.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Чт май 19, 2005 12:38 am 
Не в сети
Site Founder
Аватара пользователя

Зарегистрирован: Вс авг 08, 2004 8:55 am
Сообщения: 689
Глянь исходники TinyPad, функция loadfile. Если и после этого будут вопросы - ответим.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Чт май 19, 2005 2:07 am 
Mike.dld
Эх, тяжело разобратся мне в чужих исходниках.
Ничё не понял из этого. вопросы есть =)


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пт май 20, 2005 3:53 am 
Вот так вот... Никто мне помоч не хочет =(


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пт май 20, 2005 7:20 am 
Просто нужно написать не так мало кода.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пт май 20, 2005 2:16 pm 
Не в сети
Site Founder
Аватара пользователя

Зарегистрирован: Вс авг 08, 2004 8:55 am
Сообщения: 689
ipr
Так как переводы строк бывают разные - устанавливай ESI на начало файла в памяти, CLD, потом LODSB, и сравнивай AL с нужными кодами. Встретил 10, 13 - значит конец строки (или почти - зависит от типа перевода строк - WIN, *NIX, MAC). Не встретил - ещё LODSB и т.д.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пт май 20, 2005 4:32 pm 
Попробую... Если ещё вопросы будут, задавать можно?


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пт май 20, 2005 8:16 pm 
Не в сети
Site Founder
Аватара пользователя

Зарегистрирован: Вс авг 08, 2004 8:55 am
Сообщения: 689
Почему нет?


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пт янв 20, 2006 11:16 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Прошу помощи, при написании программ не пользовался ранее макросами, стал разбирать простые программы и вот что обнаружил:
дистрибутив 0.5.2.0 от 12 декабря 2005. В исходниках в корне лежит файлик macros.inc, есть пример Exemple.asm
при компилировании fasm 1.64 (использую mcall) выдает ошибку
Код:
Exemple.asm[111]:
mcall 0, <200,200>, <200,50>, 0x02AABBCC
MACROS.INC [134] mcall[2]:
__mov ebx,b

error: invalid macro arguments

Вот кусок MACROS.INC
Код:

macro mcall a,b,c,d,e,f {   ; mike.dld
 __mov eax,a
 __mov ebx,b
 __mov ecx,c
 __mov edx,d
 __mov esi,e
 __mov edi,f
 int   0x40
}


Ясно что конструкция не работает, может кто подскажет ?

Еще может у кого есть описание макросов для FASM на русском ?


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Сб янв 21, 2006 5:50 am 
Не в сети

Зарегистрирован: Пт янв 06, 2006 6:05 am
Сообщения: 102
Вот описание директив и макросов с http://WWW.WASM.RU:
http://mysoft.ucoz.ru/macros.zip

Программирование на языке Assembler в FASM:
http://mysoft.ucoz.ru/programning.zip

_________________
Изображение


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Сб янв 21, 2006 9:16 am 
Не в сети
Site Founder
Аватара пользователя

Зарегистрирован: Вс авг 08, 2004 8:55 am
Сообщения: 689
<Lrz>
У тебя старый macros.inc, видимо (точнее, в архиве Колибри он старый). Замени __mov на это:
Код:
macro __mov reg,a,b {       ; mike.dld
 if (~a eq)&(~b eq)
   mpack reg,a,b
 else if (~a eq)&(b eq)
   mov reg,a
 end if
}


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Сб янв 21, 2006 11:58 am 
TO IPR может поможет... ну или хотябы какую-нибудь идею подкинет...

; Допустим esi начало массива строк
mov esi,stroka
; в ecx размер массива
mov ecx,[arrsize]

nextstring:
; ebp счетчик символов в строке
mov ebp,0

; в edi сохраним начало этой строки
mov edi,esi
nextchar:
cmp byte [esi],10
jne incchar
cmp byte [esi+1],13
jne incchar
jmp endstring
incchar:
inc esi ;след символ
inc ebp ;счетчик +1
dec ecx
jnz nextchar
jmp endstring ;конец массива
; когда конец строки найден или не найден вообще
; управление передается сюда
; в ebp длинна строки, в edi начало этой строки
endstring:

pushad
; ... тут выводим строку на экран переходим к сед. строке y+10 например
popad

jmp endstring ;там сразу обнуляем счетчик и сохраняем начало строки


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вс янв 22, 2006 1:28 pm 
<Lrz>
С macros.inc очень часто возникают проблемы. Одним программам нужен старый вариант, другим новый, третьим вообще еще чего-то.
По этому я обычно выкладываю вместе с приложением тот macros.inc, который ему нужен.
А для всех остальных можно использовать тот, который содержится в IMG образе.

mike.dld
Ты все время предлагаешь заменять отдельные куски. Не мог бы сделать универсальный вариант для существующей последней версии FASM, и было бы всем хорошо?


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вс янв 22, 2006 1:51 pm 
Не в сети
Site Founder
Аватара пользователя

Зарегистрирован: Вс авг 08, 2004 8:55 am
Сообщения: 689
Изменения происходят в самих макросах из-за изменения их функциональности, а не из-за изменения версии FASM


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вс янв 22, 2006 2:33 pm 
mike.dld
Ну так мы никогда и не получим единую версию файла, все так и будем мучаться. Это все равно как велосипеду во время движения вставить палку между спиц - как минимум будет не очень приятно.


Вернуться к началу
   
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 25 сообщений ]  На страницу 1 2 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB