2015-10-15 2 views
0

Как создать цикл, который позволяет вводить и хранить несколько входов в почтовых ящиках. У меня проблемы с хранением в разных почтовых ящиках. Программа остановится при вводе 000 или в почтовых ящиках больше места. Спасибо за помощь!Маленькие компьютерные петли человека

ответ

0

Вы не были совсем конкретными, и ответ был легко найден. Но вы можете это сделать.

LOOP INP 
    STA MAILBOX 
    BRA LOOP 
MAILBOX 000 
0

Если вы хотите написать в почтовый ящик при фиксированном адресе это легко: STA addr инструкция делает это. Если вы хотите написать динамический адрес, то это намного сложнее и требует самомодифицирующего кода.

Вот пример, который читает N из ввода, а затем читает N дополнительных номеров со входа и записывает их в адреса 50, 51, 52 и т. Д.

 INP 
    STA C 
L LDA C 
    BRZ C 
    SUB ONE 
    STA C 
    LDA T 
    ADD ONE 
    STA T 
    ADD STAOP 
    STA STAI 
    INP 
STAI DAT 
    BRA L 

C DAT 
ONE DAT 1 
STAOP DAT 300 
T DAT 49 

Обратите внимание на STAI DAT в середине коды: он переписывается с STA инструкции (с адресатом, хранящимся в T непосредственно перед казнят - LDA T; ADD STAOP; STA STAI загружает значение из T, добавляет 300, а затем сохраняет его в ячейке памяти STAI.

хитрость, как это почему ассемблер имеет плохую репутацию ремонтопригодности (хотя на современных процессорах, самомодифицирующийся код в этом стиле не используется много, если вообще).

Вы можете видеть, как он работает здесь: writing to multiple mailbox in LMC emulator

Смежные вопросы