Advertisement
Guest User

aliddin

a guest
Nov 27th, 2015
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .data
  2. msg:    .string "If result is 1 Matrikelnummer is valid otherwise invalid. Result: %d\n"
  3. # number: abcdefg, valid if (a * 9 + b * 7 + c * 3 + d * 9 + e * 7 + f * 3) mod 10 = g
  4.  
  5. .text
  6. .global main
  7.  
  8. main:
  9.     movl $611813,%eax
  10.     movl $10, %ebx
  11.     movl $0, %ecx
  12.     movl $0, %edi
  13.    
  14.     cdq
  15.     idivl %ebx
  16.     movl %edx, %edi     # edi = g (1st digit)
  17.  
  18.     idivl %ebx
  19.     imull $3, %edx      # f*3
  20.     movl %edx, %ecx     # ecx = f*3 (2nd digit)
  21.  
  22.    
  23.     idivl %ebx
  24.     imull $7, %edx      # e*7
  25.     addl %edx, %ecx     # ecx = f*3 + e*7 (3rd digit)
  26.  
  27.     idivl %ebx
  28.     imull $9, %edx      # d*9
  29.     addl %edx, %ecx     # ecx = f*3 + e*7 + d*9 (4th digit)
  30.  
  31.     idivl %ebx
  32.     imull $3, %edx      # c*3
  33.     addl %edx, %ecx     # ecx = f*3 + e*7 + d*9 + c*3 (5th digit)
  34.  
  35.     idivl %ebx
  36.     imull $7, %edx      # b*7
  37.     addl %edx, %ecx     # ecx = f*3 + e*7 + d*9 + c*3 + b*7 (6th digit)
  38.  
  39.     idivl %ebx
  40.     imull $9, %edx      # a*9
  41.     addl %edx, %ecx     # ecx = f*3 + e*7 + d*9 + c*3 + b*7 + a*9 (7th)
  42.  
  43.     movl %ecx, %eax
  44.     idivl %ebx
  45.  
  46.     cmpl %edi, %edx
  47.     je .valid
  48.     movl $0, %eax
  49.     jmp .invalid
  50.  
  51. .valid:
  52.     movl $1, %eax
  53.  
  54. .invalid:
  55.  
  56.     pushl %eax
  57.     pushl $msg
  58.     call printf
  59.    
  60.     movl $0, %eax
  61.     int $0x80
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement