Write Intel 8086 starting point for each program. programs- use the NASM assembler discussed in class and use the program shell from FIND8.asm as a Hand in a columns and font size to eliminate line-wrap). unasseimbled code ( if the code is more than one screen only include the first screen). printout of each program's .LST file (make sure your name is printed out on each program listing) (change the page Also, include a screen shot from DEBUG for each program showing the u rite a program called SUB64 to 0x0160 and 0x0164. Store the result in memory 64 to subtract the 64-bit integer in memory locations 0x0150 and Ox154 from the 64-bit integer in location Ox0170 and Ox0174. Write a program called COMBINE that combines the result as 16-bits in memory location 0x0154. 3. Write a program called FIND to find the the low-order nibbles of the four bytes in memory locations 0x0150 to 0x0153 I he mibbles should be ordered low-to-high in the result beginning with the data from location Ox0150. Store larger of two signed bytes. Assume the two bytes are in memory locations 0x0150 and 0x0151. Store the larger of the two in memory location 0x0152 4. Write a program called LSHIFT to shift logically the 32-bit contents of memory location count stored in memory location 0x0154 and store the results at memory address 0x0158. 0x0150 left according to the 8-bit shift gram called FINDS to find the largest unsigned 8-bit word in a list. The list begins at address Ox0154. The length of the list is stored in an 8-bi t variable at address 0x0150. Store the largest entry in memory location 0x0152. rite a program called FIND32 to find the largest unsigned 32-bit word in a list. The list begins at address 0x0160. The length of the list is stored in an 8-bit variable at address Ox0150. Store the largest entry in memory location 0x0154 7. Write a program called SCAN to scan a list of unsigned bytes and find the smallest and largest entries in the list. The length of the list is stored in a 16-bit variable at addresses 0x0152 and 0x0154. The list begins at address 0x0160. Store the smallest byte at address 0x0150 and the largest byte at address Ox0151. 8. Write a program called COUNT to count the number of characters in a null-terminated ASCIIl string that are equal to a KEY. The KEY is stored in memory location 0x0150. The string is stored in memory beginning at address Ox0160. Store the 8-bit count in memory location 0x0154. (Assume the maximum count is 233.) 9. Write a program called ONES to determine the number of bits equal to one in a 32-bit variable. The 32-bit variable is in memory location 0x0154. Store the 8-bit counter in memory location 0x0150 10. Write a subroutine called STRLEN that determines the length of a null-terminated ASCIl string. Pass the 16-bit start address of th string to the subroutine in register BX. Return the length, excluding the null byte, in register CX. All registers (except CX) should return to the calling program unchanged 11. Write a subroutine called REPLACE that processes a null-terminated string of decimal characters and replaces leading zeros with spaces. Pass the 32-bit address of the string to the subroutine in register BX. 12. Write a program called UNPACK to convert the 16-bit BCD variable in memory locations 0x0150 and 0x0151 to four ASCII characters with the high-order digit first, beginning in memory location 0x0154