0
insert a number to a sorted array
Hi! I want to write a program with assembly (8086), to add a number into a sorted array with 10 elements. E.g my array: 2 4 9 10 12 13 16 18 30 87 I want to add 11 so my array will be: 2 4 9 10 11 12 13 16 18 30 87 I need code or Pseudocode to understand steps.
3 Respuestas
+ 1
Saba I don't have experience in asm but here's a pseudo code I guess should work...
mov bx,[address of 2]
mov cx,[address of 87]
inc cx # increment cx
mov [cx],11 # cx = addr of 87 +1, moving 11
swap_loop:
#keep moving 11 left until comparing with 10
cmp [cx],[cx-1]
jge finish # if 11>= 87 we're done
xchg [cx],[cx-1] # otherwise swap
cmp cx,bx # check to avoid underflow
je finish # in case end addr = start addr
dec cx # otherwise continue ...
sjmp swap_loop
finish:
ret
perhaps you want to use ax for 11 and/or other registers for indirect addressing...
also can load ax with
sub bx,cx
before ret, so ax will contain the index which 11 has inserted...
+ 1
Thank U so much
+ 1
you're welcome Saba
I dig a little more, wrote a C program to do the same thing, converted to assembly and removed noise stuff.
it's almost the same steps.
here's the code
https://code.sololearn.com/cnafWh5vedGA/?ref=app