Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб июн 24, 2017 9:55 am

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




Начать новую тему  Ответить на тему  [ 137 сообщений ]  На страницу Пред. 16 7 8 9 10 След.
Автор Сообщение
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Сб ноя 29, 2014 2:28 am 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Пн окт 19, 2009 10:58 am
Сообщения: 329
У меня этот код работает. Ищи проблему в другом месте. Или выкладывай весь исходник.


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Сб ноя 29, 2014 2:33 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
punk_joker
Приведенный кусок кода правильный, однако есть вероятность что в части кода, который отсутствует, что то неправильно, так что без полной портянки ответ дать не могу. Также я не вижу каким способом ты получил данные находящиеся в EAX, после чтения корневой директории. Возможно проблема как раз в этом.

З.Ы. Просьба в следующий раз применять тег CODE для цитируемых кусков кода, иначе форматирование сбивается и труднее воспринимать.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Сб ноя 29, 2014 3:03 am 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1057
Вот весь набор исходников. Процедура GetDisk из tmpdisk.asm


Вложения:
Tmpdisk.7z [19.39 КБ]
58 скачиваний

_________________
я лишь учусь
Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Сб ноя 29, 2014 4:57 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
punk_joker
Ну, так правильно - сам же затер root_pach, когда запустил процедуру convert. В результате читается дефолтный накопитель, а это в текущей системе рамдиск - как раз 75.

З.Ы. В таких непонятных ситуациях полезно бывает на доску выводить еще и сам путь. Ситуация, когда одни данные затирают другие, когда они на одном общем куске памяти находятся, вполне частая вещь.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 03, 2014 5:51 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1057
получил список устройств через Ф70.1, посмотрел в отладчике, все нормально. Допустим в eax, адрес по которому лежит имя устройства. Как вывести на доску отладки?

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Ср дек 03, 2014 5:57 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Сб окт 05, 2013 9:32 pm
Сообщения: 385
mov edx, eax
call debug_outstr


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Ср дек 03, 2014 6:09 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
punk_joker
Лучше сразу переходи на FDO. Там более удобные макросы.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 17, 2014 1:17 am 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1057
В eax лежит адрес строки с именем устройства ( получено ф70.1) Мне надо узнать, является ли первая буква имени буквой t.
Пишу:
cmp eax, 't'
jnz @f
print '1'
@@:
какието действия

но в результате выполнения ничего не выводится (т.е. 1 не печатается на доску), всегда перескакивает на метку, хотя должно быть одно совпадение.

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Ср дек 17, 2014 1:39 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
punk_joker
Цитата:
лежит адрес строки

Код:
cmp [eax], byte 't'

Ты точно на Юрова не потратил время.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Сб янв 17, 2015 11:44 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1057
Подскажите как работает следующая инструкция:
rep movsb

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re:
СообщениеДобавлено: Вс янв 18, 2015 12:20 am 
Не в сети
Аватара пользователя

Зарегистрирован: Чт ноя 27, 2014 1:24 am
Сообщения: 72
punk_joker писал(а):
Подскажите как работает следующая инструкция:
rep movsb

Данная инструкция побайтово копирует блок памяти, который начинается с адреса ds:esi в блок памяти по адресу es:edi, размер блока находится в ecx (количество байт). Это общая суть того, для чего эта инструкция обычно используется.

Если более подробно, то сначала стоит рассмотреть, что делает команда movsb без префикса rep:

1) Берет байт по адресу ds:esi и записывает его по адресу es:edi.
2) Смотрит на флаг DF (Direction flag), если флаг установлен в 0 (инструкцией cld), то значения в регистрах esi и edi увеличиваются на 1. Если DF=1 (установить DF в 1 можно инструкцией std), то значения в esi и edi уменьшаются на 1. То есть, с помощью DF=1 можно копировать байты, начиная с конца (esi и edi в этом случае указывают на конец блоков и двигаются в сторону уменьшения адресов).

Префикс rep заставляет процессор выполнить инструкцию movsb то количество раз, которое указано в ecx (то есть образуется цикл). При каждом выполнении ecx уменьшается на 1 и цикл останавливается, когда ecx становится равен 0.

Еще есть аналогичные инструкции movsw и movsd, которые копируют по 2 и 4 байта за раз. esi и edi при этом тоже увеличиваются/уменьшаются на 2 или 4, по очевидным причинам.

С точки зрения прикладных программ на регистры ds и es можно не обращать особого внимания, так как обычно ими заведует ОС.

Данный пост может содержать неточности/неправильные формулировки, автор ответственности не несет :)
Но в целом, кажется, я описал все довольно подробно и без фактических ошибок.


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Вт фев 03, 2015 12:36 am 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1057
Имеется массив координат кнопок по х и у
pos_x db 13, 13, 13, 83
pos_y db 60, 85, 110, 60
(кнопок на самом деле 12)
Размеры скажем 60 по х, 20 по у
так вот, как првильней всего будет их создать?
)

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Вт фев 03, 2015 7:31 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн июл 25, 2011 6:22 pm
Сообщения: 93
punk_joker писал(а):
Имеется массив координат кнопок по х и у
pos_x db 13, 13, 13, 83
pos_y db 60, 85, 110, 60
(кнопок на самом деле 12)
Размеры скажем 60 по х, 20 по у
так вот, как првильней всего будет их создать?
)

Как факт, последовательно, при условие, что окна без наложения друг на друга.

_________________
Программист не тот, кто постоянно пишет КОД, а тот кто сможет понять чужой КОД!!!


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Ср фев 04, 2015 4:57 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Сб окт 05, 2013 9:32 pm
Сообщения: 385
Я так понял, это сетка кнопок 4*3, тогда лучше не массивом, а циклом
http://pastebin.com/7xWNLYCq
Код:
macro cmpe a, b, c {
  cmp   a, b
  je    c
}

macro cmpne a, b, c {
  cmp   a, b
  jne   c
}

  mov   eax, 8
  mov   edx, 0x10 ; номер
  mov   edi, 13 ; x
  mov   esi, 60 ; y

.loop_start:
  mcall , <edi, 32>, <esi, 16>

  inc   edx
  add   edi, 70
  cmpne edi, 293, @f  ;; if x === 13 + 70 * 4
  mov   edi, 13
  add   esi, 25
  cmpe  esi, 135, .loop_end ;; if y === 60 + 25 * 3
@@:
  jmp   .loop_start
.loop_end:

писал на коленке, так что может не работать, но суть уловить можно


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 04, 2015 5:08 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1057
Спасибо. Хватит и этого.

_________________
я лишь учусь


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 137 сообщений ]  На страницу Пред. 16 7 8 9 10 След.

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


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

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


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

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