In: Electrical Engineering
Develop and test an Intel 8086 assembly program by emu8086 amd
dont use any extirnall lib , that reads two decimal numbers x and
y. Your program
should display the result of their:
1) Addition: x+y
2) Subtraction: x-y
3) Multiplication: x*y
4) Division: x / y
Notes:
x and y are two-digit decimal numbers (i.e. 0-99).
The program should display an error message if the value of y is
zero, in the case of division.
You can assume only positive numbers but you will get a bonus if
your program can read and handle
negative numbers.
You will get higher mark if your program accepts only two decimal
digits (0-9) for each number and
print error message when the user tries to enter non-decimal digits
(e.g. A-Z, or a-z, or any special
character).
Your program output should be similar to the following
examples:
Example1: (x>y)
Please enter two 2-digit decimal
number:
X= 48
Y= 26
X + Y = 74
X – Y = 22
X * Y = 1248
X /Y = 1 with Remainder 22
Example2: (x<y)
Please enter two 2-digit decimal
number:
X= 12
Y= 37
X + Y = 49
X – Y = -25
X * Y = 444
X /Y = 0 with Remainder 12
Example3: (y=0)
Please enter two 2-digit decimal
number:
X= 56
Y= 00
X + Y = 56
X – Y = 56
X * Y = 00
X /Y = error overflow
TITLE Add and Substact and Multiply and Division (addSubMulDiv.com)
INCLUDE Irvine32.inc
.code
.data
main PROC
szMenu db "Now what do you want to do with those 2 numbers?",12,09
db 'Add (A)',12,09
db 'Subtract (S)',12,09
db 'Divide (D)',12,0
db 'Multiply (M)',12,09
db 'Exit (E)',12,09
db 'Selection: ',0:12,09,0
myMenu db 'Welcome!',12,09
db 'Enter integer 1:',0
myInteger2 db 'Enter integer 2:',0;12,09,0
szInvalidMenu db 12, 09, "Invalid Menu Choice!", 12, 09, 0
myTotal db 'Total:',12,09,0
.data?
Input1 dd ?
Input2 dd ?
Total dd?
.code
Start:
call Clrscr
move edx,offset myMenu
call WriteString
FirstNum:
call Readlnt
test eax,eax
jz Start
mov Input1,eax
SecondNum:
mov edx, offset myInteger2
call WriteString
call ReadInt
test eax,eax
jz SecondNum
mov Input2,eax
Menu:
mov edx, offset szMenu
call WriteString
call ReadChar
# check for addition operation and add input 1 and input 2
.if al=="A"//al=="a",
Call Crlf
mov eax,Total
mov eax, Input1
add eax, Input2
Call WriteInt
Call Crlf
;jmp start
# check for subtraction and subtract input 2 from input 1
.elseif al == "S" // al == "s"
Call Crlf
mov edx, offset myTotal
call WriteString
mov eax, Total
mov eax, Input1
sub eax, Input2
Call WriteInt
Call Crlf
;jmp start
# check for division operation and divide input 1 with input 2
,elseif al == "D" // al == "d"
Call Crlf
mov edx, offset myTotal
call WriteString
mov eax,Total
mov eax, Input1
div eax, Input2
Call WriteInt
Call Crlf
;jmp start
# check for Multplication operation and multiply input 1 and input 2
.elseif al == "M" // al == "m"
Call Crlf
mov edx, offset myTotal
call WriteString
mov eax, Total
mov eax, Input1
mul eax, Input2
Call WriteInt
Call Crlf
;jmp start
# check for operaion E to exit
.elseif al == "E" // al == "e"
exit
.else
mov edx. offset szlnvalidMenu
call WriteString
jmp Menu
.endif
call WaitMsg
exit
end Start
exit
main ENDP
END main
these code uses the Irvine32 library,so make you have it in your system.