2014-11-05 6 views
1

Итак, я работаю над сборкой, и я тестирую некоторые вещи, прежде чем прыгать прямо во что-то промежуточное.
То, что я пытаюсь сделать: Пользователь вводит число 0 или 1. Вывод - это номер и любой символ, с которого начинается число (O для одного или Z для нуля)
Таким образом, выход для 0 должен быть 0Z и выход для 1 должен быть равен 1O.
У меня проблемы, потому что он работает только для 1, он ничего не выводит для 0. Я уверен, что это очень простая ошибка, но если кто-нибудь сможет объяснить, в чем проблема, это было бы прекрасно.
Кроме того, если кто-нибудь начнет собирать ресурсы сборки, они хотели бы предложить мне это оценить. Я не мог найти, что мне особенно понравилосьОсновные наклейки и прыжки с нуля

  rdint %eax 
     irmovl $1, %ecx 
     irmovl $0, %edx 
     subl %ecx, %eax 
     je output1 
     addl %edx, %eax 
     je output0 
     halt 

output1: 
     irmovl $1, %ecx 
     wrint %ecx 
     irmovl $79, %ecx 
     wrch %ecx 
     halt 
output0: 
     irmovl $0, %ebx 
     wrint %ebx 
     irmovl $90, %ebx 
     wrch %ebx 
     halt 

благодаря

ответ

1

Так я понял, что я делаю неправильно. Мой синтаксис в subl был неправильным, потому что порядок регистров был неправильным. Который был действительно запутанным томом, как почему они были бы в таком порядке. В любом случае, в случае, если кто-то борется с сборочный я шел через этот учебник прошлый час и его помочь http://www.tutorialspoint.com/assembly_programming/ (все еще ищет других, потому что это не так легко читаются, как хотелось бы)
ошибка:

subl %ecx, %eax