View difference between Paste ID: PRH5NaA8 and BqL1yU2q
SHOW: | | - or go back to the newest paste.
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
9+
	movl $1611813,%eax
10
	movl $10, %ebx
11
	movl $0, %ecx
12
	movl $0, %edx
13
	movl $0, %edi
14
	
15
	cdq
16
	idivl %ebx
17
	movl %edx, %edi		# edi = g (1st digit)
18
19
	cdq
20
	idivl %ebx
21
	imull $3, %edx		# f*3
22
	movl %edx, %ecx		# ecx = f*3 (2nd digit)
23
24
	cdq
25
	idivl %ebx
26
	imull $7, %edx		# e*7
27
	addl %edx, %ecx		# ecx = f*3 + e*7 (3rd digit)
28
29
	cdq
30
	idivl %ebx
31
	imull $9, %edx		# d*9
32
	addl %edx, %ecx		# ecx = f*3 + e*7 + d*9 (4th digit)
33
34
	cdq
35
	idivl %ebx
36
	imull $3, %edx		# c*3
37
	addl %edx, %ecx		# ecx = f*3 + e*7 + d*9 + c*3 (5th digit)
38
39
	cdq	
40
	idivl %ebx
41
	imull $7, %edx		# b*7
42
	addl %edx, %ecx		# ecx = f*3 + e*7 + d*9 + c*3 + b*7 (6th digit)
43
44
	cdq
45
	idivl %ebx
46
	imull $9, %edx		# a*9
47
	addl %edx, %ecx		# ecx = f*3 + e*7 + d*9 + c*3 + b*7 + a*9 (7th)
48
49
	movl %ecx, %eax
50
	cdq
51
	idivl %ebx
52
53
	cmpl %edi, %edx
54
	je .valid
55
	movl $0, %eax
56
	jmp .invalid
57
58
.valid:
59
	movl $1, %eax
60
61
.invalid:
62
63
	pushl %eax
64
	pushl $msg
65
	call printf
66
	
67
	movl $0, %eax
68
	int $0x80