Advertisement
dimon2242

Untitled

Feb 25th, 2018
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. %include "stud_io.inc"
  2.  
  3. global _start
  4. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  5. section .bss
  6.     result resb 10
  7. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  8.  
  9. section .text
  10. _start:
  11.     xor eax, eax ; current char
  12.     xor edx, edx ; number of digit pairs
  13.     xor ecx, ecx ; non digit flag
  14.     xor ebx, ebx ; current char in word index
  15.  
  16. again:
  17.     GETCHAR
  18.     cmp eax, 32 ; is space
  19.     je obnl
  20.    
  21.     cmp eax, 10 ; is new line
  22.     ;je vivod
  23.     je near convert
  24.    
  25.     cmp eax, "0"
  26.     jl nondigit
  27.    
  28.     cmp eax, "9"
  29.     jg nondigit
  30.  
  31.     cmp ebx, 0
  32.     je  after
  33.  
  34.     cmp ecx, 0
  35.     jne after
  36.  
  37.     inc edx
  38.  
  39. after:
  40.     inc ebx
  41.     xor ecx, ecx
  42.     jmp again
  43.  
  44. obnl:
  45.     xor ebx, ebx
  46.     xor ecx, ecx
  47.     jmp again
  48.  
  49. nondigit:
  50.     inc ecx
  51.     inc ebx
  52.     jmp again
  53. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  54. convert:
  55.     push edx ; запоминаем edx от греха подальше
  56.     mov eax, edx ; eax должен содердать число, которое нужно записать в result в десятичной СС
  57.     xor ebx, ebx
  58.     mov ecx, 10
  59. .while:
  60.     xor edx, edx
  61.     div ecx
  62.     mov [result + ebx], dl;
  63.     cmp eax, 0
  64.     jmp near print
  65.     inc ebx
  66.     jmp .while
  67.  
  68. print:
  69.     add byte [result + ebx], '0'
  70.     PUTCHAR byte [result + ebx]
  71.     cmp ebx, 0
  72.     je near exit
  73.     dec ebx
  74.     jmp near print
  75. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  76.  
  77. vivod:
  78.     cmp edx, 0
  79.     je exit
  80.     PUTCHAR '*'
  81.     dec edx
  82.     jmp vivod
  83.  
  84. exit:
  85.     PUTCHAR 10
  86.     FINISH
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement