Can anyone help me with this question, would be greatly appreciated. Implement i
ID: 3711858 • Letter: C
Question
Can anyone help me with this question, would be greatly appreciated.
Implement in ARM7 assembly language a binary tree for sorting. In the main function, open a file to read a sequence of unsorted integers. For the first input integer, create a root node (12 bytes), holding the integer in the first 4 bytes and two empty pointers, one for the left child node and the other for the right child node. For each of the following input integers, build a node containing the number and insert it to the tree such that for any interior node (holding an integer X) its left branch contains integers 2 smaller than X and its right branch contains integers equal or larger than X. After all integers are inserted, the program would, by traversing the binary tree in an in-order, print out the sorted integers separated by space onto the screen, Specification: you should write Insert as a recursive function.
data | null or a pointer to the left child node | null or a pointer to the right child node
Explanation / Answer
/data to be sorted
Data Segment
arr1 db 8,2,7,4,3
Data Ends
Code Segment
Assume cs:code, ds:data
Begin:
mov ax, data //move data to ax register
mov ds, ax //copy content of ax to d and es
mov es, ax
mov bx, OFFSET arr1
mov cx, 5
mov dx, cx
L1:
mov si, 0
mov ax, si
inc ax
mov di, ax
mov dx, cx
L2:
mov al, [bx][si]
cmp al, [bx][di]
jg L4
L3: //logic for placing left or right
inc si
inc di
dec dx
cmp dx, 00
je L1
jg L2
L4:
mov al, [bx][si]
mov ah, [bx][di]
mov [bx][si], ah
mov [bx][di], al
inc si
inc di
dec dx
cmp dx, 00
je L1
jg L2
Exit:
mov ax, 4c00h
int 21h
Code Ends
End Begin