Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- char* removerng(char* s, char a, char b);
- int main(int argc, char** argv)
- {
- if(argc < 4)
- {
- printf("Too few input arguments (need 3)\n");
- return 1;
- }
- if(argc > 4)
- {
- printf("Excess arguments will be ignored.\n");
- }
- printf("%s - ", argv[1]);
- printf("%s\n", removerng(argv[1], *argv[2], *argv[3]));
- return 0;
- }
- ; char* removerng(char* s, char a, char b)
- ; removes (in place) characters from a to b in string s
- section .text
- global removerng
- removerng:
- ; prologue
- push ebp
- mov ebp, esp
- push ebx
- push esi
- push edi
- ; body
- mov eax, [ebp+8]; load string into return address
- mov esi, [ebp+8]; last char bhecked
- mov edi, [ebp+8]; last char placed
- loop:
- mov bh, [esi]; current char
- inc esi
- test bh, bh; test for end of string
- jz fin
- cmp bh, [ebp+12]
- jl keep
- cmp bh, [ebp+16]
- jg keep
- jmp loop
- keep:
- mov [edi], bh
- inc edi
- jmp loop
- fin:
- mov [edi], bh
- ;epilogue
- pop edi
- pop esi
- pop ebx
- mov esp, ebp
- pop ebp
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement