做折线图网站2023年8月疫情爆发
当百度读取键盘敲入字符等得到的代码,譬如如下
section .datainput_buffer db 1 ; 保存输入字符的变量section .text
global _start_start:mov eax, 3 ; 设置文件描述符为0 (stdin)xor ebx, ebx ; 清空ebx寄存器mov edx, 1 ; 要读取的字节数lea ecx, [input_buffer] ; 目标地址int 0x80 ; 调用系统调用cmp al, -1 ; 判断是否成功读取了字符jz exit ; 如果返回值为-1则表示没有更多字符可供读取,结束程序; 这里可以对读取到的字符进行处理; ...exit:mov eax, 1 ; 设置系统调用号为1 (exit)xor ebx, ebx ; 清空ebx寄存器int 0x80 ; 调用系统调用
as 不支持其语法
as -32 3.s -o 3.o
nasm可支持
nasm -f elf32 -o 3.o 3.s
但ld时无法链接到C库函数
ld -m elf_i386 -o 3 3.o -lc -verbose
gcc 编一个32位程序也会因为stdio.h内部缺失导致编译失败
ld可链接32位程序可运行,前提不引用其他
编译64位及链接方法
as -g -o scastest.o scastest.sld -o scastest scastest.o -lc -I /lib64/ld-linux-x86-64.so.2
参考
第25部分- Linux x86 64位汇编 字符串扫描 | 码农家园