Poochiewuddledumpling-Boobledarling

Poochiewuddledumpling-Boobledarling is a programming language loosely based on assembly. It was created by two Finnish coders. The first usable beta version came out in July 2009.

Syntax
Descriptions coming soon who knows when!

mov

add sub mul div rnd

push pop empty inv copy dump

jmp cmp je jne jg jge jng jnge jl jle jnl jnle

call ret

in out

alloc

sys loc col end

Using functions
jmp Main

Plus: add EAX $1 ret
 * Adds 1 to the EAX register

Main: call Plus call Plus call Plus
 * Main program

;The ASCII character of 0 is 48 add EAX $48

out 0 EAX ;Print the number out 0 $13 ;Carriage return out 0 $10 ;Newline end

99 Bottles of beer
mov EBX $99 jmp Main

Print: inv  ;Invert the stack Print_Loop: pop EAX    ;Take one character from the stack ;Replace _ with space cmp EAX $95 jne Cont mov EAX $32 Cont: out 0 EAX  ;Print the character empty EAX  ;Check is the stack empty cmp EAX $0 je Print_Loop

;New line out 0 $13 out 0 $10 ret

Number: mov ECX EBX cmp ECX $0 jne NotZero dump "no_more" jmp EndNumber NotZero: cmp ECX $10 ;Is less that 10 jl One ;Printed number is greater that 9 mov EDX ECX div EDX $10 mov EAX EDX add EDX $48 push EDX mul EAX $10 sub ECX EAX add ECX $48 push ECX jmp EndNumber ;Printed number is less that 10 One: add ECX $48 push ECX EndNumber: ret

Throw_Bottle: call Number dump "_bottles_of_beer_on_the_wall,_" call Number dump "_bottles_of_beer." call Print sub EBX $1 dump "Take_one_down_and_pass_it_around,_" call Number dump "_bottles_of_beer_on_the_wall." call Print ;New line out 0 $13 out 0 $10 ret

Main: call Throw_Bottle cmp EBX $0 jne Main dump "No_more_bottles_of_beer_on_the_wall,_no_more_bottles_of_beer." call Print dump "Go_to_the_store_and_buy_some_more,_99_bottles_of_beer_on_the_wall." call Print out 0 $13 out 0 $10 end