1
0
mirror of https://github.com/chylex/Advent-of-Code.git synced 2025-06-14 06:34:05 +02:00
Advent-of-Code/2015/01/main.asm
2021-11-30 04:38:55 +01:00

45 lines
839 B
NASM

bits 32
section .data
section .text
global _walkFloors
_walkFloors:
enter 0,0
push ebx
mov eax, [ ebp + 8 ] ; eax = currentFloor
mov edx, [ ebp + 12 ] ; edx = char* instructions
mov ecx, [ ebp + 16 ] ; ecx = size_t instructionCount
jcxz .end ; skip to end if there are no instructions
inc ecx ; increment instruction count by 1
; because loop instruction uses prefix decrement
.instructionLoop:
mov bl, [ edx ] ; bl = instructions[edx]
inc edx ; edx++
cmp bl, '(' ; left parenthesis...
je .moveUpFloor ; moves up a floor
cmp bl, ')' ; right parenthesis...
je .moveDownFloor ; moves down a floor
jmp .end ; unknown character skips to the end
.moveUpFloor:
inc eax
loop .instructionLoop
.moveDownFloor:
dec eax
loop .instructionLoop
.end:
pop ebx
leave
ret