Ax + Bx + C is called an algebraic expression.
Ax + B = Bx + C Ax - Bx = (C - B) x (A - B) = (C - B) x = (C - B) / (A - B)
3a+ax+3b+bx = 3(a+b)+(a+b)x = (a+b)(3+x)
x = -c/(a+b), provided a+b is not 0
B. Sum of two numbers
Ax + Bx + C is called an algebraic expression.
Ax + B = Bx + C Ax - Bx = (C - B) x (A - B) = (C - B) x = (C - B) / (A - B)
3a+ax+3b+bx = 3(a+b)+(a+b)x = (a+b)(3+x)
4
.code main proc mov ax,@data mov ds,ax lea dx,msg ;printing msg mov ah,09h int 21h mov ax,x ;ax=x mov bx,y ;bx=y cmp ax,0 ;jump to l3 if ax is negtive jb l3 cmp bx,0 ;jump to l6 if bx is negative jb l6 cmp ax,bx ;if ax<bx,then jump to l1 jl l1 sub ax,bx ;else normal sub mov diff,ax ;diff=result is stored jmp l2 l1: ;iff (+)ax<(+)bx neg bx ;bx=-bx clc add ax,bx neg ax ;-ans=ans mov diff,ax mov dx,2dh ;print '-' mov ah,02h int 21h jmp l2 l3: ;iff (-)ax neg ax ;-ax=ax cmp bx,0 ;jump to l4 if bx is negative jb l4 clc add ax,bx ;ax=(+)ax+(+)bx mov ax,diff mov dx,2dh ;print '-' mov ah,02h int 21h jmp l2 l4: ;if (-)ax & (-)bx neg bx ;-bx=bx cmp ax,bx ;if ax>bx then jump to l5 jg l5 sub ax,bx ;else ax-bx mov diff,ax mov dx,2dh ;print '-' mov ah,02h int 21h jmp l3 l5: ;if(-)ax>(-)bx xchg ax,bx ;exchange ax and bx sub ax,bx ;ax-bx mov diff,ax ;ans is positive jmp l2 l6: ;iff (-)bx neg bx ;-bx=bx add ax,bx ;ax-(-)bx mov diff,ax ;ans will be positive mov ah,4ch int 21h main endp
I have a code for 16 bit subtraction.. just replace ax by al,bx by bl etc... .code main proc mov ax,@data mov ds,ax lea dx,msg ;printing msg mov ah,09h int 21h mov ax,x ;ax=x(any number) mov bx,y ;bx=y( " ") cmp ax,0 ;jump to l3 if ax is negtive jb l3 cmp bx,0 ;jump to l6 if bx is negative jb l6 cmp ax,bx ;if ax<bx,then jump to l1 jl l1 sub ax,bx ;else normal sub mov diff,ax ;diff=result is stored jmp l2 l1: ;iff (+)ax<(+)bx neg bx ;bx=-bx clc add ax,bx neg ax ;-ans=ans mov diff,ax mov dx,2dh ;print '-' mov ah,02h int 21h jmp l2 l3: ;iff (-)ax neg ax ;-ax=ax cmp bx,0 ;jump to l4 if bx is negative jb l4 clc add ax,bx ;ax=(+)ax+(+)bx mov ax,diff mov dx,2dh ;print '-' mov ah,02h int 21h jmp l2 l4: ;if (-)ax & (-)bx neg bx ;-bx=bx cmp ax,bx ;if ax>bx then jump to l5 jg l5 sub ax,bx ;else ax-bx mov diff,ax mov dx,2dh ;print '-' mov ah,02h int 21h jmp l3 l5: ;if(-)ax>(-)bx xchg ax,bx ;exchange ax and bx sub ax,bx ;ax-bx mov diff,ax ;ans is positive jmp l2 l6: ;iff (-)bx neg bx ;-bx=bx add ax,bx ;ax-(-)bx mov diff,ax ;ans will be positive mov ah,4ch int 21h main endp
Recall distributivity a(b + c) = ab + ac = (b + c)a and associativity (ab)c = a(bc) (a + b) + c = a + (b + c) as well as commutativity ab = ba a + b = b + a we are gonna need those. See for yourself when I applied each to learn the trick: ax - bx - ay + yb = (ax - bx) + (-ay + yb) = x(a - b) + -y(a - b) = (x - y)(a - b)
Ax + Bx + C is not a trinomial!
(x + 3)(a + b)
6a square plus b square
(x + 2)(a + b)
A double replacement reaction.