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

Write an assembly language program to find the maximum of y = 3x^4 – 10x^2 - 15x

ID: 3674357 • Letter: W

Question

Write an assembly language program to find the maximum of y = 3x^4 – 10x^2 - 15x for the range -4 x 6, by stepping one by one through the range. During each iteration, print out a message stating the current value of x and the corresponding value of y. After all iterations, print out a final message stating the max value of y and the corresponding value of x that generated ymax. If there are multiple values of x that generate ymax, you only need to indicate one of them. Also, make sure to define the values of the coefficients 3, 10 and 15 as constants a1, a2, and a3 – the TA may change these values to further test your code. Try to eliminate as many nop instructions as possible and also try to minimize the length of your code. You may run the program using gdb to verify correctness. Make sure to pay close attention to the requirements above. Output Format: For input of x = -4, output y = 668 For input of x = -3, output y = *** … … For input of x = 6, output y = *** The maximum output value is y = ***, when input x = ***

Explanation / Answer

.model small            

.data                                                                  

a db 09H  

b db 02H  

.code  

      mov      ax, @data       ; Initialize data section                            

      mov      ds, ax  

      mov      al, a           ; Load number1 in al  

      mov      bl, b           ; Load number2 in bl  

      add      al, bl          ; add numbers and result in al  

      mov      ch, 02h         ; Count of digits to be displayed  

      mov      cl, 04h         ; Count to roll by 4 bits  

      mov      bh, al          ; Result in reg bh  

l2:     rol      bh, cl       ; roll bl so that msb comes to lsb  

      mov      dl, bh          ; load dl with data to be displayed  

      and      dl, 0fH         ; get only lsb  

      cmp      dl, 09          ; check if digit is 0-9 or letter A-F  

      jbe      l4  

      add      dl, 07          ; if letter add 37H else only add 30H  

l4:     add      dl, 30H  

      mov      ah, 02          ; Function 2 under INT 21H (Display character)  

      int      21H  

      dec      ch              ; Decrement Count  

      jnz      l2  

      mov      ah, 4CH         ; Terminate Program  

      int      21H  

      end

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