Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %include "asm_io.inc"
- segment .data
- prompt1 db "Bitte n (>=0) für die Ackermann-Berechnung eingeben: ",10,0
- prompt2 db "Bitte m (>=0) für die Ackermann-Berechnung eingeben: ",10,0
- prompt3 db "Das Ergebniss ist: ",0
- promptError db "n und m müssen beide >= 0 sein",10,0
- n dd 0
- m dd 0
- segment .bss
- segment .data
- global asm_main
- asm_main:
- ENTER 0,0 ;setup Routine
- PUSHA
- MOV eax, prompt1 ;ask for n
- CALL print_string
- CALL read_int
- CMP eax, 0 ;check n
- JL inputError
- MOV ebx, eax
- MOV eax, prompt2 ;ask for m
- CALL print_string
- CALL read_int
- CMP eax, 0 ;check m
- JL inputError
- PUSH ebp
- PUSH ebx ;push n
- PUSH eax ;push m
- ackermann:
- MOV [n], [ebp+4]
- MOV [m], [ebp+8]
- CMP [n], 0
- JE b1
- CALL ackermann
- POP [m]
- POP [n]
- POP ebp
- end:
- POPA
- MOV eax, 0 ;return Value for C-driver
- LEAVE
- RET
- inputError: ;n or m was <0
- MOV eax, promptError
- CALL print_string
- JMP end
- b1:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement