Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SECTION .data
- ;num equ 3
- ;len equ $ - num
- ;newLine db 0xa
- SECTION .bss
- num resb 255
- array resb 255
- line resb 255
- SECTION .text
- global _start
- _start:
- call read
- mov ecx, eax
- dec ecx
- call perevod
- mov ebx, 1 ;число, на которое делим
- mov esi, 0
- lp:
- inc ebx ;начинаем с 2 и далее ув её
- mov eax, edi ;делимоe
- cmp eax, ebx
- jne .ne
- call _print1
- .ne:
- mov edx, 0
- div ebx
- cmp edx, 0 ;сравниваем остаток с 0
- jne lp ;есть остаток - идём в этот же цикл и ув делитель
- je lp2 ; нет остатка- др цикл, делим ост делимое на то же число
- lp2: cmp eax, ebx
- jne .ne
- call _print2
- .ne:
- inc esi
- mov [array + esi -1], ebx
- mov edi, eax ;заносим в edi оставшиеся делимое
- mov edx, 0
- div ebx
- cmp edx, 0 ;сравниваем остаток
- je lp2
- jne lp3
- lp3: inc ebx
- cmp edi, ebx
- je .ne
- call _print2
- .ne:
- mov eax, edi
- mov edx, 0
- div ebx
- cmp edx, 0
- je lp2
- jne lp3
- mov eax, 1
- int 80h
- read:
- mov eax, 3
- mov ebx, 2
- mov ecx, line
- mov edx, 255
- int 80h
- ret
- _print1:
- push ebx
- push eax
- push edx
- push esi
- push edi
- push ecx
- mov edx, 255
- mov ecx, num
- mov ebx, 1
- mov eax, 4
- pop ebx
- pop eax
- pop edx
- pop esi
- pop edi
- pop ecx
- int 80h
- ret
- _print2:
- push ebx
- push eax
- push edx
- push esi
- push edi
- push ecx
- mov edx, 255
- mov ecx, array
- mov ebx, 1
- mov eax, 4
- pop ebx
- pop eax
- pop edx
- pop esi
- pop edi
- pop ecx
- int 80h
- ret
- perevod: xor eax, eax ; ecx - длина строки line
- mov ebx, 10
- xor edi, edi
- .cycle:
- mul ebx ; eax - результат
- xor edx, edx
- mov dl, [line + edi] ; берем байт
- sub dl, 30h
- add eax, edx
- inc edi
- cmp edi, ecx
- jle .cycle
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement