Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %include "stud_io.inc"
- global _start
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- section .bss
- result resb 10
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- section .text
- _start:
- xor eax, eax ; current char
- xor edx, edx ; number of digit pairs
- xor ecx, ecx ; non digit flag
- xor ebx, ebx ; current char in word index
- again:
- GETCHAR
- cmp eax, 32 ; is space
- je obnl
- cmp eax, 10 ; is new line
- ;je vivod
- je near convert
- cmp eax, "0"
- jl nondigit
- cmp eax, "9"
- jg nondigit
- cmp ebx, 0
- je after
- cmp ecx, 0
- jne after
- inc edx
- after:
- inc ebx
- xor ecx, ecx
- jmp again
- obnl:
- xor ebx, ebx
- xor ecx, ecx
- jmp again
- nondigit:
- inc ecx
- inc ebx
- jmp again
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- convert:
- push edx ; запоминаем edx от греха подальше
- mov eax, edx ; eax должен содердать число, которое нужно записать в result в десятичной СС
- xor ebx, ebx
- mov ecx, 10
- .while:
- xor edx, edx
- div ecx
- mov [result + ebx], dl;
- cmp eax, 0
- jmp near print
- inc ebx
- jmp .while
- print:
- add byte [result + ebx], '0'
- PUTCHAR byte [result + ebx]
- cmp ebx, 0
- je near exit
- dec ebx
- jmp near print
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- vivod:
- cmp edx, 0
- je exit
- PUTCHAR '*'
- dec edx
- jmp vivod
- exit:
- PUTCHAR 10
- FINISH
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement