对于娱乐,我正在学习GNU扩展程序集,使用带有32位Linux目标的x86的AT & T语法。我刚刚花了最后三个小时编码两个可能的解决方案,以交换两个整数变量a和b的值,我的解决方案都不能完全解决我的问题。首先,让我们来看看我的TODO障碍在一些细节: int main()
{
int a = 2, b = 1;
printf("a is %d, b is %d\n", a,
这是我的汇编程序add.s .globl add
add:
movl 4(%esp), %eax
movl 8(%esp), %ebx
addl %ebx, %eax
ret
这是我的C程序。我正试图从C程序中调用汇编程序。 #include <stdio.h>
int add(int a, int b);
int main() {
我尝试添加几个像素在一起,以便做罗嗦滤波器NASM。我已经设法添加三个像素,其值为00 + d3 + d8(0 + 211 + 216)。当我尝试添加一个像素,值为0时,程序无法打印变量blurr的值。 更新: 似乎增加了可变总和产品可在完成三次,因为如果我注释掉另一个add,该值将在我的输出文件打印。 blurrTopRow:
;from 0 - 251 there will be n
我以汇编(x86,linux)开始,只是为了好玩。这是我的第一个小程序,它只是检查,如果我通过一个参数通过命令行,如果没有它打印一个消息,它后退出: section .text
global _start
_start:
pop ebx ;argc
dec ebx
test ebx,1
jne print_string
exit: