Консультация № 175157
12.12.2009, 12:46
0.00 руб.
0 5 1
Здравствуйте уважаемые эксперты! Помогите решить задание. 1 Ввод пятиразрядных чисел в ячейки ОЗУ. Программа должна обеспечить ввод последовательности ASCII-кодов десятичных цифр (не длиннее пяти), перекодировку в "8421", упаковку в десятичное число (первый введенный символ - старшая цифра) и размещение в ячейке ОЗУ. ASCII-коды не-цифр игнорировать

Приложение:
с помощью Compmodel

Обсуждение

давно
Посетитель
7438
7205
14.12.2009, 09:34
общий
Что понимается под 'перекодировкой в "8421"'?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
14.12.2009, 09:39
общий
Интересно, Вы считаете, что Compmodel - настолько популярная среда программирования,
что не надо давать ссылок на программу и описание?
Вы читали "Как задавать вопрос"? Все, что отличается от x86, требует дополнительной информации...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
14.12.2009, 13:40
общий
это ответ
Здравствуйте, Зотов Александр Петрович.
Решение без перекодировки в "8421" в приложении.

Приложение:
RD #0 ;сначала будет 0
wr R1 ;здесь будем накапливать наше число
RD #5 ;максимум 5 цифр
wr R5 ;сохраним
RDI #101 ;команда очистки буфера
out 1 ; для клавиатуры
RDI #102 ; команда сброса ошибки
out 1 ; для клавиатуры
RDI #10 ; команда разрешения МВУ
OUT 1 ; для клавиатуры без прерываний (по опросу)
RDI #103 ; команда установки посимвольного ввода
out 1 ; для клавиатуры
LOOP:IN 2 ; читаем регистр состояния клавиатуры
DIV #10 ; делим на 10, чтобы второй разряд готовности стал в первом разряде
WR R3 ; сохраним
DIV #2 ; разделим на 2
MUL #2 ; умножим на 2
SUB R3 ; отнимем сохранное
JZ LOOP ; если четное, то нет кода в буфере, идем на цикл
IN 0 ; считываем код с клавиатуры
wr R2 ; сохраним
jz SAVE ; было просто нажатие на "Завершить ввод"
sbi #48 ; <'0' ;проверим на цифру
js RESET ; игнорируем, на сброс клавиатуры
sbi #10 ; >'9'
jns RESET ; игнорируем, на сброс клавиатуры
adi #10 ;восстановим число 0-9
wr r2 ; сохраним
rd r1 ; наше число
mul #10 ; умножаем на 10
add r2 ; добавляем введенный символ
wr r1 ; и на сохранение
jrnz r5,RESET ; ждем максимум 5 цифр
SAVE:rd #100 ;адрес ячейки, куда запишем результат
wr r0 ; будем адресовать через R0
rd r1 ; введенное число
wr @r0 ; сохраняем в памяти
hlt ; останов
RESET:RDI #101 ; команда сброса
out 1 ; в клавиатуру
RDI #103 ; команда установки посимвольного ввода (сбрасывается при сбросе)
out 1 ; в клавиатуру
jmp LOOP ; на чтение состояния клавиатуры
3
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
14.12.2009, 13:46
общий
Эх, повезло Вам, что ранее до Вас задавали вопросы и просветили, что это за "зверь" такой - Compmodel...
Насчет перекодировки в "8421": если надо, то скажите, что это такое, подправлю.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
14.12.2009, 17:56
общий
Зотов Александр Петрович:
Простите великодушно, и чем не понравилось мое решение?...
Что ж, пусть оценка будет на Вашей совести...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа