Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
hakc
1 / 1 / 1
Регистрация: 30.01.2014
Сообщений: 22
1

Считывание со стандартного ввода и вывод в унарной системе счисления

15.01.2016, 19:17. Просмотров 803. Ответов 5
Метки нет (Все метки)

Всем привет. Получил несколько заданий - написать программу/программы на ассемблере NASM. Ранее никогда с этим не сталкивался, с помощью литературы не могу начать, не хватает знаний . Помогите пожалуйста, покажите как будет выглядеть данное задание в выполненном, в конечном виде? С остальными думаю разберусь сам. Спасибо!

Задание

Написать программу на ассемблере NASM, которая посимвольно считывает со стандартного ввода целое число и печатает его на стандартный вывод в унарной системе счисления с использованием символа ‘*’. При появлении на стандартном вводе символа отличного от цифры вывести результат и завершить работу программы. Если число не было введено, то считать, что ввели нуль
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2016, 19:17
Ответы с готовыми решениями:

Вывод числа в девятиричной системе счисления
Ребят,прошу помощи,как переделать этот код,чтобы был вывод девятиричного числа...

программа ввода с клавиатуры двух цифр в десятичной системе счисления, вычисления их произведения и вывода двоичного представления на экран
Доброго времени суток Вам! Народ! помогите написать программу на языке...

Ввести число в 10-чной системе счисления, вывести его на экран в 16-чной системе счисления
Вывести на экран число представляющие в 16-чной системе счисления. Число...

Ввод символа и вывод его ASCII-кода в заданной системе счисления
Здравствуйте у меня возникла проблема мне нужно реализовать программу которая...

Вывод значения регистра флагов в двоичной системе счисления без использования прерывной DOS и BIOS
Завтра экзамен, препод оказался очень добрым и выдал билет за день, что бы...

5
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
5309 / 1470 / 313
Регистрация: 29.07.2014
Сообщений: 2,513
Записей в блоге: 5
15.01.2016, 20:57 4
Вот тебе под-DOS:

Код
ENTER DIGIT: 192
UNAR RESULT..

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||||
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
ORG 100h
JMP start
 
mess0  DB  13,10,'ENTER DIGIT: $'
mess1  DB  13,10,'UNAR RESULT..',13,10,10,'$'
 
start:
   MOV   AH,9            ;
   MOV   DX,mess0        ;
   INT   21h             ;
 
   XOR   CX,CX           ; сбрасываем счётчик унарных единиц
   MOV   BX,10           ; система счисления для ввода
NextDigit:               ;
   MOV   AH,1            ; ввод с эхо средствами DOS
   INT   21h             ;
   CMP   AL,13           ; это ENTER?
   JE    Stop            ; да - выходим!
   CMP   AL,'0'          ; меньше нуля?
   JB    Stop            ;
   CMP   AL,'9'          ; больше девяти?
   JA    Stop            ;
   AND   AX,0Fh          ; переводим символ в цифру
   XCHG  AX,CX           ; меняем последнее и ранее/введёное число
   XOR   DX,DX           ; взводим флаги нуля и чётности
   MUL   BX              ; умножаем AX на BX. Результат в АХ
   ADD   CX,AX           ; прибавляем его к CX. Теперь в CX введёное число
   JMP   NextDigit       ; следующий символ..
Stop:
 
   MOV   AH,9            ;
   MOV   DX,mess1        ;
   INT   21h             ;
   MOV   AL,'|'          ; символ унарной единицы (замени на '*')
print:                   ; в СХ у нас кол-во повторов для цикла
   INT   29h             ; выводим СХ-раз символ на экран
   LOOP  print           ;
 
exit:
   XOR   AX,AX           ; выход!
   INT   16h
   INT   20h
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___
Автор FAQ
13304 / 6377 / 629
Регистрация: 11.11.2010
Сообщений: 11,536
16.01.2016, 08:38 6
Цитата Сообщение от hakc Посмотреть сообщение
Не прошу их делать за меня, но буду крайне рад

Не по теме:

R71MT,
я об этом уже предупреждал... Дашь лизнуть палец -- откусят руку по плечо:rtfm:

1
16.01.2016, 08:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2016, 08:38

Решить уравнение в двоичной системе счисления и в шестнадцатеричной системе
Добрый вечер! Написать программу на ассемблере для решения вот такого...

Ввод числа в троичной системе и вывод в пятиричной системе
Доброго времени суток форумчане. В университете дали задание, ввести число в...

Сложить 2 числа в 16 ой системе счисления
Срочно спасайте) экзамен 5 ый час идет X dd 1234h678h Y dd 23149123h Z dd ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru