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 ; на чтение состояния клавиатуры
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.