庄生晓梦

庄生晓梦迷蝴蝶

博客园 首页 新随笔 联系 订阅 管理
  164 随笔 :: 3 文章 :: 1 评论 :: 74038 阅读
http://qwop.iteye.com/blog/1958761
// lodsb.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <string.h>

/************************************************************************/
/* 载入串指令														    
/* LODS LODSB LODSW LODSD 例子	
/*  运行结果:														    
/*	bcdef
/*	g1
/*	2345
/************************************************************************/
int main(int argc, char* argv[])
{

	char	s[33] = "abcdefg123456789";
	char	lodsb_chars[ 10 ] = {0};
	char	ret[ 10 ]	= {0};
	short	vWORD		= 0;	// 备用载入 字 数据
	int		vDWORD		= 0;	// 备用载入 双字 数据

	__asm {
		xor eax,eax // 清空eax
		lea esi, s  // esi 指向数据 s

		mov ecx, 2 // 执行两次 lodsb
		// 载入串指令: LODSB、LODSW、LODSD ;将 ESI 指向的数据载入到 AL/AX/EAX, 执行后 ESI 自动变化
		rep lodsb // mov al byte ptr [esi]; esi = esi + sizeof( byte );  
		
		// 数据载入到al中
		mov lodsb_chars[ 0 ], al  // b
		
		lodsb 
		mov lodsb_chars[ 1 ], al  // c
		
		lodsb 
		mov lodsb_chars[ 2 ], al  // d
		
		lodsb 
		mov lodsb_chars[ 3 ], al  // e
		
		lodsb 
		mov lodsb_chars[ 4 ], al  // f
		
		lodsw // 载入串 字 指令
		mov vWORD,ax			  // g1
		
		lodsd // 载入串 双字 指令
		mov vDWORD,eax			  // 2345
	}
	
	printf( "%s\r\n", lodsb_chars );
	
	strncpy( ret, (char*) &vWORD, 2 ); // 将字符串 ps 中 2 个字符复制到字符串 ret 中。
	printf( "%s\r\n", ret );
	
	strncpy( ret, ( char* ) &vDWORD, 4 ); // 将字符串 ps 中 4 个字符复制到字符串 ret 中。
	printf( "%s\r\n", ret );

	getchar();
	return 0;
}



已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐



posted on   qwop  阅读(523)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示