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

Respuesta :

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

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