X86程序集IDIV和CQTO

时间:2016-11-05 01:15:41

标签: assembly 64-bit x86-64

我想实现这些功能: a=300; b=3000; b=b/a; print b;

我写这些汇编代码:

#include <stdio.h>
#include <lib.s>
.bss
a:  .long 128
b:  .long 128
c:  .double 64
zzz:    .long 128
.data

FINT:   .string "%d\n"
.text
.global main
main:
push    $300
pop a
push    $3000
pop b
push    b
push    a
pop %rbx
pop %rax
cqo
idivq   %rbx
push    %rax
pop b
push    b
pop %rsi
mov $FINT, %rdi
mov $0, %rax
call    printf
call exit

但它输出0,我无法理解这一点。它应该是10。 任何帮助都很感激!谢谢!

0 个答案:

没有答案