![]() |
|
![]() ![]() ![]() |
|
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: 2 Всего: 4 |
Пишу прогу в паскале, где основной код должен быть на асме. Вот столкнулся с проблемкой... (в чистом асме такой код работал)
|
|||
|
||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 7 Всего: 34 |
и че пишет?
-------------------- SST 465555 icq 200-512-712 |
|||
|
||||
De Gray |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 18.2.2005 Где: Регистрация? Репутация: нет Всего: 4 |
и че пишет?
Access violation -- ты из стека лезешь куда-то далеко в стек, что еще может писать. --------------------
Извяните, шо мы к вас за поможите обращаимси. |
|||
|
||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 7 Всего: 34 |
где там стек блин?
-------------------- SST 465555 icq 200-512-712 |
|||
|
||||
De Gray |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 18.2.2005 Где: Регистрация? Репутация: нет Всего: 4 |
name_for_pack по-твоему где?
--------------------
Извяните, шо мы к вас за поможите обращаимси. |
|||
|
||||
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: 2 Всего: 4 |
Пишет: ошибка синтаксиса, а если вместо "#0" поставить "0", то пишет "invalid register combination"
|
|||
|
||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 7 Всего: 34 |
De Gray
лучше промолчи если не компетентен в вопросе TP@MB@Y 1)а зачем делать mov bx,ax ? 2) попробуй так
-------------------- SST 465555 icq 200-512-712 |
|||
|
||||
Chingachguk |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Если переменная с именем файла в стеке, то лучше так и писать - ss:
mov ah,3fh mov bx,0 mov cx,80 lea dx,name_for_pack { ~ [bp+XXXX]} int 21h mov bx,ax mov byte ptr ss:[name_for_pack+bx],0h { здесь выдает ошибку } Вообще-то раз прокатила такая запись: mov dx,offset name_for_pack то скорее всего не в стеке, а сегменте данных. PS А вообще-то этот код содержит скрытую ошибку. При возврате следует проверять флаг CF командами jc/jnc, а в регистре ax вернется код ошибки, а не длина:
Это сообщение отредактировал(а) Chingachguk - 8.5.2005, 00:20 -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: 2 Всего: 4 |
oleg1973
Ваш вапиант не прошел Chingachguk Ваш вариант тоже не прошел Кстати, у меня этот асемблеровский код в процедуре и переменная там же описана. Пробовал писать этот код в "пустой" программе - работает. В чем проблема? |
|||
|
||||
Chingachguk |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Какой вариант не прошел ??????? Если вот этот не прошел:
То ты вообще не пытался понять, что я там писал. А вот если такой вариант не прошел:
То это странно по меньшей мере. -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
||||||
|
|||||||
TP@MB@Y |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: 2 Всего: 4 |
Извините, но я только один увидел...
В каком смысле? Ну я понимаю что ss - это сегмент, [name_for_pack+bx] - содержимое по такомуто смещению, byte ptr - приводит указатель на слово к указателю на байт, чтобы можно было слову присвоить байтик. Что еще нужно было понять? =) Сам непойму в чем дело, но все заработало. Аномалия какая то! Chingachguk'у большое спасибо! и oleg1973 тоже =) Это сообщение отредактировал(а) TP@MB@Y - 8.5.2005, 15:16 |
||||||||
|
|||||||||
Chingachguk |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Ну ты же взял пример написания асм-кода откуда-то, верно ? Дело в том, что существет несколько форм записи команд со сложной адресацией - когда используется одновременно регистр и смещение: mov word ptr es:[bx+di+My_Variable],0ABCDh или: mov word ptr es:My_Variable[bx+di],0ABCDh Разницы никакой, но, видимо, паскаль кушает только второй вариант. Плюс конкретизация "word ptr" в некоторых ассемблерах обязательна, а вот fasm к примеру пытается сам догадаться, в чем дело. А про "подумать" я имел в виду "проявить упорство". -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: 2 Всего: 4 |
Chingachguk
Все понял ![]() |
|||
|
||||
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: 2 Всего: 4 |
Столкнулся с еще однорй проблемкой
![]()
Как правильно указывать смещение констант? |
|||
|
||||
Chingachguk |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Это ты сделал не константу, а определение. Так и пиши:
const MyString: string[16]='test.txt'+#0; ... -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: 2 Всего: 4 |
Chingachguk Спасибо! Теперь работает.
Мне уже неловко спрашивать, но я попытаюсь ![]() Я из области DTA копирую имя файла в переменную:
Пробовал различные комбинации, все равно ругается. Что опять не так? |
|||
|
||||
Chingachguk |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
эээ, нельзя память-память, только если строчные операции movs.
Используй al: mov al,es:[bx+si] mov name[si],al inc si loop xxx -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: 2 Всего: 4 |
Chingachguk В который раз СПАСИБО!
![]() Дописал прогу - компилиться без ошибок. Завтро тестить буду а щас спать =)) |
|||
|
||||
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: 2 Всего: 4 |
Что то с файлами какая то ерунда получается... Написал для теста прогу, которая копирует один файл в другой - не пашет
Выдает четвертую ошибку. Почему? Файл существует и открыт на запись. Проверял ax = 6, т.е. "ошибочный логический номер файла". Но как так? почему тогда не выдалась ERR2? PS токо что с ужасом осознал что у меня хард в NTFS и это может быть причиной... Или нет? Это сообщение отредактировал(а) TP@MB@Y - 15.5.2005, 16:02 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |