answersLogoWhite

0

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

User Avatar

Wiki User

12y ago

Still curious? Ask our experts.

Chat with our AI personalities

RossRoss
Every question is just a happy little opportunity.
Chat with Ross
BeauBeau
You're doing better than you think!
Chat with Beau
MaxineMaxine
I respect you enough to keep it real.
Chat with Maxine

Add your answer:

Earn +20 pts
Q: Program to subtract two 8 bit numbers using 8086 microprocessor?
Write your answer...
Submit
Still have questions?
magnify glass
imp