Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; вводим число Х, А=2
- ; Цикл1: если А=1 то рет
- ; делить Х/А
- ; если Ост=0 то Цикл2
- ; если Ост<>0 то Цикл3
- ; Цикл2: вывод текущего А
- ; А=2
- ; возврат Цикл1
- ; Цикл3: А+1
- ;ввела число вычла код 0 чет сделала прибавила код 0 к результирующим циферкам и выводим
- section .data
- len equ 255
- text db '*'
- section .bss
- num resb len
- dig resb len
- mn resb len
- mn2 resb len
- section .text
- global _start
- Digit1:
- xor ebx, ebx
- mov bl, byte [num + esi] ;
- mul ebp
- sub bl, '0'
- add eax, ebx
- inc esi
- cmp esi, ecx
- jl Digit1
- ret
- Cycle1:
- cmp eax, 1
- je .Re
- div ebx
- cmp edx, 0
- je Cycle2
- jne Cycle3
- .Re:
- ret
- ret
- Cycle2:
- mov esi, eax
- xor eax, eax
- xor ecx, ecx
- mov eax, ebx ;кладем пр.мн в еах
- xor ebx, ebx
- call Digit2
- Digit2:
- div ebp ;берем младший разряд простого множителя
- add edx, '0' ;к нему прибавляем код нуля чтобы стал символом
- push edx
- xor edx, edx
- inc edi
- cmp eax, 0
- jne Digit2
- je Output
- ret
- Output:
- cmp edi, 0
- je Cycle4
- ;pop ebx
- mov edx, edi
- mov ecx, esp
- mov ebx, 1
- mov eax, 4
- int 80h
- xor eax,eax
- dec edi
- jmp Output
- Cycle4:
- mov eax, 4
- mov ebx, 1
- mov ecx, [text]
- mov edx, 1
- int 80h
- xor eax, eax
- mov eax, esi
- xor ecx, ecx
- xor edi, edi
- xor ebx, ebx
- xor edx, edx
- mov ebx, 2
- jmp Cycle1
- ret
- Cycle3:
- xor edx, edx
- xor eax, eax
- mov eax, esi
- add ebx, 1
- jmp Cycle1
- ret
- _start:
- mov eax, 3 ;ввожу число
- mov ebx, 0
- mov ecx, num
- mov edx, len
- int 80h
- xor ecx, ecx
- mov ecx, eax ;копирую длину введеной строки в есх
- sub ecx, 1 ;вычитаю 1 чтобы не учитывать в длине перенос строки
- xor eax, eax
- mov ebp, 10 ;для умножения дальше
- call Digit1
- xor esi, esi
- mov esi, eax
- xor ebx, ebx
- mov ebx, 2
- call Cycle1
- int 80h
- mov eax, 1
- mov ebx, 0
- int 80h
- ;mov eax, [num]
- ;mov ebx, 10
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement