Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Ассемблер? Это просто! Учимся программировать


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 998
от 17.03.2008, 23:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 357, Экспертов: 19
В номере:Вопросов: 2, Ответов: 2

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 126882: Здравствуйте, имеется следующее задание: Необходимо ввести в консоли с клавиатуры любое (не менее 3-х знаков) число и выполнить с ним любое арифметическое действие. Например прибавить 10 Имеется буфер buf db 100 dup (?) введеные символы ч...
Вопрос № 126906: Здравствуйте! У меня вопрос следующего характера: придумал себе следующую задачу: Сделать папку, в которой находится программа, скрытой. В моем примере это папка c:1pp -для начала воспользовался 47h-функцией, чтобы получить текущее ...

Вопрос № 126.882
Здравствуйте, имеется следующее задание: Необходимо ввести в консоли с клавиатуры любое (не менее 3-х знаков) число и выполнить с ним любое арифметическое действие. Например прибавить 10
Имеется буфер
buf db 100 dup (?)
введеные символы читаются через функцию
push 0 offset ilen 80 offset buf ihnd
call ReadConsoleA

Когда я buf переношу в eax:
mov eal, buf
И просто к ней добавляю например число 10
add eax, 10
То при выводе eax выводится не совсем то что должно получиться...
Подскажите как решить данную проблему?
Отправлен: 11.03.2008, 23:46
Вопрос задал: Pesick (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Pesick!
Необходимо преобразовать введенную числовую строку в число.
Например, так:
mov ecx,ilen ; длина введенной строки
jecxz ret_number ; проверим на пустую строку
xor edx,edx ; здесь будем накапливать сумму
xor eax,eax ; здесь будет очередной знак, для удобства обнулим старшие биты регистра
lea esi,buf ; адрес числовой строки
convert_num_loop:
lodsb ; прочитаем очередной знак
cmp al,'0' ; если встретится не цифра, то выходим с текущим значением
jb ret_number
cmp al,'9'
ja ret_number
sub al,'0' ; сделаем из символа число
imul edx,10 ; сдвигаем на один десятичный разряд
add edx,eax ; добавляем очередной разряд
loop convert_num_loop ; зацикливаем
ret_number:
mov eax,edx ; искомое число

---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 12.03.2008, 14:46
Оценка за ответ: 5


Вопрос № 126.906
Здравствуйте!
У меня вопрос следующего характера:
придумал себе следующую задачу:
Сделать папку, в которой находится программа, скрытой. В моем примере это папка c:1pp
-для начала воспользовался 47h-функцией, чтобы получить текущее оглавление.
На нулевой адрес мне вернулось 1pp c ASCII нулем на конце.
-потом воспользовался 43h-функцией, возвращается ошибка "путь не найден".
Т.е. такой путь как 1pp не нравится.
Хотя в справке сказано, что если диск и/или путь опущены, они принимаются по умолчанию.
Я так подумал, что диск задаю текущий (по умолчанию), а путь находится по нулевому адресу.
Уж больно так удобно. А так получается, что надо еще теперь определить букву диска.
Т.е. 19h-функция вернет нам цифру, согласно ей можно высчитать букву, и, в конце концов, загрузить полученный (полный) путь,
например, в переменную path (или на нулевой адрес). То, что у меня в примере закомментировано это естественно работает.
Кстати, я не сильно хулиганю, сохраняя на нулевой адрес?

И если можно второй вопрос:
В атрибуте файле, среди таких как «только чтение / спрятанный / и т.д.», есть метка тома. Что это такое? Это же по терминологии вроде бы как к диску относится, при чем здесь атрибут файла?

Приложение:

Отправлен: 12.03.2008, 09:30
Вопрос задал: Бартосик Феликс Михайлович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Бартосик Феликс Михайлович!
Давай подумаем, что получилось...
1)Мы находимся в папке 1pp
2)Затем пытаемся изменить атрибут папки 1pp.
Только вот вопрос: каков полный путь искомой папки?
Ответ: 1pp1pp !!! Так как функция "пляшет" от текущей папки...
Вот если бы параметром было 1pp !!!
Естественно, имеем результат - "путь не найден".

Вообще говоря, чтобы получить доступ к текущей папке, совсем необязательно
знать ее путь, достаточно указать для ф-и 43h путь '.'

Насчет хулиганства с PSP...
В ХР проблем никаких. А вот в чистом ДОС-е есть сомнения.
Я в свое время под буфер частенько использовал адресное пространство PSP, но только начиная с 80h...
Можно проверить, например, загрузив ДОС с дискеты. Оставляю для самостоятельной проверки :)

И, последнее, насчет атрибутов:
Дело в том, что для метки тома, имени файла, директории используется запись в директории
одного и тог о же формата. Отличаются только байтом атрибутов.
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 12.03.2008, 10:27
Оценка за ответ: 5
Комментарий оценки:
относительно текущей папки все понял - большое спасибо! Особенно понравилась идея с точкой - знал ведь, а выскочило из головы. С 47 функцией тоже понял - она возвращает "1\\pp", а нужен путь "\\1\\pp". Вот только с атрибутом "метка тома" все равно не понял, даже от "c:" возвращается атрибут 16h


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

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

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.72.5 от 17.03.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное