Срок выполнения:

Литература здесь (книги Пильщикова и Зубкова; из Зубкова пригодятся главы 2 и 11). Там же ссылка на документацию (англ.) ассемблера GNU (as).

Документация на команды (англ.): intel.zip intel-extra.zip amd.zip

В 64-разрядной версии Linux нужно установить 32-разрядную библиотеку Си для разработчика. В Ubuntu 14.04 это пакет libc6-dev-i386.
При сборке тогда нужно указывать, что нужен 32-разрядный код: gcc -m32 <файл.s>

В 32-разрядной версии собирайте без дополнительных ключей и пакетов: gcc <файл.s>

Проверить разрядность системы можно командой uname -m

В Windows поставьте msys+mingw или cygwin (32-битные, с компилятором gcc). Всё тоже самое: и msys, и cygwin дают строку bash.
Отличие в программе: все глобальные и внешние метки должны начинаться с подчёркивания (main → _main).

Примеры

Вывод строки: say.s

Вывод числа: write-int.s

Ввод числа: simple-read-int.s     read-write-int.s

Вызов из Си (для Linux): t.c

Факториал: int-fact.s

Задание

Составьте программу на ЯА (архитектура IA-32, синтаксис AT&T), решает задачу по варианту.
При умножении используйте только младшие 32 бита произведения.

Варианты, часть 1

Расчёт номера своего варианта см. на странице Успеваемость студентов.

0. (p – a) (p – b) / 2

1. (-b + d) / (2 a)

2. 2 / (k x + y)

3. k (a – b) / (c + d)

4. a b c / (a – 3)

 

  • Нет меток