對於娛樂,我正在學習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: