;Установка флага E в 1
;Включение клавиатуры
RD #10
OUT 1

;Установка флага S в 1
;Посимвольный ввод
RD #103
OUT 1

;Очистка нужных переменных
RD #0
WR R0
WR R1
WR [50]

;Цикл ввода
M1:
  ;Проверка флага готовности Rd
  IN 2
  JZ M1

  ;Считывание символа в Acc
  IN 0

  ;Вычитаем код ASCI для числа 0
  SUB #48
  ;Если число отрицательное, то код ASCI - не цифра
  ;Ожидаем заного ввод числа
  JS M1

  ;Запись в R0 потенциальной цифры 0-9
  WR R0

  ;Вычитаем 10
  SUB #10
  ;Если полученное число >= 0, то код ASCI - не цифра
  JNS M1

  ;Чтение ячейки памяти в ОЗУ, куда записывается результат
  RD [50]
  ;Сдвигаем число на 1 разряд влево
  MUL #10
  ;Приписывание новой цифры справа
  ADD R0
  ;Запись нового числа в яп 50
  WR [50]

  ;Подсчёт разрядов числа
  RD R1
  ADD #1
  WR R1

  ;Если разрядов меньше 5, то продолжается ввод числа
  SUB #5
  JZ ENDING
  JMP M1

  ;Завершение программы
  ENDING: HLT
