|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.06.2015, 12:08 | #1 |
Новичок
Джуниор
Регистрация: 04.06.2015
Сообщений: 2
|
Программа для перевода чисел
Здравствуйте друзья
Помогите с программой Нужно написать программу на языке ассемблер Я должен буду ввести число в 2системе а программа должна перевести число в 16 систему |
04.06.2015, 17:11 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
первое. определитесь, какой именно Ассемблер нужен. Они очень разные!
второе. с точки зрения программы, вводить в неё надо не число, в 2-й системе счисления, а СТРОКУ, представляющую собой запись числа в двоичной системе счисления. третье. на форуме поиском можно найти а) как ввести строку б) как вывести числовое значение в 16-ном виде. Вам останется дописать простенький цикл по переводу строки в целочисленное значение и собрать всё в единый код. профит! |
04.06.2015, 21:44 | #3 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
GorinichYa, а хде твой код?!
Для решения твой задачи, процедура преобразования заключается в следующем: 1. Отнимаеш от каждого/введённого символа 30h и сохраняеш все цифры в памяти. 2. Начиная с последнего байта, обрабатываеш массив справа-налево. 3. Умножаеш цифры на 1,2,4,8,16,32,64,128 и т.д., по-ходу складывая результаты. Посмотри на пример ниже: Код:
Нашедшего выход - затаптывают первым..
|
05.06.2015, 01:17 | #4 |
Пользователь
Регистрация: 30.03.2015
Сообщений: 17
|
ничего сложно, могу выкинуть исходник
двочн--десят--шестин система, есть минусы, нули впереди не урезает до минимума, а так норм, будешь копать ? |
05.06.2015, 06:14 | #5 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
..вот как это выглядит на FASM'e (без обработки ошибок ввода):
Код:
Нашедшего выход - затаптывают первым..
|
05.06.2015, 08:52 | #6 |
Пользователь
Регистрация: 30.03.2015
Сообщений: 17
|
R71MT
а где настройка DI перед циклом в начале ? |
05.06.2015, 09:11 | #7 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
..зачем? SI и DI и так по-нулям при загрузке, а с каждым "стосбом" DI увеливается на 1.
Как цикл закончится - DI хранит длинну строки +1, при чтении из памяти просто передаём это значение в SI. Как-то так...
Нашедшего выход - затаптывают первым..
|
05.06.2015, 10:19 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
R71MT, кстати, у этой задачи есть и более короткое решение.
не обязательно переводить строку в число. можно воспользоваться свойством, что все системы счисления, которые представляют собой одно и то же число в разных степенях (в данном случае это число 2, двоичная - это 2 в первой, шестнадцатеричная - это 2 в четвертой), поэтому можно брать строку, представляющую двоичное число, отсчитывать по четыре символа и менять на один символ, представляющий одну шестнадцатеричную цифру. Преимущество - можно переводить числа практически НЕОГРАНИЧЕННОЙ значности (ну, например, 100-значное двоичное число ) |
05.06.2015, 10:57 | #9 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
..точно! Говорят-же: век-живи, век-учись..
Спасибо, учту эту особенность...
Нашедшего выход - затаптывают первым..
|
05.06.2015, 20:45 | #10 | |
Форумчанин
Регистрация: 16.01.2011
Сообщений: 325
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа перевода арабских чисел в римские с++ | Дана188 | Помощь студентам | 1 | 19.03.2015 10:28 |
Программа перевода чисел. | super3994 | C# (си шарп) | 6 | 20.04.2012 19:13 |
Программа перевода чисел | super3994 | Фриланс | 2 | 20.04.2012 17:47 |
Программа перевода чисел с плавающей запятой | Veselyn | Помощь студентам | 4 | 03.01.2010 19:49 |
паскаль,программа для перевода чисел из 10-ой системы счисления в другую до10-ой | Nikitaunett | Помощь студентам | 4 | 28.11.2009 20:06 |