nasm astrrchr函数 x86
2024-08-30 07:05:49
xxx.asm
%define p1 ebp+8
%define p2 ebp+12
%define p3 ebp+16
section .text
global dllmain
export astrrchr
dllmain:
mov eax,1
ret 12
;------------------------------------------------;
; 扫描字符串以查找字符的最后一次出现。
;------------------------------------------------;
astrrchr:
push ebp
mov ebp,esp
push ebx
mov ecx,[p1] ; const char *str
mov eax,[p2] ; int c
.for:
mov dl,[ecx]
test dl,dl
jz .return
cmp dl,al
jne .next
mov ebx,ecx
.next:
inc ecx
jmp .for
.return:
mov eax,ebx
pop ebx
mov esp,ebp
pop ebp
ret 8
c++:
#include <iostream>
#include <Windows.h>
#include <tchar.h>
#include <string>
typedef int (CALLBACK* astrrchr_t)(const char* str, int c);
astrrchr_t astrrchr;
int main()
{
HMODULE myDLL = LoadLibraryA("xxx.dll");
astrrchr = (astrrchr_t)GetProcAddress(myDLL, "astrrchr");
printf("%s\n", strrchr( "hello world", "o"[0])); // orld
printf("%s\n", astrrchr("hello world", "o"[0])); // orld
printf("%s\n", strrchr( "hello world", "l"[0])); // ld
printf("%s\n", astrrchr("hello world", "l"[0])); // ld
return 0;
}
最新文章
- canvas快速绘制圆形、三角形、矩形、多边形
- java学习笔记六——数组
- Asp.Net Web API 2第十七课——Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)
- IOS网络编请求响应之URL结构
- Gym 100801D	Distribution in Metagonia (数学思维题)
- 从UnitedStack OS 1.0 Preview试用申请问卷调查学习OpenStack
- C++ Code_animateCtrl
- uva11292贪心基础题目
- 数据结构与算法--KMP算法查找子字符串
- 学习Ajax
- redis资料收集
- OSM数据下载地址
- Flask信号和wtforms
- newCachedThreadPool 的使用
- 我发起并创立了一个 C 语言编译器 开源项目 InnerC
- Web应用:当文件超过100KB,无法上传,有种原因你想象不到
- What&#39;s New In Zeebe: Scaling Zeebe, New Client APIs, Faster Requests, Timestamps, NodeJS Client, and Default Topic is Back!
- effective c++ 笔记 (49-52)
- php-fpm配置文件
- C++中运算符的优先级