Modify the findmax.s file to find the minimum value in the list. REQUIRED SPECIFICATIONS: Create your own list of 10 values. Use the byte data type rather than the int (hint: you will need to use the smallest sized register and move over by a byte for reading next value) Adjust suffixes to match register destination size
Modify the findmax.s file to find the minimum value in the list.
REQUIRED SPECIFICATIONS:
- Create your own list of 10 values.
- Use the byte data type rather than the int (hint: you will need to use the smallest sized register and move over by a byte for reading next value)
- Adjust suffixes to match register destination size
Below is the findmax.s file. The hashmarks reprsent notes taken. This is assembly language on Ubuntu Linix.
data_items: #These are the data items
.int 3,67,34,222,45,75,54,34,44,33,22,11,66,0
.section .text
.globl _start
_start:
movq $0, %rdi # move 0 into the index register
movl data_items(,%rdi,4), %eax # load the first byte of data
movl %eax, %ebx # since this is the first item, %rax is
# the biggest
start_loop: # start loop
cmpl $0, %eax # check to see if we’ve hit the end
je loop_exit
incq %rdi # load next value
movl data_items(,%rdi,4), %eax
cmpl %ebx, %eax # compare values
jle start_loop # jump to loop beginning if the new
# one isn’t bigger
movl %eax, %ebx # move the value as the largest
jmp start_loop # jump to loop beginning
loop_exit:
# %rbx is the return value, and it already has the number
movq $1, %rax #1 is the exit() syscall
int $0x80
Trending now
This is a popular solution!
Step by step
Solved in 2 steps with 2 images