Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Assembly Language Programming ( use of raspberry pi).ARM PROGRAMMING: Iterativel

ID: 3694075 • Letter: A

Question

Assembly Language Programming ( use of raspberry pi).ARM PROGRAMMING: Iteratively populate a fixed-size integer array of 20 elements, array_a, with values provided by the _generate function described below. Once array_a has been populated by _generate, you will then store the sorted values in increasing order into array_b, a second fixed-size integer array of 20 elements. The _generate function is defined in C as: void generate(int n) { for(int i = 0; i < 20; i += 2) { array_a [i] = n + i; array_a [i + 1] = -(n + i + 1); } } When executed, your program will immediately wait for the user to enter the value of n, which will be a positive integer. Once n is entered, you will call the _generate procedure to populate array_a, then the _sort_ascending procedure to store the sorted contents of array_a into array_b(the values in array_a will remain unsorted, but array_b will be sorted). Once both arrays have been populated, you will then print the results in the following format before exiting the program (do not loop back to the program main, just exit after the printing is completed). array_a [0] = x, array_b = y array_a [1] = x, array_b = y array_a [2] = x, array_b = y … array_a [19] = x, array_b = y Your main function take a single input in the following format, then immediately perform the operations specified above

Explanation / Answer

.MODEL SMALL .STACK 100H .DATA PROMPT DB 'The Array elements are : $' RESULT DB 0DH,0AH,'The Sum of the Array is = $' ARRAY DB 10,20,30,40,50,60,70,80,90,100 .CODE MAIN PROC MOV AX, @DATA ; initialize DS MOV DS, AX MOV BX, 10 ; set BX=10 LEA DX, PROMPT ; load and display the string PROMPT MOV AH, 9 INT 21H MOV CX, BX ; set CX=BX LEA SI, ARRAY ; set SI=offset address of ARRAY @LOOP: ; loop label XOR AH, AH ; clear AH MOV AL, [SI] ; set AX=[SI] CALL OUTDEC ; call the procedure OUTDEC INC SI ; set SI=SI+1 MOV AH, 2 ; set output function MOV DL, 20H ; set DL=20H INT 21H ; print a character LOOP @LOOP ; jump to label @LOOP while CX!=0 LEA DX, RESULT ; load and display the string RESULT MOV AH, 9 INT 21H LEA SI, ARRAY ; set SI=offset address of ARRAY CALL SUM ; call the procedure SUM CALL OUTDEC ; call the procedure OUTDEC MOV AH, 4CH ; return control to DOS INT 21H MAIN ENDP SUM PROC ; this procedure will calculate the sum of an array ; input : SI=offset address of the array ; : BX=size of the array ; output : AX=sum of the array PUSH CX ; push CX onto the STACK PUSH DX ; push DX onto the STACK XOR AX, AX ; clear AX XOR DX, DX ; clear DX MOV CX, BX ; set CX=BX @SUM: ; loop label MOV DL, [SI] ; set DL=[SI] ADD AX, DX ; set AX=AX+DX INC SI ; set SI=SI+1 LOOP @SUM ; jump to label @SUM while CX!=0 POP DX ; pop a value from STACK into DX POP CX ; pop a value from STACK into CX RET ; return control to the calling procedure SUM ENDP OUTDEC PROC ; this procedure will display a decimal number ; input : AX ; output : none PUSH BX ; push BX onto the STACK PUSH CX ; push CX onto the STACK PUSH DX ; push DX onto the STACK CMP AX, 0 ; compare AX with 0 JGE @START ; jump to label @START if AX>=0 PUSH AX ; push AX onto the STACK MOV AH, 2 ; set output function MOV DL, "-" ; set DL='-' INT 21H ; print the character POP AX ; pop a value from STACK into AX NEG AX ; take 2's complement of AX @START: ; jump label XOR CX, CX ; clear CX MOV BX, 10 ; set BX=10 @OUTPUT: ; loop label XOR DX, DX ; clear DX DIV BX ; divide AX by BX PUSH DX ; push DX onto the STACK INC CX ; increment CX OR AX, AX ; take OR of Ax with AX JNE @OUTPUT ; jump to label @OUTPUT if ZF=0 MOV AH, 2 ; set output function @DISPLAY: ; loop label POP DX ; pop a value from STACK to DX OR DL, 30H ; convert decimal to ascii code INT 21H ; print a character LOOP @DISPLAY ; jump to label @DISPLAY if CX!=0 POP DX ; pop a value from STACK into DX POP CX ; pop a value from STACK into CX POP BX ; pop a value from STACK into BX RET ; return control to the calling procedure OUTDEC ENDP

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote