danielvitor23

FSM E-mail

Oct 14th, 2020
452
75 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. extern printf
  2. extern scanf
  3.  
  4. section .data
  5. valid db "Valido", 0
  6. invalid db "Invalido", 0
  7.  
  8. fmt_char db "%c", 0
  9.  
  10. section .bss
  11. c resb 1
  12.  
  13. section .text
  14.     global main
  15. main:
  16.     push ebp
  17.     mov ebp, esp
  18.  
  19.      jmp A
  20.    
  21. exit:
  22.     mov esp, ebp
  23.     pop ebp
  24.  
  25.     xor eax, eax
  26.     ret
  27.    
  28. Valido:
  29.     push valid
  30.     call printf
  31.     add esp, 4
  32.     jmp exit
  33.    
  34. Invalido:
  35.     push invalid
  36.     call printf
  37.     add esp, 4
  38.     jmp exit
  39.    
  40. get_char:
  41.     push c
  42.     push fmt_char
  43.     call scanf
  44.     add esp, 8
  45.  
  46.     mov al, [c]
  47.  
  48.     ret
  49.        
  50. A:
  51.     call get_char
  52.    
  53.     cmp al, 'a'
  54.     jb Invalido
  55.    
  56.     cmp al, 'z'
  57.     ja Invalido
  58.  
  59.     jmp B
  60.  
  61. B:
  62.     call get_char
  63.    
  64.     cmp al, '@'
  65.     je C
  66.    
  67.     cmp al, 'a'
  68.     jb Invalido
  69.    
  70.     cmp al, 'z'
  71.     ja Invalido
  72.  
  73.     jmp B
  74. C:
  75.     call get_char
  76.    
  77.     cmp al, 'a'
  78.     jb Invalido
  79.    
  80.     cmp al, 'z'
  81.     ja Invalido
  82.  
  83.     jmp D
  84. D:
  85.     call get_char
  86.    
  87.     cmp al, '.'
  88.     je E
  89.    
  90.     cmp al, 'a'
  91.     jb Invalido
  92.    
  93.     cmp al, 'z'
  94.     ja Invalido
  95.    
  96.     jmp D
  97. E:
  98.     call get_char
  99.    
  100.     cmp al, 'a'
  101.     jb Invalido
  102.    
  103.     cmp al, 'z'
  104.     ja Invalido
  105.  
  106.     jmp F
  107. F:
  108.     call get_char
  109.    
  110.     cmp al, 0xa
  111.     je Valido
  112.    
  113.     cmp al, '.'
  114.     je E
  115.    
  116.     cmp al, 'a'
  117.     jb Invalido
  118.    
  119.     cmp al, 'z'
  120.     ja Invalido
  121.    
  122.     jmp F
RAW Paste Data