⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 string.s

📁 Intel x86处理器的汇编器
💻 S
字号:
.text//------------------------------------------// unsigned int str_len(const char *s)////     return value://     unsigned int: the length of strings//-----------------------------------------.global str_lenstr_len:	xor %eax, %eax	movl 4(%esp), %edxloop:	movb (%edx), %bl	inc %eax	inc %edx	test %bl,%bl	jnz loop	dec %eax	ret//-------------------------------------// char get_char(const char *s)// // return value:// 	   char: get char of string[ith]//--------------------------------------.global get_charget_char:	movl 4(%esp), %edx	movl 8(%esp), %ecx		loop1:	movb (%edx), %al	test %al, %al	jz out	inc %edx	dec %ecx	test %ecx, %ecx	jnz loop1out:	ret//----------------------------------//  int str_ch(const char *d, char c)//// return: 0: no found//	value: found & postion;//---------------------------.global str_chstr_ch:	xor %eax, %eax	movl 4(%esp), %edx	movl 8(%esp), %ecxloop2:	inc  %eax	movb (%edx), %bl	test %bl, %bl	jz out1	inc %edx	cmpb %bl, %cl	jnz loop2	jmp out2out1:	xor %eax, %eaxout2:	ret//--------------------------------------------------------------//     unsigned int str_str(const char *dest, const char* source)////    reture value://               0:    no found//    unsigned int:    found & get postion//--------------------------------------------------------------.global str_strstr_str:	movl 4(%esp), %edi	movl 8(%esp), %esi	// set tmp var	sub $8, %esp	movl %edi, 4(%esp)		movl %esi, (%esp)	mov $1, %eaxloop3:	mov %esi, %ebx	mov %edi, %edx	inc %esi	inc %edi	movb (%ebx), %cl//-----------// found & no found	test %cl,%cl	jz result		cmpb $0, (%edx)	jz no		//-----------	cmpb (%edx), %cl	jz loop3		yes:	incl 4(%esp)	movl 4(%esp), %edi	movl (%esp), %esi	inc %eax	jmp loop3no:	xor %eax, %eaxresult:	add $8, %esp	ret//----------------------------// ungisgned get_c_sum(char *s, char c)//// return char c sum in string s////------------------------------------.global get_c_sumget_c_sum:	movl 4(%esp), %edx	movb 8(%esp), %bl	xor %eax, %eax		test %edx, %edx	jz out_get_cloop_get_c:		inc %edx	movb -1(%edx), %cl	test %cl, %cl	jz out_get_c	cmp %bl, %cl	jnz loop_get_c	inc %eax	jmp loop_get_c	out_get_c:	ret////--------------------------.global get_pcget_pc:	call nextnext:	pop %eax	ret//-----------------------------------------.global dump_banrydump_banry:	push %ebp	mov %esp, %ebp	movl 8(%ebp), %edx	movb 12(%ebp), %al	movl $9, %ecxloop5:	dec %ecx	jz out5	shl $1, %al	jc onezero: 	movb $48, (%edx)	inc %edx	jmp loop5one:		movb  $49, (%edx)	inc %edx	jmp loop5out5:	pop %ebp	ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -