Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прошу разъяснить принцип работы готовой программы. 
:(
    Опции темы
29demon
Дата 12.6.2013, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 12.6.2013

Репутация: нет
Всего: нет



Прошу разъяснить принцип работы программы. 
Программа преобразует 4-х разрядное двоичное число в шестнадцатeричное 


Код

Masm
model    small
stack    256
.data
msg1    db    0ah,0dh,"*Преобразование 4-х разрядного двоичного числа*$"
msg2    db    0ah,0dh,"Биты ¦3210¦ => H$"
msg3    db    0ah,0dh,"Ввод: $"
msg4    db    "  => $"
.code
.486
go:    mov ax,@data
    mov ds,ax
;Вывод заголовка программы
    mov ah,09h
    mov dx,offset msg1
    int 21h
    mov dx,offset msg2
    int 21h
    mov dx,offset msg3
    int 21h
;Ввод двоичного четырехразрядного числа
    mov cx,4
    xor dx,dx
cycle:
    mov ah,01h            
    int 21h            
    sub al,30h            
    shl dl,1            
    

add dl,al            
    loop cycle
;Вывод строки " => "
    push dx            
    mov ah,09h
    mov dx,offset msg4
    int 21h
    pop dx            
;Результат: двоичное число в регистре dl
;Вывод шестнадцатеричного числа на экран из dl
    cmp dl,10            
    jl  less
    add dl,37h            
    mov ah,02h
    int 21h
    jmp exit
less:    add dl,30h            
    mov ah,02h
    int 21h

exit:
    mov ax,4c00h
    int 21h
end go


PM MAIL   Вверх
LeonidPr
Дата 13.6.2013, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

Репутация: нет
Всего: 1



Принцип простой - вводятся 4 символа 0 или 1 (двоичное число), на лету вводимая строка преобразуется в двоичное представление в регистре DL. После этого полученное число сравнивается  с 10, если меньше, то к нему прибавляется код символа '0', если больше или равно то код символа 'A'-10. Полученный символ выводится на экран.

--------------------
pkunzip.zip
PM MAIL   Вверх
Maarriiaa
Дата 21.3.2014, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 21.3.2014

Репутация: нет
Всего: нет



здравствуйте. подскажите пожалуйста, в чем ошибка?
 вот программа, которая подсчитывает количество единиц в двоичной записи числа
 mov ax,1101
 start:
 mov dx,1 
 mov cx,2
 mrp:
 push ax
 and ax,1 
 cmp ax,1 ;сравниваем с 1
 jne msk ;переходим к мск если два числа не равны
 inc dx ;увеличиваем содержимое памяти на 1
 msk:
 pop ax
 shr ax,1 ; сдвигаем на 1 вправо
 loop mrp
 mov ax,1
 int 0x80
 но на выходе всегда 0 . Что не так?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0467 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.