please transfer those 2 c language to HLA assembly language! SAMPLE C CODE: (1)
ID: 3913741 • Letter: P
Question
please transfer those 2 c language to HLA assembly language!
SAMPLE C CODE: (1)
------------------------
int i, first, second;
printf( "Provide a first number: " );
scanf( &first );
printf( "Provide an second number: " );
scanf( &second);
if (first > 0) {
for (i = 1; i >= second; i++ )
{
if (i != 1)
{
printf( "_" );
}
printf( "%d", first );
printf( "%d", second );
}
printf( " " );
}
sample output 1:
Provide a first number: 12
Provide an second number: 5
125_125_125_125_125
Provide a first number: 44
Provide an second number: 1
441
Provide a first number: 12
Provide an second number: -5
Provide a first number: -1
Provide an second number: 12
sample c code (2):
------------------------
int i, j, n;
printf( "Feed Me:" );
scanf( "%d", &n );
// the top half of the arrow...
for( i = 1; i <= n; i++ ) {
for (j = 1; j <= i; j++) {
printf( "X" );
}
printf( " " );
}
// the bottom half of the arrow...
for (i = n - 1; i >= 1; i--) {
for (j = 1; j <= i; j++) {
printf( "X" );
}
printf( " " );
}
sample output 2:
Feed Me: 3
X
XX
XXX
XX
X
Feed Me: -6
Feed Me: 5
X
XX
XXX
XXXX
XXXXX
XXXX
XXX
XX
X
Explanation / Answer
-----------------------------------------------------------------------------------------------------------
Assembly Program 1:
-----------------------------------------------------------------------------------------------------------
.
.LC0:
.string "Provide a first number: "
.LC1:
.string "%d"
.LC2:
.string "Provide an second number: "
main:
push rbp
mov rbp, rsp
sub rsp, 16
mov edi, OFFSET FLAT:.LC0
mov eax, 0
call printf
lea rax, [rbp-8]
mov rsi, rax
mov edi, OFFSET FLAT:.LC1
mov eax, 0
call scanf
mov edi, OFFSET FLAT:.LC2
mov eax, 0
call printf
lea rax, [rbp-12]
mov rsi, rax
mov edi, OFFSET FLAT:.LC1
mov eax, 0
call scanf
mov eax, DWORD PTR [rbp-8]
test eax, eax
jle .L2
mov DWORD PTR [rbp-4], 1
.L5:
mov eax, DWORD PTR [rbp-12]
cmp DWORD PTR [rbp-4], eax
jg .L3
cmp DWORD PTR [rbp-4], 1
je .L4
mov edi, 95
call putchar
.L4:
mov eax, DWORD PTR [rbp-8]
mov esi, eax
mov edi, OFFSET FLAT:.LC1
mov eax, 0
call printf
mov eax, DWORD PTR [rbp-12]
mov esi, eax
mov edi, OFFSET FLAT:.LC1
mov eax, 0
call printf
add DWORD PTR [rbp-4], 1
jmp .L5
.L3:
mov edi, 10
call putchar
.L2:
mov eax, 0
leave
ret
----------------------------------------------------------------------------------------
Assembly Program 2:
----------------------------------------------------------------------------------------
.
.LC0:
.string "Feed Me:"
.LC1:
.string "%d"
main:
push rbp
mov rbp, rsp
sub rsp, 16
mov edi, OFFSET FLAT:.LC0
mov eax, 0
call printf
lea rax, [rbp-12]
mov rsi, rax
mov edi, OFFSET FLAT:.LC1
mov eax, 0
call scanf
mov DWORD PTR [rbp-4], 1
.L5:
mov eax, DWORD PTR [rbp-12]
cmp DWORD PTR [rbp-4], eax
jg .L2
mov DWORD PTR [rbp-8], 1
.L4:
mov eax, DWORD PTR [rbp-8]
cmp eax, DWORD PTR [rbp-4]
jg .L3
mov edi, 88
call putchar
add DWORD PTR [rbp-8], 1
jmp .L4
.L3:
mov edi, 10
call putchar
add DWORD PTR [rbp-4], 1
jmp .L5
.L2:
mov eax, DWORD PTR [rbp-12]
sub eax, 1
mov DWORD PTR [rbp-4], eax
.L9:
cmp DWORD PTR [rbp-4], 0
jle .L6
mov DWORD PTR [rbp-8], 1
.L8:
mov eax, DWORD PTR [rbp-8]
cmp eax, DWORD PTR [rbp-4]
jg .L7
mov edi, 88
call putchar
add DWORD PTR [rbp-8], 1
jmp .L8
.L7:
mov edi, 10
call putchar
sub DWORD PTR [rbp-4], 1
jmp .L9
.L6:
mov eax, 0
leave
ret
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.