学了很久的C++,现在回过头来学NASM汇编,感觉有些东西就很自然的符合逻辑了。
入门看的是这个链接 ,写的很厉害
section .data
;db是申请变量,有点类似于new,equ是别名,有点类似defien
text: db 'its my first asm program!' ;开辟一个数据段,存放字符串
text_len: equ $-text ;这个是计算text的buffer的长度,$是代表当前的地址,$减去$text的地址就得到了buffer的长度
;equ 有点类似#define那样,是一个别名
section .text
global _start
_start:
mov eax,4 ;调用unistd.h中的sys_write调用号
mov ebx,1 ;1表示标准输出
mov ecx,text ;填充第二个参数,buf
mov edx,text_len ;填充第三个参数, buf长度
int 80h ;填充完毕。调用软中断显示文字
mov eax,1 ;调用linux软中断,退出程序,返回代码为0x11(16),17(10)
mov ebx,text_len
int 80h
因篇幅问题不能全部显示,请点此查看更多更全内容