Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2014, 00:24   #1
Equality
Новичок
Джуниор
 
Регистрация: 04.03.2014
Сообщений: 1
Печаль Turbo Assembler/Перевод десятичного числа в двоичное

Добрый вечер! Помогите пожалуйста с решением следующей задачи:

необходимо написать программу для перевода ASCII-цепочки (числа) в двоичное число, используя схему умножения предыдущего результата на 10 и добавления к нему двоичного значения очередной цифры.

Как я понимаю, для перевода числа в двоичное число необходимо использовать корректировку AAD (ASCII Adjust before Division) − ASCII коррекция АХ перед делением.

Не получается осилить, был бы очень благодарен за помощь.

То, что есть сейчас (естественно, не верное):

PHP код:
TITLE ASC TO BIN

STACK_SEG SEGMENT
    DW    32 DUP
(0)
STACK_SEG ENDS

DATA_SEG SEGMENT

PARA_LIST LABEL BYTE
    MAX_LEN DB 6                
;макс длина строки
    ACT_LEN DB 
?                ;к-во введенных символов
    NAME_DATA DB 6 DUP
('$')        ;Введеные символы
    
OTSTUP DB 0DH
0AH'$'            ;Перевод строки и возврат курсора

BINVALUE DW 0
'$'                ;Результат
MULTFACT DW 1                    
;Множитель

DATA_SEG ENDS

CODE_SEG SEGMENT
    .386
    ASSUME CS
:CODE_SEGDS:DATA_SEGSS:STACK_SEG
    
MAIN


    
MOV AXDATA_SEG
    MOV DS
AX
    
    MOV AH
0AH
    MOV DX
OFFSET PARA_LIST        ;Ввод данных с клавиатуры
    INT 21H
    
    MOV CX
5                        ;Загрузить в СХ длину строки
    MOV SI
OFFSET NAME_DATA+4        ;Перейти к младшему разряду
    
L10
:

    
MOV AL, [SI]                    ;Поместить в АЛ значение по адресу
    
AND AX000FH                    ;Обнулить всекроме младшего разряда
    
    MUL MULTFACT                    
;Умножить содержимое на АХ
    ADD BINVALUE
AX                ;Добавить к нему второе число и сохранить в Бинвелью
    
    MOV AX
MULTFACT                ;Определить следующий множитель
    IMUL AX
10
    MOV MULTFACT
AX
    DEC SI
    
    LOOP L10
    
    MOV AH
09H
    MOV DX
OFFSET OTSTUP            ;Перевод строки
    INT 21H
    
    MOV AH
09H
    MOV DX
OFFSET BINVALUE            ;Вывести значение Бинвелью
    INT 21H
    
    MOV AX
4C00H                    ;Завершить работу программы
    INT 21H
    
CODE_SEG ENDS
         END MAIN 
Equality вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод числа из десятичного представления в двоичное на Си Kastet14 Помощь студентам 11 29.04.2016 16:49
С: перевод десятичного в двоичное и обратно NataPl Общие вопросы C/C++ 1 08.10.2013 14:57
Перевод десятичного числа в двоичное. Не могу найти ошибку. Че Гевара Общие вопросы C/C++ 5 30.12.2012 02:13
Перевод из натурального десятичного числа в двоичное представление(string) Berserk0 Помощь студентам 3 17.06.2011 00:52
C++. Перевод десятичного числа в двоичное Panterka Помощь студентам 15 12.12.2007 15:04