hakc
1 / 1 / 1
Регистрация: 30.01.2014
Сообщений: 22
|
|
1 | |
Считывание со стандартного ввода и вывод в унарной системе счисления15.01.2016, 19:17. Просмотров 803. Ответов 5
Метки нет Все метки)
(
Всем привет. Получил несколько заданий - написать программу/программы на ассемблере NASM. Ранее никогда с этим не сталкивался, с помощью литературы не могу начать, не хватает знаний . Помогите пожалуйста, покажите как будет выглядеть данное задание в выполненном, в конечном виде? С остальными думаю разберусь сам. Спасибо!
0
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
15.01.2016, 19:17 |
Ответы с готовыми решениями:
5
Вывод числа в девятиричной системе счисления программа ввода с клавиатуры двух цифр в десятичной системе счисления, вычисления их произведения и вывода двоичного представления на экран Ввести число в 10-чной системе счисления, вывести его на экран в 16-чной системе счисления Ввод символа и вывод его ASCII-кода в заданной системе счисления Вывод значения регистра флагов в двоичной системе счисления без использования прерывной DOS и BIOS |
shmkv
1749 / 431 / 59
Регистрация: 21.07.2015
Сообщений: 1,127
|
|
15.01.2016, 20:21 | 2 |
Под какую ОС должна быть программа?
0
|
hakc
1 / 1 / 1
Регистрация: 30.01.2014
Сообщений: 22
|
|
15.01.2016, 20:49 [ТС] | 3 |
shmkv, под Linux.. Ниразу в глаза не видел эту ОС, поэтому, наверное, у меня такие проблемы с ассемблером..
0
|
R71MT
|
||||||
15.01.2016, 20:57 | 4 | |||||
Вот тебе под-DOS:
Код
ENTER DIGIT: 192 UNAR RESULT.. |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
1
|
hakc
1 / 1 / 1
Регистрация: 30.01.2014
Сообщений: 22
|
|
15.01.2016, 21:22 [ТС] | 5 |
R71MT, о-ёй.. многое мне еще изучить предстоит.. спасибо большое!
********** Вот полный текст задания: Кликните здесь для просмотра всего текста
Печать числа
Задание: написать программу на ассемблере NASM, которая посимвольно считывает со стандартного ввода целое число и печатает его на страндратный вывод в унарной системе счисления с использованием символа ‘*’. При появлении на стандартном вводе символа отличного от цифры вывести результат и завершить работу программы. Если числе не было введено, то считать, что ввели нуль. Указания к выполнению: для проверки условия о том, что символ является цифрой можно воспользоваться тем фактом, что ASCII коды цифр образуют непрерывный ряд от ‘0’ до ‘9’. Таким образом, проверку того, что символ является цифрой можно свести к проверке, что его ASCII код лежит в диапазоне от ‘0’ до ‘9’. Опишем алгоритм перевода последовательности цифр в целое число: 1. изначально положим результат равным нулю; 2. прочитаем следующий символ; 3. если символ не является цифрой, то напечатать ответ и выйти; 4. иначе умножим результат на 10 и прибавим к нему прочитанную цифру; 5. перейти к шагу 2. Рассмотрим работу алгоритма на примере входной последовательности ‘123’: 1. положим result := 0 2. прочитаем ‘1’ 3. result := 10*result + 1 ; result = 1 4. прочитаем ‘2’ 5. result := 10*result + 2 ; result = 12 6. прочитаем ‘3’ 6. прочитаем '3' 7. result := 10*result + 3 ; result = 123 8. конец ввода, выходим Чтобы перевести ASCII код цифрового символа в соответствующее ему число, следует вычесть из него код символа ‘0’. Требования: исходный код решения должен содержать в комментариях описание программы, автора, дату создания и необходимые пояснения. При оформлении исходного кода использовать однообразный стиль расстановки пустых строк и выравнивания строчек программы. В качестве имён меток следует использовать короткие понятные названия на английском языке. Программа должна корректно обрабатывать разные входные данные: корректное число, некорректное число, отсутсвие входных данных, большое число ( < 232). И еще парочка Кликните здесь для просмотра всего текста
Сумма чисел
Задание: написать на ассемблере NASM программу, которая читает со стандартного ввода два целых числа, раздeлённых пробелом, и печа- тает на стандартный поток вывода их сумму в десятичной системе счисления. В случае, если на стандартном вводе появляются иные символы кроме цифр и пробельных символов, то вывести сообщение об ошибке "ERROR" и завершить работу программы. Указания: для чтения чисел использовать результат первой работы. Для печати числа в десятичной системе счисления его необходимо предварительно перевести в строку цифр. Чтобы последовательно получить все цифры числа начиная с младшего разряда можно воспользоваться следующим алгоритмом: 1. Поместить в A число; 2. Вычислить остаток от деления А на 10; 3. Поместить в A частное от деления его на 10; 4. Перейти к шагу 2. Для печати цифр числа на экран, необходимо получить их ASCII код. Для этого можно прибавить к цифре код символа ‘0’. Для печати цифр в правильном порядке (от старшего разряда к младшему) их предварительно необходимо будет сохранить в оперативной памяти в обратном порядке, а затем вывести на экран по одному символу. Для выделения необходимого блока оперативной памяти можно использовать неинициализированную память из секции .bss. Кликните здесь для просмотра всего текста
Подпрограммы
Задание: оформить решение второй лабораторной работы с использованием подпрограмм. Результат должен включать в себя главную программу и две вспомогательные подпрограммы: ∙ ввод целого числа; ∙ вывод целого числа. В первой подпрограмме использовать для возврата результата регистр eax. Вторая подпрограмма должна принимать один целочисленный параметр — число, которое необходимо вывести. Передачу парамеров организовать через стек. Обе подпрограммы должны восстановить значения всех регистров, кроме eax для подпрограммы вывода числа, в то состояние, в котором они были до вызова. Для сохранения значений регистров (включая регистр флагов) использовать стек процессора. Для передачи параметров использовать соглашение по вызову подпрограмм, применяемое в языке C. Указания: для корректной работы подпрограммы вывода числа необходимо использовать локальную память для резервирования места под хранение цифр. В данной лабораторной работе не использовать секцию неинициализированных данных для выделения памяти. Размер каждого параметра программы по возможности стоит выравнивать по границе двойного слова (4 байта), поскольку функции по работе со стеком могут оперировать только кратными машинному слову объемами памяти. Для адресации параметров программы и локальных переменных исполь- зовать регистр ebp с предварительно сохраненным значением верхушки стека. Кликните здесь для просмотра всего текста
Системные вызовы
Задание: переписать результат лабораторной работы No 3 заменив все используемые макросы на системные вызовы. Разбить все решение на несколько файлов с исходным кодом по числу используемые подпрограмм. В результате в программе должны быть следующие файлы: 1. основная программа; 2. подпрограмма для чтения символа с клавиатуры; 3. подпрограмма для вывода символа на экран; 4. подпрограмма для чтения целого числа; 5. подпрограмма для печати целого числа; 6. подпрограмма для завершения работы. Не прошу их делать за меня, но буду крайне рад, если вы направите меня в нужную сторону ![]()
0
|
Mikl___
![]() 13304 / 6377 / 629
Регистрация: 11.11.2010
Сообщений: 11,536
|
|
16.01.2016, 08:38 | 6 |
Не по теме: R71MT,
1
|
16.01.2016, 08:38 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
16.01.2016, 08:38 |
Решить уравнение в двоичной системе счисления и в шестнадцатеричной системе
Сложить 2 числа в 16 ой системе счисления Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |