Code: Alles auswählen
if zahl1 > zahl2:
zahl1, zahl2 = zahl2, zahl1
Code: Alles auswählen
if zahl1 > zahl2:
zahl1, zahl2 = zahl2, zahl1
Code: Alles auswählen
#--------------------------------------------------------------------
# Define a function to ask for a number.
.code ask_number, prompt
loop:
SETUP_EXCEPT check_error
LOAD_GLOBAL int
LOAD_GLOBAL input
LOAD_FAST prompt
CALL_FUNCTION 1
CALL_FUNCTION 1
RETURN_VALUE
check_error:
DUP_TOP
LOAD_GLOBAL ValueError
COMPARE_OP EXC_MATCH
POP_JUMP_IF_FALSE no_value_error
POP_TOP
POP_TOP
POP_TOP
LOAD_GLOBAL print
LOAD_CONST "Das war keine Zahl. Noch mal."
CALL_FUNCTION 1
JUMP_ABSOLUTE loop
no_value_error:
END_FINALLY
JUMP_ABSOLUTE loop
.endcode
LOAD_CONST ask_number
LOAD_CONST "ask_number"
MAKE_FUNCTION 0
STORE_FAST ask_number
#--------------------------------------------------------------------
# Ask the user for both numbers and leave them on the stack.
LOAD_FAST ask_number
LOAD_CONST " Erste Zahl: "
CALL_FUNCTION 1
LOAD_FAST ask_number
LOAD_CONST "Zweite Zahl: "
CALL_FUNCTION 1
#--------------------------------------------------------------------
# Store the numbers as `a` and `b`, swap them if necessary.
DUP_TOP_TWO
COMPARE_OP LE
POP_JUMP_IF_TRUE no_swap
ROT_TWO
no_swap:
STORE_FAST b
STORE_FAST a
#--------------------------------------------------------------------
# Add the numbers from `a` to `b` (inclusive).
# The result is kept on the stack.
LOAD_CONST 0
add_loop:
LOAD_FAST a
LOAD_FAST b
COMPARE_OP LE
POP_JUMP_IF_FALSE exit_loop
LOAD_FAST a
BINARY_ADD
LOAD_FAST a
LOAD_CONST 1
BINARY_ADD
STORE_FAST a
JUMP_ABSOLUTE add_loop
exit_loop:
#--------------------------------------------------------------------
# Print the result from the stack.
LOAD_GLOBAL print
ROT_TWO
CALL_FUNCTION 1
RETURN_VALUE