In this lab task you will use the PUSH and POP instructions to manage the transfer of data to and from the runtime stack. Write a program that uses only PUSH and POP instructions to exchange the...



The class I'm taking is assembly programming.


I am completely stuck. Can you please write out program so I can successfully run and compile program in visual studio.  I have attached the instructions .  i have also attached my work i have done so far. can you please tell me where i went wrong. Please view both attachments before answering.  Thank you so much for your help!


In this lab task you will use the PUSH and POP instructions to manage the transfer of data to<br>and from the runtime stack.<br>Write a program that uses only PUSH and POP instructions to exchange the values in the<br>EAX and EBX registers.<br>Testing Specification<br>Store values into the EAX and EBX registers. Compile and run your program to validate that<br>your program sequence of statements exchanges the original register values.<br>Documentation Requirements<br>Be sure to provide a commented out header that describes your program. Include in your<br>header description the compiler that you used. Provide inline comments to document your<br>solution.<br>Background Discussion<br>Assume that two values need to be swapped, such as is done in a number of commonly used<br>Computer Science sorting algorithms. The typical high-level code is as follows:<br>temp - num1:<br>num1 - num2;<br>num2 = temp:<br>This could be implemented on a line-by-line basis in assembly language using registers, but<br>that would require two instructions for reach line of code as follows:<br>mov eax, num1<br>mov temp, eax<br>mov eax, num2<br>mov num1, eax<br>mov eax, temp<br>mov num2, eax<br>Understandably, the above seems inefficient. Instead of using registers and mov<br>instructions, another possibility is to use the stack. Not only is a runtime stack a way to save<br>and restore values, it can also be useful in swapping two values.<br>Another method of swapping two values is to use the exchange instruction. However, for<br>this lab you will use the push and pop instructions to swap two values.<br>

Extracted text: In this lab task you will use the PUSH and POP instructions to manage the transfer of data to and from the runtime stack. Write a program that uses only PUSH and POP instructions to exchange the values in the EAX and EBX registers. Testing Specification Store values into the EAX and EBX registers. Compile and run your program to validate that your program sequence of statements exchanges the original register values. Documentation Requirements Be sure to provide a commented out header that describes your program. Include in your header description the compiler that you used. Provide inline comments to document your solution. Background Discussion Assume that two values need to be swapped, such as is done in a number of commonly used Computer Science sorting algorithms. The typical high-level code is as follows: temp - num1: num1 - num2; num2 = temp: This could be implemented on a line-by-line basis in assembly language using registers, but that would require two instructions for reach line of code as follows: mov eax, num1 mov temp, eax mov eax, num2 mov num1, eax mov eax, temp mov num2, eax Understandably, the above seems inefficient. Instead of using registers and mov instructions, another possibility is to use the stack. Not only is a runtime stack a way to save and restore values, it can also be useful in swapping two values. Another method of swapping two values is to use the exchange instruction. However, for this lab you will use the push and pop instructions to swap two values.
Edit<br>View<br>Project<br>Build<br>Debug<br>lest<br>Analyze<br>lools<br>Extensions<br>Window<br>Help<br>Search (Ctri+Q)<br>Projectwee<br>Debug<br>x86<br>Local Windows Debugger -<br>Auto<br>* x Solution Explorer<br>start of program<br>Seanlab4.asm<br>.386<br>.model flat, stdcall<br>6 .stack 4096<br>ExitProcess PROTO, dwExitCode: DWORD<br>10<br>.data<br>11<br>12<br>eav30, ebvsa ; declare varibles<br>13<br>14<br>.code<br>15<br>16<br>main PROC<br>17<br>push eax<br>push ebx<br>18<br>19<br>20<br>pop eax<br>21<br>pop ebx<br>22<br>23<br>invoke ExitProcess, 0<br>24<br>25<br>main ENDP<br>26<br>27 i end of progran<br>END main<br>28<br>

Extracted text: Edit View Project Build Debug lest Analyze lools Extensions Window Help Search (Ctri+Q) Projectwee Debug x86 Local Windows Debugger - Auto * x Solution Explorer start of program Seanlab4.asm .386 .model flat, stdcall 6 .stack 4096 ExitProcess PROTO, dwExitCode: DWORD 10 .data 11 12 eav30, ebvsa ; declare varibles 13 14 .code 15 16 main PROC 17 push eax push ebx 18 19 20 pop eax 21 pop ebx 22 23 invoke ExitProcess, 0 24 25 main ENDP 26 27 i end of progran END main 28
Jun 08, 2022
SOLUTION.PDF

Get Answer To This Question

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here