Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %include "io.inc"
- section .data
- SIZE dd 99
- CL_SIZE dd 255
- count_letters times 256 dd 0
- stack times 100 dd 0
- temp times 100 dd 0
- SIZE_STR dd 7
- string db "abbbccdsdksdoskdsodksods"
- temp1 dd 0
- temp2 dd 0
- temp3 dd 0
- section .text
- global CMAIN
- initialize:
- mov al, [string + ecx * 1]
- PRINT_CHAR eax
- ;mov ebx, -1
- ;call count_ebx
- mov ebx, [count_letters + eax * 4]
- inc ebx
- mov [count_letters + eax * 4], ebx
- inc ecx
- cmp ecx,[SIZE_STR]
- jne initialize
- ret
- stack_print_up:
- mov ebx, [SIZE]
- sub ebx, ecx
- PRINT_CHAR [stack + ebx * 4]
- loop stack_print_up
- mov ebx, [SIZE]
- sub ebx, ecx
- PRINT_CHAR [stack + ebx * 4]
- ret
- stack_print_down:
- PRINT_CHAR [stack + ecx * 4]
- loop stack_print_down
- PRINT_CHAR [stack + ecx * 4]
- ret
- push_back:
- mov [stack + esi * 4], ecx
- inc esi
- ret
- pop_back:
- dec esi
- mov edx, 0
- mov [stack + esi * 4], edx
- ret
- start_cycle:
- mov ecx, -1
- call write_pool
- ret
- write_pool:
- inc ecx
- cmp ecx, 255
- jne continue_pool
- ret
- continue_pool:
- mov eax, [count_letters + ecx * 4]
- cmp eax, 1
- jl write_pool
- ;push ecx
- mov [temp1], ecx
- mov [temp2], ebx
- mov ecx, [SIZE]
- call stack_print_up
- ;pop ecx
- mov ecx, [temp1]
- mov ebx, [temp2]
- PRINT_CHAR ecx
- mov [temp1], ecx
- mov [temp2], ebx
- ;push ecx
- mov ecx, [SIZE]
- call stack_print_down
- mov ecx, [temp1]
- mov ebx, [temp2]
- ;pop ecx
- NEWLINE
- mov eax, [count_letters + ecx * 4]
- cmp eax, 1
- je write_pool
- sub eax, 2
- mov [count_letters + ecx * 4], eax
- ;push ecx
- call push_back
- ;pop ecx
- ;push ecx
- mov [temp1], ecx
- mov [temp2], ebx
- mov ecx, [SIZE]
- call stack_print_up
- mov ecx,[SIZE]
- call stack_print_down
- mov ecx, [temp1]
- mov ebx, [temp2]
- ;pop ecx
- NEWLINE
- push esp
- push ecx
- ;mov [temp + edi * 4], ecx
- ;inc edi
- mov ecx, -1
- call write_pool
- ;dec edi
- ;mov ecx, [temp + edi * 4]
- pop ecx
- pop esp
- ;push ecx
- ;mov ecx, 0
- call pop_back
- ;pop ecx
- mov eax, [count_letters + ecx * 4]
- add eax, 2
- mov [count_letters + ecx * 4], eax
- jmp write_pool
- end:
- ret
- CMAIN:
- mov ebp, esp; for correct debugging
- ;write your code here
- mov esi, 0
- mov edi, 0
- mov ecx, 0
- call initialize
- NEWLINE
- mov ecx, 0
- jmp start_cycle
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement