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

EzraEzra
Faith is not about having all the answers, but learning to ask the right questions.
Chat with Ezra
RafaRafa
There's no fun in playing it safe. Why not try something a little unhinged?
Chat with Rafa
DevinDevin
I've poured enough drinks to know that people don't always want advice—they just want to talk.
Chat with Devin

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