C program problem using NASM assembly. Assignment: Write the following C code. i
ID: 3825682 • Letter: C
Question
C program problem using NASM assembly.
Assignment: Write the following C code. in NASM assembly, then compile and execute the code. main() {int X, Y; X = 2; Y = 10; if (X > Y) X = 10; else X = 20; print ("X is %d ". X);} Given Code: This assumes you have a label called my_print that your code jumps to (or reaches) when it is time to do the print statement. This should accomplish the printing task and the correct return to C my print: mov eax, dword [x] push eax push message call printf add esp, 8 retExplanation / Answer
.LC0:
.string "x is %d "
main:
push rbp
mov rbp, rsp
sub rsp, 16
mov DWORD PTR [rbp-4], 2
mov DWORD PTR [rbp-8], 10
mov eax, DWORD PTR [rbp-4]
cmp eax, DWORD PTR [rbp-8]
jle .L2
mov DWORD PTR [rbp-4], 10
jmp .L3
.L2:
mov DWORD PTR [rbp-4], 20
.L3:
mov eax, DWORD PTR [rbp-4]
mov esi, eax
mov edi, OFFSET FLAT:.LC0
mov eax, 0
call printf
mov eax, 0
leave
ret
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.