138k views
0 votes
The code below uses the Space macro which simply displays the number of blank spaces specified by its argument. What is the first number printed to the screen after this code executes? (ignore the .0000 from Canvas) main PROC push 4 push 13 call rcrsn exit main ENDP rcrsn PROC push ebp mov ebp,esp mov eax,[ebp + 12] mov ebx,[ebp + 8] cmp eax,ebx jl recurse jmp quit recurse: inc eax push eax push ebx call rcrsn mov eax,[ebp + 12] call WriteDec Space 2 quit: pop ebp ret 8 rcrsn ENDP

User Nkjt
by
4.0k points

1 Answer

3 votes

Answer:

The code implements a recursive function by decrementing number by 1 from 10 to 4 recursively from the stack and add an extra space 2 using the macro function

Step-by-step explanation:

Solution

The code implements a recursive function by decrementing number by 1 from 10 to 4 recursively from the stack and add an extra space 2 using the macro function mwritespace

The first number is printed after the code executes is 9

Code to be used:

Include Irvine32.inc

INCLUDE Macros.inc ;Include macros for space

.code

main proc

push 4 ;Push 4 to the stack

push 10 ;Push 10 to the stack

call rcrsn ;call the function

exit

;invoke ExitProcess,0 ;After return from the function

;call exit function

main ENDP ;end the main

rcrsn PROC ;define the function

push ebp ;push the ebp into stack

mov ebp,esp ;set ebp as frame pointer

mov eax,[ebp + 12] ;This is for second parameter

mov ebx,[ebp + 8] ;This is for first parameter

cmp eax,ebx ;compare the registers

jl recurse ;jump to another function

jmp quit ;call quit

recurse: ;Implement another function

inc eax ;increment count value

push eax ;push the eax value into stack

push ebx ;push ebx into stack

call rcrsn ;call above function

mov eax,[ebp + 12] ;This is for second parameter

call WriteDec ;write the value on the screen

mWritespace 2 ;Space macro print 2 spaces

;pause the screen

quit: ;Implement quit function

pop ebp ;pop the pointer value from the stack

ret 8 ;clean up the stack

rcrsn ENDP

end main

User Illnr
by
4.2k points