Архитектура ЭВМ

Отменен
Заказ
6294568
Раздел
Программирование
Предмет
Основы программирования
Антиплагиат
Не указан
Срок сдачи
27 Окт в 16:55
Цена
Договорная
Блокировка
10 дней
Размещен
15 Окт в 14:44
Просмотров
63
Описание работы

Здравствуйте! Дату сдачи заказа можно будет сдвинуть.


Задание №1.

Привести примеры эффективного использования следующих команд процессоров Intel-80x86 (5-6 примеров для команд с использованием различных методов адресации операндов и различной разрядности, 16,32,64 для целых, 64,80,32 для вещественных): 

Вариант 7) Трансцедентные операции сопроцессора f2xm1, fyl2x, fyl2xp1;


Задание №2.

"ЧИСЛА ХОФШТАДТЕРА" (Для всех вариантов).

Числа Хофштадтера похожи на числа Фибоначчи, но только в начале последовательности.

Первые два Q-числа это 1 и 1, каждое следующее,- сумма предыдущих, но их индексы вычисляются и зависят от предыдущих членов.

 Q-sequence:

  Q[1] = Q[2] = 1; Q[n] = Q[n-Q[n-1]] + Q[n-Q[n-2]] для n > 2.

Вот начало этой последовательности:

1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 6, 8, 8, 8, 10, 9, 10, 11, 11, 12, 12, 12, 12, 16, 14, 14, 16, 16, 16, 16, 20, 17, 17, 20, 21, 19, 20, 22, 21, 22, 23, 23, 24, 24, 24, 24, 24, 32, 24, 25, 30, 28, 26, 30, 30, 28, 32, 30, 32, 32, 32, 32, 40, 33, 31, 38, 35, 33, 39, 40, 37, 38, 40, 39...

Написать на nasm функцию, вычисляющую 64-разрядные числа Q, и вывести числа c 3000000 до 3000020-го.

Для вызова функции и вывода использовать программу на языке C.

Компиляция из командной строки: 

 nasm -felf64 qnumbers.asm

 gcc Q.c qnumbers.o -o qnumbers

В файле Q.c Вызвать Вашу функцию и вывести нужный диапазон чисел.

Запуск программы: ./qnumbers

Прототип - смотрите пример с числами Фибоначчи.

Пример вычисления 64-битных чисел Фибоначчи есть на интранетовском компьютере

(в сети ВВГУ) bkv.vvsu.ru или 5.100.98.127

в каталоге  /ftp/Архитектура ЭВМ/ASM_LINUX/C/

и в прилагаемом каталоге

"Пример с числами Фибоначчи (64 бит)"

 

Задание № 3.

"Будильник на основе часов реального времени ЭВМ (RTC)".

Непосредственной записью во внутренние регистры часов

реального времени (через порты 70h, 71h) запрограммировать

запуск будильника через заданный интервал времени.

Интервал вводится непосредственно в программе на языке Си

в формате "%x%x%x", т.е. в шестнадцатеричном виде.

(Часы, минуты, секунды). Затем вызывается ассемблерная

подпрограмма, в которой к текущему времени (как прочитать

текущее время есть в лекционных материалах) добавляется

указанный интервал. Далее производится опрос 5-го разряда

регистра C, до появления в нем единицы (текущее время

совпало со временем будильника). После этого выходим из

подпрограммы и выводим сообщение в вызывающей программе.

Для проверки программы ее нужно запускать с правами

root пользователя.

 

Примерный код программы на Си:

 

#include

extern unsigned char hour, min, sec, dh, dm, ds;

int main(int ac, char *av[])

{

 printf("Введите интервал времени в формате HH:MM:SS\n);

 scanf("%x%x%x",&dh,&dm,&ds);

 printf("Ждем события...\n");

 

 ala();

 

 printf("Current time %02x:%02x%02x\n",hour,min,sec);

 printf("Это время будильника!\n");

 return 0;

}

 

Переменные hour, min, sec, dh, dm, ds

должны быть описаны как global и объявлены в ассемблерном модуле.

Особое внимание обратите на арифметические действия со временем.

10:01:50 + 0:2:20 будет 10:04:10!

Правила переноса должны учитывать, что в одной минуте - 60 секунд, в одном часе - 60 минут, в сутках - 24 часа. Также учитывайте, что с BCD числами обычная арифметика не работает.

8h+8h в обычной арифметике - 10h, а должно быть 16h, например.

Нужна такая же работа?
  • Разместите заказ
  • Выберите исполнителя
  • Получите результат
Гарантия на работу 1 год
Средний балл 4.96
Стоимость Назначаете сами
Эксперт Выбираете сами
Уникальность работы от 70%
Следующий заказ
Нужна аналогичная работа?
Оформи быстрый заказ и узнай стоимость
Гарантированные бесплатные доработки
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Темы журнала
Показать ещё
Прямой эфир