(ax)(ax) = a2 + 2ax + x2
Chat with our AI personalities
yes
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
Ax + By = C By = -Ax + C y = (-A/B)x + C/B
ax + b = 15 or ax + b = -15
[org 0x0100] mov ax,6 ; load first number in ax add ax,6 ; accumulate sum add ax,6 add ax,6 add ax,6 add ax,6 mov ax, 0x4c00 ; terminate program int 0x21 ------ Another way: [org 0x0100] ; This is a .com file, not an .exe. DOS .com files start at 100h (256 decimal), have no stack segment, are no larger than 64k, and the code and data segments must be the same. xor ax, ax ;zero register mov cx, 6 ;put 6 in counter register for loop instruction start: add ax,6 ; accumulate sum loop start ; decrements cx and serves as conditional jump to start label. mov ax, 0x4c00 ; terminate program int 0x21 (I rarely terminated DOS programs this way using the DOS termination service (int 21h, ah=4ch). Usually, terminating with RetN was enough.)