我试图用Linux命令定义一个C语言的计算器,dc程序的结构并不那么重要,你需要知道我得到两个数字,我想在打字时划分它们/.因此,我将这两个数字发送到进行除法的汇编函数(参见下面的代码).但这仅适用于正数.
当输入999 3 /返回333是正确的,但在打字的时候-999 3 /,我得到了陌生号码1431655432,并输入两个负数时,像-999 -3 /任何两个负数每次我得到0.
程序集中的代码是:
section .text
global _div
_div:
push rbp ; Save caller state
mov rbp, rsp
mov rax, rdi ; Copy function args to registers: leftmost...
mov rbx, rsi ; Next argument...
cqo
idiv rbx ; divide 2 arguments
mov [rbp-8], rax
pop rbp ; Restore caller state
Run Code Online (Sandbox Code Playgroud)