diff options
Diffstat (limited to '5')
| -rw-r--r-- | 5/seat_id.asm | 59 |
1 files changed, 19 insertions, 40 deletions
diff --git a/5/seat_id.asm b/5/seat_id.asm index c9ca8b8..6b927ed 100644 --- a/5/seat_id.asm +++ b/5/seat_id.asm @@ -5,44 +5,23 @@ section .data section .text seat_id: - xor eax, eax ; set up return value - cmp BYTE [rdi], 'B' - sete al - shl eax, 1 - xor ecx, ecx - cmp BYTE [rdi + 1], 'B' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 2], 'B' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 3], 'B' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 4], 'B' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 5], 'B' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 6], 'B' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 7], 'R' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 8], 'R' - sete cl - or eax, ecx - shl eax, 1 - cmp BYTE [rdi + 9], 'R' - sete cl - or eax, ecx + xor eax, eax ; set up return value + cmp BYTE [rdi], 'B' + sete al + xor ecx, ecx +%assign i 1 +%rep 6 + shl eax, 1 + cmp BYTE [rdi + i], 'B' + sete cl + or eax, ecx +%assign i i+1 +%endrep +%rep 3 + shl eax, 1 + cmp BYTE [rdi + i], 'R' + sete cl + or eax, ecx +%assign i i+1 +%endrep ret |
