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

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

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

Чемпионы рейтинга экспертов в этой рассылке

Лысков Игорь Витальевич
Статус: Младший модератор
Рейтинг: 302
∙ повысить рейтинг >>
Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 224
∙ повысить рейтинг >>
_Ayl_
Статус: 4-й класс
Рейтинг: 178
∙ повысить рейтинг >>

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

Выпуск № 1222 от 08.06.2009, 10:35
Администратор рассылки: Лысков Игорь Витальевич, Младший модератор
В рассылке: подписчиков - 424, экспертов - 58
В номере: вопросов - 4, ответов - 5

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

Вопрос № 168758: Доброго времени суток! Каким образом в FASMе 1) получить Текущую дату на компьютере. 2) получить разность дат Текущей и на начало года программа под Windows код типа mov ah,2Ah int 21h не ...


Вопрос № 168767: Здравствуйте уважаемые эксперты, помогите пожалуйста решить задачу по ассемблеру: Ввести строку символов. Удалить знаки препинания в строке, если они там есть....
Вопрос № 168788: Уважаемые эксперты, помогите решить такую задачу Ввести с клавиатуры строку. Посчитать количество слов в строке. Определить, что является разделителем слов. Вывести результаты на экран. Заранее благодарю....
Вопрос № 168838: Сегмент данный определен след. образом .data perem_1 dd 0 str db 'abcdefgh' perem_2 dw 2387h ............. что будет занесено в регистр al командами mov bx,offset str mov al,[bx+4]...

Вопрос № 168758:

Доброго времени суток!
Каким образом в FASMе
1) получить Текущую дату на компьютере.
2) получить разность дат Текущей и на начало года
программа под Windows
код типа mov ah,2Ah
int 21h
не работает.

Есть в Kernel32.dll функция CurrentDateTimeString но она без точки входа

Может кто поделится полным справочником функций API?
Буду очень признателен.

Отправлен: 02.06.2009, 12:41
Вопрос задал: Игорь К., Студент
Всего ответов: 1
Страница вопроса >>


Отвечает Лысков Игорь Витальевич, Младший модератор :
Здравствуйте, Игорь К..
1) Есть функция GetLocalTime(LPSYSTEMTIME lpSystemTime) (в терминах С)
Параметром у нее адрес вот такой структуры (опять же, в терминах С):
Код:
typedef struct _SYSTEMTIME {
WORD wYear; //год
WORD wMonth; //месяц (с 1)
WORD wDayOfWeek; //день недели (воскресенье 0)
WORD wDay; //день месяца
WORD wHour; //часы
WORD wMinute; //минуты
WORD wSecond; //секунды
WORD wMilliseconds; //милисекунды
} SYSTEMTIME;

int 21h можно было еще использовать только с 16-битными windows 3.1 :)
Для 32- и более - только через вызовы функций
2) Стандартной функции такой нет, но несложно написать самому:
Складываем число дней по месяцам до текущего, вот и будет разнос ть дат
Не забываем про високосные года!
3)Лично я пользуюсь MSDN - самый полный и лучший справочник :) Украина, Кировоград
ICQ # 234137952
Mail.ru-агент: igorlyskov@mail.ru

-----
Удачи!

Ответ отправил: Лысков Игорь Витальевич, Младший модератор
Ответ отправлен: 02.06.2009, 13:37

Оценка ответа: 5
Комментарий к оценке:
Великолепно! В памяти данные имеются, остальное дело техники

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 250257 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!



    Вопрос № 168767:

    Здравствуйте уважаемые эксперты, помогите пожалуйста решить задачу по ассемблеру:
    Ввести строку символов. Удалить знаки препинания в строке, если они там есть.

    Отправлен: 02.06.2009, 13:56
    Вопрос задал: sergey_nesterov, Посетитель
    Всего ответов: 2
    Страница вопроса >>


    Отвечает _Ayl_, 4-й класс :
    Здравствуйте, sergey_nesterov!

    См. Приложение

    Ответ неверный
    Синтаксические ошибки:
    1)При записи непосредственного операнда в память нужно указывать его размер директивой BYTE PTR(mov [ di ], '$');
    2)В программах не рекомендуется использовать зарезервированные слова в качестве имен переменных(str db);
    3)Неверный операнд в строке(end.).

    Алгоритмические ошибки:
    1)Лишняя команда: прочитав длину введенной строки строковой командой lodsb, Вы автоматически увеличели индексный регистр si, ещё раз его увеличиваете командой inc si, т.е. Вы не анализируете первый символ введенной строки.
    2) Использование команды xchg di, bx. Команда repne scasb автоматически увеличивает индексный регистр di и при повторном сканировании Вы начнете проверять с того места где закончили предыдущее. Это приведет к тому что повторный знак препинания не будет обнаружен, а также произойдет выход за пределы строки str.

    Ошибки компоновки:
    1)Неуказана точка входа( и директива org 100h) или дире ктива .startup. Это приведет к тому, что программа LINK выдаст ошибку неверная точка входа.

    Правильный ответ смотрите ниже.
    -----
    ∙ Отредактировал: Зенченко Константин Николаевич, Модератор
    ∙ Дата редактирования: 03.06.2009, 16:43 (время московское)

    Приложение:

    Ответ отправил: _Ayl_, 4-й класс
    Ответ отправлен: 02.06.2009, 14:38

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 250262 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает Лысков Игорь Витальевич, Младший модератор :
    Здравствуйте, sergey_nesterov.
    Программа с подробными комментариями, реализующая Вашу задачу, в приложении.
    Удачи!

    Приложение:
    Украина, Кировоград
    ICQ # 234137952
    Mail.ru-агент: igorlyskov@mail.ru

    -----
    Удачи!

    Ответ отправил: Лысков Игорь Витальевич, Младший модератор
    Ответ отправлен: 02.06.2009, 14:41

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 250263 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!



    Вопрос № 168788:

    Уважаемые эксперты, помогите решить такую задачу
    Ввести с клавиатуры строку. Посчитать количество слов в строке. Определить, что является разделителем слов. Вывести результаты на экран.
    Заранее благодарю.

    Отправлен: 02.06.2009, 18:04
    Вопрос задал: Rejif, Посетитель
    Всего ответов: 1
    Страница вопроса >>


    Отвечает Лысков Игорь Витальевич, Младший модератор :
    Здравствуйте, Rejif.
    Программа в приложении считает слова и определяет все возможные разделители
    Определяем символы, которые могут быть частью слова (лат, рус, цифры)
    Все остальные - разделители

    Приложение:
    Украина, Кировоград
    ICQ # 234137952
    Mail.ru-агент: igorlyskov@mail.ru

    -----
    Удачи!

    Ответ отправил: Лысков Игорь Витальевич, Младший модератор
    Ответ отправлен: 08.06.2009, 03:48

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 250605 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!



    Вопрос № 168838:

    Сегмент данный определен след. образом
    .data
    perem_1 dd 0
    str db 'abcdefgh'
    perem_2 dw 2387h
    .............
    что будет занесено в регистр al командами
    mov bx,offset str
    mov al,[bx+4]

    Отправлен: 03.06.2009, 09:06
    Вопрос задал: Мохнач Никита Павлович, Посетитель
    Всего ответов: 1
    Страница вопроса >>


    Отвечает Лысков Игорь Витальевич, Младший модератор :
    Здравствуйте, Мохнач Никита Павлович.
    Командой mov bx,offset str заносим в bx адрес строки str
    Команда mov al,[bx+4] заносит в al байт из памяти по адресу [bx]+4,
    т.е. пятый байт (если байты считаем с 1) строки str, т.о. al='e'
    Удачи! Украина, Кировоград
    ICQ # 234137952
    Mail.ru-агент: igorlyskov@mail.ru

    -----
    Удачи!

    Ответ отправил: Лысков Игорь Витальевич, Младший модератор
    Ответ отправлен: 03.06.2009, 10:31

    Оценка ответа: 5

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 250304 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!



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

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

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.0 beta от 24.05.2009

    В избранное