汇编工具理解

当百度读取键盘敲入字符等得到的代码,譬如如下

bash 复制代码
section .data
    input_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 不支持其语法

bash 复制代码
as -32 3.s -o 3.o

nasm可支持

bash 复制代码
nasm -f elf32 -o 3.o 3.s

但ld时无法链接到C库函数

bash 复制代码
ld -m elf_i386 -o 3 3.o -lc -verbose

gcc 编一个32位程序也会因为stdio.h内部缺失导致编译失败

ld可链接32位程序可运行,前提不引用其他

编译64位及链接方法

bash 复制代码
as -g -o scastest.o scastest.s

ld -o scastest scastest.o -lc -I /lib64/ld-linux-x86-64.so.2

参考

第25部分- Linux x86 64位汇编 字符串扫描 | 码农家园

相关推荐
肖无疾9 小时前
在CE自动汇编里调用lua函数
汇编·lua·ce
冬瓜3122 天前
汇编点灯练习
汇编·arm
矮油0_o3 天前
30天开发操作系统 第 10 天 -- 叠加处理
开发语言·汇编·数据结构·c++·算法·操作系统
一品人家3 天前
win32汇编环境下,对话框程序中生成listview列表控件,点击标题栏自动排序的示例
汇编·windows·microsoft
一品人家4 天前
win32汇编环境下,提取对话框程序中,listview列表控件里的内容示例
汇编·microsoft
一品人家4 天前
win32汇编环境下,双击窗口程序内生成的listview列表控件的某行,并提取其内容的示例程序
汇编
代码巨匠4 天前
汇编指令总结、练习、C与汇编混合使用
汇编
Crossoads4 天前
【汇编语言】外中断(二)—— 键盘的奥秘:编写自己的 int 9 中断例程
android·开发语言·javascript·网络·汇编·机器学习·计算机外设
あjdc5 天前
基于汇编实现 hook objc_msgSend,统计方法耗时的方案
汇编·macos·ios·objective-c·cocoa
雪碧透心凉_5 天前
8086汇编(16位汇编)学习笔记03.汇编指令
汇编·笔记·学习