![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 04.06.2015
Сообщений: 2
|
![]()
Здравствуйте друзья
Помогите с программой Нужно написать программу на языке ассемблер Я должен буду ввести число в 2системе а программа должна перевести число в 16 систему |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
первое. определитесь, какой именно Ассемблер нужен. Они очень разные!
второе. с точки зрения программы, вводить в неё надо не число, в 2-й системе счисления, а СТРОКУ, представляющую собой запись числа в двоичной системе счисления. третье. на форуме поиском можно найти а) как ввести строку б) как вывести числовое значение в 16-ном виде. Вам останется дописать простенький цикл по переводу строки в целочисленное значение и собрать всё в единый код. профит! |
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
GorinichYa, а хде твой код?!
Для решения твой задачи, процедура преобразования заключается в следующем: 1. Отнимаеш от каждого/введённого символа 30h и сохраняеш все цифры в памяти. 2. Начиная с последнего байта, обрабатываеш массив справа-налево. 3. Умножаеш цифры на 1,2,4,8,16,32,64,128 и т.д., по-ходу складывая результаты. Посмотри на пример ниже: Код:
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 30.03.2015
Сообщений: 17
|
![]()
ничего сложно, могу выкинуть исходник
двочн--десят--шестин система, есть минусы, нули впереди не урезает до минимума, а так норм, будешь копать ? |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
..вот как это выглядит на FASM'e (без обработки ошибок ввода):
Код:
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 30.03.2015
Сообщений: 17
|
![]()
R71MT
а где настройка DI перед циклом в начале ? |
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
..зачем? SI и DI и так по-нулям при загрузке, а с каждым "стосбом" DI увеливается на 1.
Как цикл закончится - DI хранит длинну строки +1, при чтении из памяти просто передаём это значение в SI. Как-то так...
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
R71MT, кстати, у этой задачи есть и более короткое решение.
не обязательно переводить строку в число. можно воспользоваться свойством, что все системы счисления, которые представляют собой одно и то же число в разных степенях (в данном случае это число 2, двоичная - это 2 в первой, шестнадцатеричная - это 2 в четвертой), поэтому можно брать строку, представляющую двоичное число, отсчитывать по четыре символа и менять на один символ, представляющий одну шестнадцатеричную цифру. Преимущество - можно переводить числа практически НЕОГРАНИЧЕННОЙ значности (ну, например, 100-значное двоичное число ![]() |
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
..точно! Говорят-же: век-живи, век-учись..
![]() Спасибо, учту эту особенность...
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#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 |