Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; hard_sum tuenti contest (Assembler)
- ; by DjThD
- include \masm32\include\masm32rt.inc
- include \masm32\include\kernel32.inc
- include \masm32\include\msvcrt.inc
- includelib \masm32\lib\kernel32.lib
- includelib \masm32\lib\msvcrt.lib
- __p__iob proto c
- .data?
- .data
- buffer db 128 dup(0)
- bufferlength equ $-buffer
- formatonumero db '%i',10,0
- .code
- start:
- call main
- exit
- main proc
- call __p__iob
- push eax
- push bufferlength
- push 1
- push offset buffer
- call crt_fread
- add esp,010h
- mov esi, offset buffer
- dec esi
- xor ecx, ecx
- mov ecx, 10
- xor edi, edi
- xor ebx, ebx
- mov bl, '0'
- xor eax, eax
- push ebp
- xor ebp, ebp
- _main_check:
- sub bl, '0'
- mul ecx
- add eax, ebx
- _main_avanzar:
- inc esi
- mov bl, byte ptr [esi]
- cmp bl, ' '
- je _main_continuar
- cmp bl, '+'
- je _main_continuar
- cmp bl, '-'
- je _main_negativo
- cmp bl, 10
- je _main_nuevalinea
- test bl, bl
- jz _main_finalizar
- cmp bl, 4
- jne _main_check
- cmp bl, '9'
- jg _main_avanzar
- cmp bl, '0'
- jl _main_avanzar
- jmp _main_finalizar
- _main_negativo:
- or ebp, 00000001h
- jmp _main_avanzar
- _main_nuevalinea:
- or ebp, 00000100h
- jmp _main_continuar
- _main_finalizar:
- or ebp, 00000110h
- _main_continuar:
- test ebp, 00000001h
- jz _main_noesNegativo
- mov ecx, eax
- xor eax, eax
- sub eax, ecx
- _main_noesNegativo:
- add edi, eax
- test ebp, 00000100h
- jz _main_noImprimir
- push edi
- push offset formatonumero
- call crt_printf
- add esp, 8
- xor edi, edi
- _main_noImprimir:
- and ebp, 000000F0h
- xor eax, eax
- mov bl, '0'
- mov ecx, 10
- test ebp, 00000010h
- jz _main_check
- pop ebp
- ret
- main endp
- end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement