8086 Program for 2's Compliment of a number
Explanation :
·
We have a number. Let this number be stored in
register AX. Our task is to find 2’s complement of this number. We use NEG
instruction. It replaces the number in AX with 2’s complement of the number in
AX, directly.
eg. : AX = 1234 H.
NEG AX =
|
1110
|
1101
|
1100
|
1100
|
= EDCC H
|
·
2’s complement of 1234 H = EDCC H
Algorithm :
Step I : Initialize the data memory.
Step II : Load the number in AX.
Step III : Find 2’scomplement of number.
Step IV : Display the result.
Step V : Stop.
Flowchart:
Program :
.model small
.data
a dw 1234H
.code
mov ax, @data ;
Initialize data section
mov
ds, ax
mov
ax, a ;
Load number1 in ax
neg ax ; find 2's compement.
Result in ax
mov ch,
04h ; Count of digits to
be displayed
mov cl,
04h ; Count to roll by 4 bits
mov bx,
ax ; Result in reg bx
l2: rol bx,
cl ; roll bl so that
msb comes to lsb
mov dl,
bl ; load dl with data
to be displayed
and dl,
0fH ; get only lsb
cmp dl,
09 ; check if digit is
0-9 or letter A-F
jbe l4
add dl,
07 ; if letter add 37H
else only add 30H
l4: add dl,
30H
mov ah,
02 ; Function 2 under
INT 21H (Display character)
int 21H
dec ch ; Decrement Count
jnz l2
mov ah,
4cH ; Terminate Program
int 21H
end
Result :
C:\programs>tasm
2'scomp.asm
Turbo
Assembler Version 3.0 Copyright (c) 1988, 1991 Borland
International
Assembling
file: 2'scomp.asm
Passes: 1
Remaining
memory: 438k
C:\programs>tlink
2'scomp.obj
Turbo
Link Version 3.0 Copyright (c) 1987,
1990 Borland International
Warning: No
stack
C:\programs>2'scomp
EDCC
C:\programs>
1 comments:
You can comment your doubts :)
Post a Comment