19.01.2018, 16:11
общий
это ответ
Здравствуйте, baker48!
Держите программу...
Выводимые строки необходимо после компиляции программы вручную записать по адресам 60 и 80 (в окне "Память")
Используются символы в кодировке ANSI, в десятичном представлении.
Сообщение "Сообщение 1" будет выглядеть, как последовательность (начиная с адреса 60)
209,238,238,225,249,229,237,232,229,32,49,0 ( 0- признак конца строки)
Второе сообщение "Сообщение 2" (начиная с адреса 80):
209,238,238,225,249,229,237,232,229,32,50,0
При желании, можете прописать любые строки...
[code lang=asm h=200]RDI #101 ;команда очистки буфера
out 1 ; для клавиатуры
RDI #102 ; команда сброса ошибки
out 1 ; для клавиатуры
RDI #10 ; команда разрешения МВУ
OUT 1 ; для клавиатуры без прерываний (по опросу)
RDI #103 ; команда установки посимвольного ввода
out 1 ; для клавиатуры
RD #101 ;команда очистки дисплея
OUT 11 ;в регистр CR
LOOP:IN 2 ; читаем регистр состояния клавиатуры
SBI #10 ; если состояние 10, то есть код, отняв 10, проверим на 0
JNZ LOOP ; если исходное состояние не 10, то нет кода в буфере, идем на цикл
IN 0 ; считываем код с клавиатуры
jnz CONTINUE
hlt ; было просто нажатие на "Завершить ввод", то завершаем программу
CONTINUE:
sbi #52 ; проверим на клавишу '4'
js RESET ; <'4' - игнорируем, на сброс клавиатуры
jz MESS_1 ; '4'
sbi #1
jz MESS_2 ;'5'
;все другие игнорируем и просто сбрасываем клавиатуру
RESET:RDI #101 ; команда сброса
out 1 ; в клавиатуру
RDI #103 ; команда установки посимвольного ввода (сбрасывается при сбросе)
out 1 ; в клавиатуру
jmp LOOP ; на чтение состояния клавиатуры
;подпрограммы вывода сообщений
MESS_1: RDI #60;адрес в памяти первого сообщения "Сообщение 1"
jmp PRINT
MESS_2: RDI #80 ;адрес в памяти второго сообщения "Сообщение 2"
PRINT: ;общая подпрограмма вывода
WR r0 ;адресуем строку символов при помощи r0
RD #101 ;команда очистки дисплея
OUT 11 ;в регистр CR
RD #11 ;разрешаем дисплей с автоинкрементом адреса
OUT 11 ;в регистр CR
MESS_LOOP: ;цикл вывода
RD @r0+ ;читаем очередной символ с автоинкрементом адреса r0
jz RESET ;код 0 - признак конца строки
OUT 10 ;символ на экран
jmp MESS_LOOP ;на повтор
[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен