Всем привет!
До последнего не хотел никого просить о помощи, но...
В общем проблема в следующем:
Я так сказать очень долго занимался сексом с
одним алгоритмом, но ассемблер для меня язык новый,
и по этому я прошу мне помочь. Суть алгоритма в
следующем:
Необходимо загрузить в память файл, сканировать
его до символов с кодом 10 и 13, и всю последовательность
байт до этих символов вывести на экран. Затем далее сканировать
от предыдущих символов переноса строки до следующих, сново
вывести на экран, то бишь вывести текстовый файл на
экран.
Я естественно предварительно попытался сам построить
такой алгоритм, но ассемблер не C++, наделал кучу
ошибок, и сейчас завис в воздухе.
Если у кого-то есть свободная минутка и желание
мне помоч, буду очень благодарен. Заранее спасибо.
Помощь начинающему ассемблерщику
Глянь исходники TinyPad, функция loadfile. Если и после этого будут вопросы - ответим.
Mike.dld
Эх, тяжело разобратся мне в чужих исходниках.
Ничё не понял из этого. вопросы есть =)
Эх, тяжело разобратся мне в чужих исходниках.
Ничё не понял из этого. вопросы есть =)
Вот так вот... Никто мне помоч не хочет =(
Просто нужно написать не так мало кода.
ipr
Так как переводы строк бывают разные - устанавливай ESI на начало файла в памяти, CLD, потом LODSB, и сравнивай AL с нужными кодами. Встретил 10, 13 - значит конец строки (или почти - зависит от типа перевода строк - WIN, *NIX, MAC). Не встретил - ещё LODSB и т.д.
Так как переводы строк бывают разные - устанавливай ESI на начало файла в памяти, CLD, потом LODSB, и сравнивай AL с нужными кодами. Встретил 10, 13 - значит конец строки (или почти - зависит от типа перевода строк - WIN, *NIX, MAC). Не встретил - ещё LODSB и т.д.
Попробую... Если ещё вопросы будут, задавать можно?
Почему нет?
Прошу помощи, при написании программ не пользовался ранее макросами, стал разбирать простые программы и вот что обнаружил:
дистрибутив 0.5.2.0 от 12 декабря 2005. В исходниках в корне лежит файлик macros.inc, есть пример Exemple.asm
при компилировании fasm 1.64 (использую mcall) выдает ошибку
Вот кусок MACROS.INC
Ясно что конструкция не работает, может кто подскажет ?
Еще может у кого есть описание макросов для FASM на русском ?
дистрибутив 0.5.2.0 от 12 декабря 2005. В исходниках в корне лежит файлик macros.inc, есть пример Exemple.asm
при компилировании fasm 1.64 (использую mcall) выдает ошибку
Code: Select all
Exemple.asm[111]:
mcall 0, <200,200>, <200,50>, 0x02AABBCC
MACROS.INC [134] mcall[2]:
__mov ebx,b
error: invalid macro arguments
Code: Select all
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 на русском ?
Вот описание директив и макросов с http://WWW.WASM.RU:
http://mysoft.ucoz.ru/macros.zip
Программирование на языке Assembler в FASM:
http://mysoft.ucoz.ru/programning.zip
http://mysoft.ucoz.ru/macros.zip
Программирование на языке Assembler в FASM:
http://mysoft.ucoz.ru/programning.zip
<Lrz>
У тебя старый macros.inc, видимо (точнее, в архиве Колибри он старый). Замени __mov на это:
У тебя старый macros.inc, видимо (точнее, в архиве Колибри он старый). Замени __mov на это:
Code: Select all
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
}
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 ;там сразу обнуляем счетчик и сохраняем начало строки
; Допустим 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 ;там сразу обнуляем счетчик и сохраняем начало строки
<Lrz>
С macros.inc очень часто возникают проблемы. Одним программам нужен старый вариант, другим новый, третьим вообще еще чего-то.
По этому я обычно выкладываю вместе с приложением тот macros.inc, который ему нужен.
А для всех остальных можно использовать тот, который содержится в IMG образе.
mike.dld
Ты все время предлагаешь заменять отдельные куски. Не мог бы сделать универсальный вариант для существующей последней версии FASM, и было бы всем хорошо?
С macros.inc очень часто возникают проблемы. Одним программам нужен старый вариант, другим новый, третьим вообще еще чего-то.
По этому я обычно выкладываю вместе с приложением тот macros.inc, который ему нужен.
А для всех остальных можно использовать тот, который содержится в IMG образе.
mike.dld
Ты все время предлагаешь заменять отдельные куски. Не мог бы сделать универсальный вариант для существующей последней версии FASM, и было бы всем хорошо?
Изменения происходят в самих макросах из-за изменения их функциональности, а не из-за изменения версии FASM
mike.dld
Ну так мы никогда и не получим единую версию файла, все так и будем мучаться. Это все равно как велосипеду во время движения вставить палку между спиц - как минимум будет не очень приятно.
Ну так мы никогда и не получим единую версию файла, все так и будем мучаться. Это все равно как велосипеду во время движения вставить палку между спиц - как минимум будет не очень приятно.
Who is online
Users browsing this forum: No registered users and 16 guests