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

谢谢

4

1 回答 1

1

所以我弄清楚我做错了什么。我在 subl 上的语法是错误的,因为寄存器的顺序是错误的。这真的让我很困惑,为什么他们会按这个顺序排列它们。无论如何,以防其他人在组装方面苦苦挣扎,我在过去的一个小时里一直在阅读本教程及其帮助http://www.tutorialspoint.com/assembly_programming/(仍在寻找其他人,因为它不像我想的那样可读像)
错误:

    subl %ecx, %eax
于 2014-11-05T22:47:37.293 回答