+1 (315) 557-6473 

Programming exercises in 8086 assembly assignment help

The assignment is divided into 4 parts. The first part deals with implementing a program to calculate the result of a given arithmetic expression, the result is printed on the emulator screen. The second exercise deals with reading characters and converting them to the opposite case. The third exercise deals with determining if a given input number represents a passing grade based on a grade range input by the user. The last exercise deals with using a procedure to calculate the factorial of a number. To have your 8086 programming exercises handled by an expert, take our assembly assignment help.
Table Of Contents
  • Reading and Converting Characters to the Opposite Case in 8086 assembly 

Reading and Converting Characters to the Opposite Case in 8086 assembly 

Programming exercises in 8086 assembly assignment help

Solution ; program to calculate 7 * (4 + 10) + (10 / 5) org 100h jmp main result: db "Result of 7*(4+10)+(10/5) is: $" main: mov bx, 5 ; load number 5 for making division mov ax, 10 ; load number 10 for making division mov dx, 0 ; clear dx for the division div bx ; calculate 10/5 mov cx, ax ; save 10/5 in cx mov ax, 4 ; load number 4 add ax, 10 ; calculate (4+10) mov bx, 7 ; load number 7 for making multiplication mul bx ; calculate 7*(4+10) add ax, cx ; calculate final result 7*(4+10) + 10/5 in ax ; here result is in ax mov di, ax ; save result in di ; print result message mov ah, 9 ; function 9 for printing a string mov dx, offset result ; load address of string to print int 21h ; print the string using DOS ; convert resulting number to ascii mov ax, di ; restore result in ax mov bx, 10 ; load 10 to make divisions by 10 push bx ; save 10 in stack convert: mov dx, 0 ; clear dx for making division div bx ; divide number by 10 add dx, 48 ; convert remainder digit to ascii push dx ; save ascii digit on stack cmp ax, 0 ; see if the number is zero jne convert ; if not zero, keep converting number ; print number on the screen ; Program to change upper or lower case letters to the ; opposite case org 100h jmp main prompt1: db "Enter any two lowercase characters:", 10, 13, '$' prompt2: db "Enter any two uppercase characters:", 10, 13, '$' main: ; Print prompt for lowercase letters mov ah, 9; function 9 for printing a string mov dx, offset prompt1; load address of the string to print int 21h; print the string using DOS ; read the first character mov ah, 1; function 1 to read a character int 21h; read character using DOS mov bl, al; save the character in bl ; read space mov ah, 1; function 1 to read a character int 21h; read character using DOS ; read the second character mov ah, 1; function 1 to read a character int 21h; read character using DOS mov bh, al; save the character in bh ; print space mov dl, 32; put space in dl for printing it mov ah, 2; function 2 to print character int 21h; print character using DOS ; print first char in uppercase xor bl, 32; change case for the first character mov dl, bl; put char in dl for printing it mov ah, 2; function 2 to print character int 21h; print character using DOS ; print space mov dl, 32; put space in dl for printing it mov ah, 2; function 2 to print character int 21h; print character using DOS ; print second char in uppercase xor bh, 32; change case for the second character mov dl, bh; put char in dl for printing it mov ah, 2; function 2 to print character int 21h; print character using DOS mov dl, 0ah; print new line. int 21h mov dl, 0dh ; print carriage return. int 21h ; Print prompt for uppercase letters mov ah, 9; function 9 for printing a string mov dx, offset prompt2; load address of the string to print int 21h; print the string using DOS ; read the first character mov ah, 1; function 1 to read a character int 21h; read character using DOS mov bl, al; save the character in bl ; read space mov ah, 1; function 1 to read a character ; Procedure to calculate a factorial ; requires the number to calculate in ax, returns the ; result in ax factorial proc cmp ax, 2 ; see if the number is < 2 jge calc ; if >=2, go to calculation mov ax, 1 ; if 0 or 1, return 1 ret calc: push ax ; save number in stack dec ax ; calculate n-1 call factorial ; call factorial of n-1 pop bx ; restore initial number from stack mul bx ; multiply num*factorial(num-1) to get factorial ret ; return result factorial endp