我编写了一个单独的程序只是为了弄清楚如何做到这一点,之前我在要打印的数字中添加了 48,但现在当我得到大于 9 的数字时,它就不再足够了。
因此,下面的程序应该将 23 放入 my temp,将 23 与 10 进行比较,如果它小于 10,我可以打印,否则将 temp 放入 rax,将 10 放入 r11 并将 23 除以 10。
将 rax 的结果放入 temp 中并再次检查。
我仍然需要添加一种方法来检索较早的数字,但首先要做的就是。
我是否误解了发生的事情,我得到的结果是浮点数错误
#include <stdio.h> #Inkludera standard I/O
.data #Specifiera data
temp: .quad 0
temp2: .quad 0
.text
.global main
main:
movq $23, temp
jmp check
check:
cmpq $10, $temp
jl under10
movq $temp, %rax
movq $10, %r11
divq %r11
movq %rax,temp
jmp check
under10:
addq $48, temp
movq $temp,%rdi
call puts
当你这样做时divq %r11
你实际上是在划分 128 位寄存器对rdx:rax
by r11
。所以要得到一个适合的商rax
你通常会想要清除rdx
在除法之前,即在divq
,添加:
xorq %rdx, %rdx # rdx = 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)