20.03.2019, 15:24 [+3 UTC]
в нашей команде: 3 475 чел. | участники онлайн: 6 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.72 (17.03.2019)
JS-v.1.33 | CSS-v.3.35

Общие новости:
09.03.2019, 10:08

Форум:
18.03.2019, 16:49

Последний вопрос:
19.03.2019, 15:15
Всего: 149055

Последний ответ:
20.03.2019, 15:13
Всего: 258006

Последняя рассылка:
20.03.2019, 15:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
08.01.2012, 17:30 »
Данилов Артем Владимирович
Большое спасибо за ответ, думаю ваш совет мне поможет. [вопрос № 185115, ответ № 269497]
02.03.2019, 12:12 »
dar777
Это самое лучшее решение! [вопрос № 194819, ответ № 277564]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 744
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 473
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 144

Перейти к консультации №:
 

Консультация онлайн # 142441
Раздел: • Assembler
Автор вопроса: Alena De Lon
Отправлена: 27.08.2008, 23:43
Поступило ответов: 1

Здравствуйте, Уважаемые Эксперты!!! Нужна Ваша помощь. Пытаюсь решить вот такую задачку: «Написать программу преобразования в двоичную форму упакованного четырехразрядного двоично-десятичного числа (введенного с клавиатуры) и вывода результата преобразования на экран в двоичном виде».
Я тут пыталась что-то сотворить, но почему-то в отладчике вроде все получается и программа выдает верный результат, а просто при запуске программы на экране появляется огромное кол-во 0 и 1. В общем, скажите, ПОЖАЛУЙСТА, правильно ли я решаю эту задачу? А если можно как-то более грамотно ее решить, то покажите, ПОЖАЛУЙСТА, как.

Приложение:

Состояние: Консультация закрыта

Ответ # 228056 от Airyashov

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

.model tiny
.code
org 100h ;

begin:
mov ah,0ah
mov dx,offset buffer
int 21h
;======================
inc dx
mov di,dx
mov bl,[di] ; bl - ДЛИНА-кол-во введенных символов
mov [di],ah ; dlina=ah ????? эта строка непонятна зачем?
xor bh,bh ; bh:=0
inc di ; di:=di+1, теперь di содержит адрес начала строки text
;=====================
xor ax,ax

m:
mov ax,[di]
and ax,000fh ; Очистить зону тройки? какой тройки? выделить цифру из первого символа, если введена цифра (символ)!!!

;===============================
mov bx,2 ; количество введенных символов потеряли!!!
xor cx,cx ; Количество цифр???? cx=0
;
isDiv:
xor dx,dx
div bx ;
push dx ;
inc cx
or ax,ax ; в цифре 4 бита всегда возможно нули тоже нужно будет вывести?
jnz isDiv

isOut:
pop ax ; Восстанавливаем цифру
or ax,30h ; Переводим её в символ
int 29h ; Выводим
loop isOut
inc di
inc si ; какое начальное занчение si было до этого кода?
cmp si,4; почему именно 4?
jne m
mov ah,10h
int 16h
;***********************************************************************
int 20h
;======================
buffer db 5 ; не правильно определен буфер требуется +1 байт для символа конца строки -> 5,0(сколько реально ввели символов),5 dup ()
text db 5 dup () ;
end begin


Консультировал: Airyashov
Дата отправки: 28.08.2008, 08:32

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 142441
неизвестный

# 1

= общий = | 28.08.2008, 18:18

Спасибо! Теперь ясно.
Вот только скажите, ПОЖАЛУЙСТА, а как Вы узнали, что сама программа не обнуляет si?
И почему отладчик обнуляет, а сама программа нет?

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 2

= общий = | 01.09.2008, 15:04 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Позвольте мне объяснить...
То, что "сама программа не обнуляет si", видно из текста Вашей программы.
Обнулить может "кто-то" после загрузки, но до запуска программы.
Например, досовский загрузчик программ. Но он, увы, этого не делает! Ну вот так он написан!
Никто не обязывал обнулять регистры, вот и не делает этого!
Программа должна сама беспокоиться о начальном содержимом необходимых регистров.
Можно в качестве упражнения написать программку, которая выводит на экран содержимое
всех регистров на экран после загрузки программы.
Вот отладчики, они обычно обнуляют все остальные регистры...Так вот повелось...

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

неизвестный

# 3

= общий = | 01.09.2008, 19:51

Большое СПАСИБО, Игорь Витальевич!!! smile

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.15949 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.72 от 17.03.2019
Версия JS: 1.33 | Версия CSS: 3.35