Мари Удаление космоса - PullRequest
       26

Мари Удаление космоса

0 голосов
/ 04 сентября 2018

Я новичок в Мари. Я создаю код Мари, который удалит «пробел» между элементами. Например. если это ~~FIT ~ 1047~~~, то будут удалены элементы ~~~~.

Может кто-нибудь взглянуть на мой код и направить меня?

Я понимаю, что когда он достигает HEX 020, он переходит в конец, когда должен удалить его и добавить следующие значения в строку.

Load NameAddr
Store TrimStringAddr
JnS TrimString
Halt

NameAddr, ADR Name
Name, HEX 052 / R <--- this is where you add your name
      HEX 061 / A
      HEX 06e / N
      HEX 061 / A
      HEX 020 / SPACE
      HEX 041 / A 
      HEX 074 / T
      HEX 069 / I
      HEX 06e / N
      HEX 064 / D
      HEX 065 / E
      HEX 072 / R
      HEX 000 / END

TrimStringAddr, HEX 0    / address of string to trim
TrimString,     HEX 0 
StartTrim, LoadI TrimStringAddr
           Output
           Subt B
           Skipcond 800
           Jump End
           Subt B
           Load TrimStringAddr
           Add A
           Store TrimStringAddr
           Jump StartTrim

End, Halt

B, HEX 020
A, HEX 001

загружается в сеть переменного тока. Тем не мение. Я получаю вывод RANA, когда я хочу получить RANAATINDER

1 Ответ

0 голосов
/ 29 ноября 2018

Вы печатаете вывод перед проверкой и завершаете программу, когда достигаете пробела.

Это можно исправить, проверив пробел перед использованием выходных данных, а затем с помощью ad-hoc IF, имея вторую опцию для циклического просмотра, которая печатает выходные данные следующим образом:

StartTrim, LoadI TrimStringAddr
       Subt B
       Skipcond 400 / If not zero will Jump to process output
       Jump IsLetter
       Subt B
Load TrimStringAddr
       Add A
       Store TrimStringAddr
       Jump StartTrim
IsLetter,   LoadI TrimStringAddr
        Skipcond 800 / Check when empty to finish
        Jump End
        Output
        Subt C
        Load TrimStringAddr
        Add A
        Store TrimStringAddr
        Jump StartTrim

Полный код:

Load NameAddr
Store TrimStringAddr
JnS TrimString

NameAddr, ADD Name
Name, HEX 052 / R 
      HEX 061 / A
      HEX 06e / N
      HEX 061 / A
      HEX 020 / SPACE
      HEX 041 / A 
      HEX 074 / T
      HEX 069 / I
      HEX 06e / N
      HEX 064 / D
      HEX 065 / E
      HEX 072 / R
      HEX 000 / END

TrimStringAddr, HEX 0    / address of string to trim
TrimString,     HEX 0 

StartTrim, LoadI TrimStringAddr
       Subt B
       Skipcond 400
       Jump IsLetter
       Subt B
Load TrimStringAddr
       Add A
       Store TrimStringAddr
       Jump StartTrim
IsLetter,   LoadI TrimStringAddr
        Skipcond 800 / Check when empty to finish
        Jump End
        Output
        Subt C
        Load TrimStringAddr
        Add A
        Store TrimStringAddr
        Jump StartTrim

End, Halt

B, HEX 020
A, HEX 001
C, HEX 040
...