четверг, 23 января 2014 г.

Сдача "хвостов"

Дорогие студенты!  Я думаю, сдавая сессию, вы изрядно утомились. Поэтому смело переносим сдачу оставшихся долгов по курсу на начало следующего семестра (после 17 февраля).


четверг, 26 декабря 2013 г.

Зачет по учебному курсу

Уважаемые студенты!  Для получения зачета нужно:
  • Сдать индивидуальную задачу на циклы (С++)
  • Сдать индивидуальную задачу на массивы и строки (С++)
  • Сдать индивидуальную задачу на функции (С++)
  • Опубликовать на странице задачу на Java (см. условия на странице), которую до вас еще никто не публиковал (Java)
  • Сдать очно 2 простые задачи на ассемблере (ответив на вопросы по используемым командам) -см. задачи здесь. Обратите внимание, сейчас эти задачи общие, а после нового года станут индивидуальными.
Не разделите печальной судьбы Антошки:

понедельник, 23 декабря 2013 г.

Работа с компилятором MASM32

Желающим дальше продвигаться в изучении ассемблера нужно перейти к работе с компилятором MASM32 фирмы Microsoft, который можно скачать бесплатно

Необходимо помнить:
  • у программы на ассемблере есть жесткая структура: блок общих настроек, подключения библиотек, описания данных и т.д., см. примеры в папке masm32/bin/tutorial установленного на вашем компьютере ассемблера. Для начала копируйте эту структуру программы.
  • в ассемблере очень часто используются подпрограммы (нужно разобраться с оформлением, передачей данных)
  • в ассемблере безобразный ввод-вывод, с которым нужно также отдельно разбираться
  • чтобы отлаживать серьезные программы, нужно работать с отладчиком. Он сможет продемонстрировать покомандное выполнение программы, содержимое регистров. За простоту и интуитивную понятность хвалят отладчик ollydbg, который можно скачать бесплатно.

Некоторые пояснения работы с компилятором   MASM32 можно найти на рисунке:


пятница, 20 декабря 2013 г.

Решаем задачки на ассемблере

Задачи:
  1. Задать переменной а значение 12. Переместить ее значение в регистр EАX. Поместить в регистр EDX значение -а. Поменять местами значения регистров EАX и EDX. Выгрузить содержимое регистра EАX в пераменную а, содержимое регистра EDX в пераменную d. Распечатать значения переменных  a, d
  2. a=104, b=21, c=15. Найти значения a+b, a-b,  c-(a+b), 2*c+a-b (операцию умножения не используйте)
  3. Умножить 50000*(-100) с помощью команды imul  с тремя, двумя, одним операндом
  4. Найти значение выражения  (2*a-b)*(7+3*a*b), a=104, b=221, затем a=104h, b=221h в шестнадцатиричной системе, а затем получите тот же результат, выразив a,b в двоичной системе.
  5. Найти результат и остаток от деления 697:13 и проверить результат с помощью операций умножения, сложения  и вычитания
  6. Найти значение с: если  (a > 0 и| b > 0) c=a*b , иначе c=a+b;
  7. Найти значение с: если (2*a+b>b-a или b>a), то  c=a div b , иначе с=b mod a
  8. Найти сумму  натуральных чисел от 1 до 20 используя только переходы и с помощью команды управления циклом
  9. Найти наибольшее целое число без знака, квадрат которого занимает в памяти меньше 2 байт

Маленькая таблица команд ассемблера

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


понедельник, 16 декабря 2013 г.

Осваиваем ассемблер _ 1

Ассемблер для процессоров 80х86 Intel

Литературы - масса, например:
Список ресурсов для изучения Ассемблера http://habrahabr.ru/post/131971/
и еще
  • http://natalia.appmat.ru/c&c++/assembler.html
  • http://www.insidepro.com/kk/144r.shtml
  • http://lib.znate.ru/docs/index-56712.html
  • http://cs.mipt.ru/fileadmin/assembler/severov/2013/ начиная с http://cs.mipt.ru/fileadmin/assembler/severov/2013/05-mashinnyi___uroven_2.pdf
  • http://www.dialektika.com/PDF/978-5-8459-1197-1/part.pdf

Но лекции - лучше!

Изучаем примеры и решаем задачи: 
Осваиваем команды пересылки MOV, обмена XCHG, сложения и вычитания, умножения, деления.

Сначала используем ассемблерные вставки в Visual Studio, они позволяют  не обращать внимание на взаимодействие с ОС.


Полный сбор 17 декабря!!!

Java: Подводим итоги первых шагов на странице Java: покоренные вершины

17 декабря начинаем 3-й этап: знакомство с ассемблером.
Всё очень сложно и необычно. Не пропускать!

    lea EDX,b     
    mov a1,11h
    inc [EDX]
    mov eax,[EDX]
    add eax,a1
    mov c,eax