Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Помогите сократить код программы


Автор: powerfox 16.10.2006, 21:50
Привет! Очень нужна помощь. Есть программа на асме для базовой ЭВМ.
Код

Cla A (очистка аккамулятора А)
Add x
And z
MOV rez
Cla A
Add y
Sub rez
Mov rez
HLT


прикол в том, что можно работать только с А smile нельзя сразу прибавлять к пременным. Я уже мозги расплавил думая над тем, как это сделать.

Автор: rsm 17.10.2006, 13:21
Может так:
Код

cla A
add x
add y
neg z
add z
mov rez

или так:
Код

cla A
add z
neg A
add x
add y
mov rez

Или тоже нельзя? Не совсем понятна фраза "можно работать только с А".

Автор: powerfox 17.10.2006, 14:57
Цитата(rsm @  17.10.2006,  14:21 Найти цитируемый пост)
Может так:

К содажению, нет: команды neg нет среди возможных.
Цитата(rsm @  17.10.2006,  14:21 Найти цитируемый пост)
Или тоже нельзя? Не совсем понятна фраза "можно работать только с А"

Нельзя делать add x,y и т.п.

Кажется, придумал. Правда, разница всего в одну команду, хоть что-то - задание выполнено.
Код

Cla A
Add X
And Z
CMA A
INC A
Add Y
Mov Rez
HLT


Я отказался от SUB вместо этого получаю доп код числа x&z, делая инверсию и добавляя 1.
Может возможно короче? Сомневаюсь, но мало ли.

Автор: rsm 17.10.2006, 16:43
Цитата(powerfox @  17.10.2006,  16:57 Найти цитируемый пост)
Может возможно короче?

Нужен полный перечень команд, тогда можно думать как сократить код. А так долго будем шариться в потьмах - то одной команды не окажется, то другая не поддерживается...

Автор: powerfox 17.10.2006, 16:57
Вот скан описания команд.

Автор: rsm 17.10.2006, 18:46
Больше пока ничего не придумывается. Жаль что нет NEG.

Автор: powerfox 17.10.2006, 19:17
rsm, спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)