Professional Documents
Culture Documents
com
Aptitude Questions
1.One of the following is my secret word:AIM DUE MOD OAT TIE.With the list
in front of you, if I were to tell you any one of my secret word, then you would be
able to tell me the number of vowels in my secret word.Which is my secret word?
Ans.TIE
A
B
C
D
E
F
10.What is the maximum number of half-pint bottles of cream that can be filled
with a 4-gallon can of cream(2 pt.=1 qt. and 4 qt.=1 gal)
A.16
B.24
C.30
D.64
Ans.D
11.If the operation,^ is defined by the equation x ^ y = 2x + y,what is the value
of a in 2 ^ a = a ^ 3
A.0
B.1
C.-1
D.4
Ans.B
12.A coffee shop blends 2 kinds of coffee,putting in 2 parts of a 33p. a gm. grade
to 1 part of a 24p. a gm.If the mixture is changed to 1 part of the 33p. a gm. to
2 parts of the less expensive grade,how much will the shop save in blending 100
gms.
A.Rs.90
B.Rs.1.00
C.Rs.3.00
D.Rs.8.00
Ans.C
13.There are 200 questions on a 3 hr examination.Among these questions are 50
mathematics problems.It is suggested that twice as much time be spent on each
maths problem as for each other question.How many minutes should be spent on
mathematics problems
A.36
B.72
C.60
D.100
Ans.B
14.In a group of 15,7 have studied Latin, 8 have studied Greek, and 3 have not
studied either.How many of these studied both Latin and Greek
A.0
B.3
C.4
D.5
Ans.B
15.If 13 = 13w/(1-w) ,then (2w)2 =
A.1/4
B.1/2
C.1
D.2
Ans.C
16. If a and b are positive integers and (a-b)/3.5 = 4/7, then
(A) b < a
(B) b > a
(C) b = a
(D) b >= a
Ans. A
17. In june a baseball team that played 60 games had won 30% of its game
played. After a phenomenal winning streak this team raised its average to 50%
.How many games must the team have won in a row to attain this average?
A. 12
B. 20
C. 24
D. 30
Ans. C
18. M men agree to purchase a gift for Rs. D. If three men drop out how much
more will each have to contribute towards the purchase of the gift/
A. D/(M-3)
B. MD/3
20. 2 hours after a freight train leaves Delhi a passenger train leaves the same
station travelling in the same direction at an average speed of 16 km/hr. After
travelling 4 hrs the passenger train overtakes the freight train. The average
speed of the freight train was?
A. 30
B. 40
C.58
D. 60
Ans. B
24. 1/3 of girls , 1/2 of boys go to canteen .What factor and total number of
classmates go to canteen.
Ans: Cannot be determined.
25. The price of a product is reduced by 30% . By what percentage should it be
increased to make it 100%
Ans: 42.857%
26. There is a square of side 6cm . A circle is inscribed inside the square. Find the
ratio of the area of circle to square.
Ans. 11/14
27. There are two candles of equal lengths and of different thickness. The thicker
one lasts of six hours. The thinner 2 hours less than the thicker one. Ramesh
lights the two candles at the same time. When he went to bed he saw the thicker
one is twice the length of the thinner one. How long ago did Ramesh light the two
candles .
Ans: 3 hours.
28. If M/N = 6/5,then 3M+2N = ?
29. If p/q = 5/4 , then 2p+q= ?
30. If PQRST is a parallelogram what it the ratio of triangle PQS & parallelogram
PQRST .
Ans: 1:2
31. The cost of an item is Rs 12.60. If the profit is 10% over selling price what is
the selling price ?
Ans: Rs 13.86/32. There are 6 red shoes & 4 green shoes . If two of red shoes are drawn what
is the probability of getting red shoes
Ans: 6c2/10c2
33. To 15 lts of water containing 20% alcohol, we add 5 lts of pure water. What is
% alcohol.
10
11
12
13
14
15
16
Aptitude Questions
1.If 2x-y=4 then 6x-3y=?
(a)15
(b)12
(c)18
(d)10
Ans. (b)
2.If x=y=2z and xyz=256 then what is the value of x?
(a)12
(b)8
(c)16
(d)6
Ans. (b)
3. (1/10)18 - (1/10)20 = ?
(a) 99/1020
(b) 99/10
(c) 0.9
(d) none of these
Ans. (a)
4.Pipe A can fill in 20 minutes and Pipe B in 30 mins and Pipe C can empty the
same in 40 mins.If all of them work together, find the time taken to fill the tank
(a) 17 1/7 mins
(b) 20 mins
(c) 8 mins
(d) none of these
Ans. (a)
5. Thirty men take 20 days to complete a job working 9 hours a day.How many
hour a day should 40 men work to complete the job?
(a) 8 hrs
(b) 7 1/2 hrs
(c) 7 hrs
(d) 9 hrs
Ans. (b)
6. Find the smallest number in a GP whose sum is 38 and product 1728
Freshersworld.com Resource Center
total
Ans. 45 one paisa coins, 2 five paise coins, 2 ten paise coins, and 1 twenty-five
paise coins.
20.A monkey starts climbing up a tree 20ft. tall. Each hour, it hops 3ft. and slips
back 2ft. How much time would it take the monkey to reach the top?
Ans.18 hours.
21. What is the missing number in this series?
8 2 14 6 11 ? 14 6 18 12
Ans. 9
22. A certain type of mixture is prepared by mixing brand A at Rs.9 a kg. with
brand B at Rs.4 a kg. If the mixture is worth Rs.7 a kg., how many kgs. of
brand A are needed to make 40kgs. of the mixture?
Ans. Brand A needed is 24kgs.
36.For a motorist there are three ways going from City A to City C. By way of
bridge the distance is 20 miles and toll is $0.75. A tunnel between the two cities
is a distance of 10 miles and toll is $1.00 for the vehicle and driver and $0.10 for
each passenger. A two-lane highway without toll goes east for 30 miles to city B
and then 20 miles in a northwest direction to City C.
1. Which is the shortest route from B to C
(a) Directly on toll free highway to City C
(b) The bridge
(c) The Tunnel
(d) The bridge or the tunnel
(e) The bridge only if traffic is heavy on the toll free highway
Ans. (a)
2. The most economical way of going from City A to City B, in terms of toll and
distance is to use the
(a) tunnel
(b) bridge
(c) bridge or tunnel
(d) toll free highway
(e) bridge and highway
Ans. (a)
3. Jim usually drives alone from City C to City A every working day. His firm
deducts a percentage of employee pay for lateness. Which factor would most
influence his choice of the bridge or the tunnel ?
(a) Whether his wife goes with him
(b) scenic beauty on the route
Freshersworld.com Resource Center
38.
1. All G's are H's
2. All G's are J's or K's
3. All J's and K's are G's
4. All L's are K's
5. All N's are M's
6. No M's are G's
1. If no P's are K's, which of the following must be true?
(a) All P's are J's
(b) No P is a G
(c) No P is an H
Freshersworld.com Resource Center
39.In country X, democratic, conservative and justice parties have fought three
civil wars in twenty years. TO restore stability an agreement is reached to rotate
the top offices President, Prime Minister and Army Chief among the parties so
that each party controls one and only one office at all times. The three top office
holders must each have two deputies, one from each of the other parties. Each
deputy must choose a staff composed of equally members of his or her chiefs
party and member of the third party.
1. When Justice party holds one of the top offices, which of the following cannot
Freshersworld.com Resource Center
Ans. (a)
41. The office staff of XYZ corporation presently consists of three bookeepers--A,
B, C and 5 secretaries D, E, F, G, H. The management is planning to open a new
office in another city using 2 bookeepers and 3 secretaries of the present staff .
To do so they plan to seperate certain individuals who don't function well
together. The following guidelines were established to set up the new office
I. Bookeepers A and C are constantly finding fault with one another and should
not be sent together to the new office as a team
II. C and E function well alone but not as a team , they should be seperated
III. D and G have not been on speaking terms and shouldn't go together
IV Since D and F have been competing for promotion they shouldn't be a team
1.If A is to be moved as one of the bookeepers,which of the following cannot be a
possible working unit.
A.ABDEH
B.ABDGH
C.ABEFH
D.ABEGH
Ans.B
2.If C and F are moved to the new office,how many combinations are possible
A.1
B.2
Freshersworld.com Resource Center
10
11
12
Q2. On Aug 15th with the temperature at 97 degrees farenheit it begins to rain at
1 PM. What is the minimum number
of lines on which service will be affected?
(A) 2
(B) 3
(C) 4
(D) 5
Ans. C
Q3. On which of the following occasions would service be on the greatest number
of lines disrupted.
(A) A snowy afternoon with the temperature at 45 degree farenheit
(B) A snowy morning with the temperature at 45 degree farenheit
(C) A rainy afternoon with the temperature at 45 degree farenheit
(D) A rainy afternoon with the temperature at 95 degree farenheit
Ans. B
Freshersworld.com Resource Center
13
44. In a certain society, there are two marriage groups, red and brown. No
marriage is permitted within a group. On marriage, males become part of their
wives groups; women remain in their own group. Children belong to the same
group as their parents. Widowers and divorced males revert to the group of their
birth. Marriage to more than one person at the same time and marriage to a
direct descendant are forbidden
Q1. A brown female could have had
I. A grandfather born Red
II. A grandmother born Red
III Two grandfathers born Brown
(A) I only
(B) III only
(C) I, II and III
(D) I and II only
Ans. D
Q3. Which of the following is not permitted under the rules as stated.
(A) A brown male marrying his father's sister
(B) A red female marrying her mother's brother
(C) A widower marrying his wife's sister
(D) A widow marrying her divorced daughter's ex-husband
Ans. B
Q4. If widowers and divorced males retained their group they had upon marrying
which of the following would be permissible ( Assume that no previous marriage
occurred)
(A) A woman marrying her dead sister's husband
(B) A woman marrying her divorced daughter's ex-husband
(C) A widower marrying his brother's daughter
(D) A woman marrying her mother's brother who is a widower.
14
15
16
17
18
Verbal
1. Depreciation: deflation, depression, devaluation, fall, slump
2. Deprecate : feel and express disapproval,
3. Incentive : thing one encourages one to do (stimulus)
4. Echelon : level of authority or responsibility
5. Innovation : make changes or introduce new things
6. Intermittent : externally stopping and then starting
7. Detrimental: harmful
8. Conciliation : make less angry or more friendly
9. Orthodox: conventional or traditional, superstitious
10. Fallible : liable to error
11. Volatile : ever changing
12. Manifest: clear and obvious
13. Connotation : suggest or implied meaning of expression
14. Reciprocal: reverse or opposite
15. Agrarian : related to agriculture
16. Vacillate : undecided or dilemma
17. Expedient : fitting proper, desirable
18. Simulate : produce artificially resembling an existing one.
19. Access : to approach
20. Compensation: salary
21. Truncate : shorten by cutting
22. Adherence : stick
23. Heterogeneous: non similar things
24. Surplus : excessive
25. Assess : determine the amount or value
Freshersworld.com Resource Center
75. archipelago:islands::
(a) arbor:bower
(b) garden:flower
(c) mountain:valley
(d) sand:dune
(e) constellation:star
Ans. (a)
76. crow:boastful ::
(a) smirk:witty
(b) conceal:s;y
(c) pout:sulky
(d) blush:coarse
(e) bluster:unhappy
Ans. (a)
77. bracket:shelf ::
(a) hammer:anvil
(b) girder:rivet
(c) strut:rafter
(d) valve:pipe
(e) bucket:well
Ans. (a)
78. taxonomy:classification ::
(a) etymology:derivation
(b) autonomy:authorization
(c) economy:rationalization
(d) tautology:justification
(e) ecology:urbanisation
Ans. (a)
79. moderator:debate ::
(a) legislator:election
(b) chef:banquet
(c) auditor:lecture
(d) conspirator:plot
(e) umpire:game
93. Disregarded
(a) heed
(b) hopeful
(c) evade
(d) dense
Ans. (a)
94. Obviate
(a) becloud
(b) necessitate
95. Superficial
(a) profound
(b) exaggerated
(c) subjective
(d) spirited
Ans. (a)
96. chief : tribe :: governer : state
97. epaulette : shoulder :: tiara : head
98. guttural : throat :: gastric : stomach
99. inept : clever :: languid : active
100. Erudite : scholar :: illiterate : ignorant
A
Aptitude Questions
Solve the following and check with the answers given at the end.
1.
2.
3.
A dishonest shopkeeper professes to sell pulses at the cost price, but he uses a
false weight of 950gm. for a kg. His gain is %.
4.
A software engineer has the capability of thinking 100 lines of code in five
minutes and can type 100 lines of code in 10 minutes. He takes a break for
five minutes after every ten minutes. How many lines of codes will he
complete typing after an hour?
5.
A man was engaged on a job for 30 days on the condition that he would get a
wage of Rs. 10 for the day he works, but he have to pay a fine of Rs. 2 for
each day of his absence. If he gets Rs. 216 at the end, he was absent for work
for ... days.
6.
7.
(d)
10
(d)
100
8.
A man bought a horse and a cart. If he sold the horse at 10 % loss and the cart
at 20 % gain, he would not lose anything; but if he sold the horse at 5% loss
and the cart at 5% gain, he would lose Rs. 10 in the bargain. The amount paid
by him was Rs._______ for the horse and Rs.________ for the cart.
9.
A tennis marker is trying to put together a team of four players for a tennis
tournament out of seven available. males - a, b and c; females m, n, o and p.
All players are of equal ability and there must be at least two males in the
Freshersworld.com Resource Center
5
1
4
22
6
3
10.
11.
The number on the faces adjacent to the face marked 5 are _______ .
12.
Which of the following pairs does not correctly give the numbers on the
opposite faces.
(1)
6,5
(2)
4,1
(3)
1,3
(4)
4,2
13.
Five farmers have 7, 9, 11, 13 & 14 apple trees, respectively in their orchards.
Last year, each of them discovered that every tree in their own orchard bore
exactly the same number of apples. Further, if the third farmer gives one apple
to the first, and the fifth gives three to each of the second and the fourth, they
would all have exactly the same number of apples. What were the yields per
tree in the orchards of the third and fourth farmers?
14.
Five boys were climbing a hill. J was following H. R was just ahead of G. K
was between G & H. They were climbing up in a column. Who was the
second?
15-18 John is undecided which of the four novels to buy. He is considering a spy
thriller, a Murder mystery, a Gothic romance and a science fiction novel. The
books are written by Rothko, Gorky, Burchfield and Hopper, not necessary in
that order, and published by Heron, Piegon, Blueja and sparrow, not necessary
in that order.
(1) The book by Rothko is published by Sparrow.
(2) The Spy thriller is published by Heron.
Freshersworld.com Resource Center
16.
17.
John purchases books by the authors whose names come first and third in
alphabetical order. He does not buy the books ______.
18.
On the basis of the first paragraph and statement (2), (3) and (4) only, it is
possible to deduce that
1. Rothko wrote the murder mystery or the spy thriller
2. Sparrow published the murder mystery or the spy thriller
3. The book by Burchfield is published by Sparrow.
19.
If a light flashes every 6 seconds, how many times will it flash in of an
hour?
20.
If point P is on line segment AB, then which of the following is always true?
(1) AP = PB (2) AP > PB (3) PB > AP (4) AB > AP (5) AB > AP + PB
21.
All men are vertebrates. Some mammals are vertebrates. Which of the
following conclusions drawn from the above statement is correct.
All men are mammals
All mammals are men
Some vertebrates are mammals.
None
22.
Which of the following statements drawn from the given statements are
correct?
Given:
All watches sold in that shop are of high standard. Some of the HMT watches
are sold in that shop.
a) All watches of high standard were manufactured by HMT.
b) Some of the HMT watches are of high standard.
c) None of the HMT watches is of high standard.
d) Some of the HMT watches of high standard are sold in that shop.
23-27.
1.
2.
3.
4.
5.
24.
25.
Which of the following towns must be situated both south and west of at least
one other town?
A. Ashland only
B. Ashland and Fredericktown
C. Dover and Fredericktown
D. Dover, Coshocton and Fredericktown
E. Coshocton, Dover and East Liverpool.
26.
Which of the following statements, if true, would make the information in the
numbered statements more specific?
(a) Coshocton is north of Dover.
(b) East Liverpool is north of Dover
(c) Ashland is east of Bowling green.
(d) Coshocton is east of Fredericktown
(e) Bowling green is north of Fredericktown
27.
28.
Eight friends Harsha, Fakis, Balaji, Eswar, Dhinesh, Chandra, Geetha, and
Ahmed are sitting in a circle facing the center. Balaji is sitting between Geetha
and Dhinesh. Harsha is third to the left of Balaji and second to the right of
Ahmed. Chandra is sitting between Ahmed and Geetha and Balaji and Eshwar
are not sitting opposite to each other. Who is third to the left of Dhinesh?
29.
30.
The length of the side of a square is represented by x+2. The length of the side
of an equilateral triangle is 2x. If the square and the equilateral triangle have
equal perimeter, then the value of x is _______.
32.
(2)
39/50 (3)
7/25
33.
(4)
3/10
(5)
59/100
35.
A man bought a horse and a cart. If he sold the horse at 10 % loss and the cart
at 20 % gain, he would not lose anything; but if he sold the horse at 5% loss
and the cart at 5% gain, he would lose Rs. 10 in the bargain. The amount paid
by him was Rs._______ for the horse and Rs.________ for the cart.
Answers:
1.
Answer:
30 days.
Explanation:
Before:
One day work
One mans one day work
Now:
No. Of workers
One day work
=
=
1 / 20
1 / ( 20 * 75)
=
=
50
50 * 1 / ( 20 * 75)
The total no. of days required to complete the work = (75 * 20) / 50 =
30
2.
Answer:
0%
Explanation:
Since 3x / 2 = x / (2 / 3)
3.
Answer:
5.3 %
Explanation:
He sells 950 grams of pulses and gains 50 grams.
If he sells 100 grams of pulses then he will gain (50 / 950) *100 =
5.26
4.
Answer:
250 lines of codes
Freshersworld.com Resource Center
5.
Answer:
7 days
Explanation:
The equation portraying the given problem is:
10 * x 2 * (30 x) = 216 where x is the number of working days.
Solving this we get x = 23
Number of days he was absent was 7 (30-23) days.
6.
Answer:
150 men.
Explanation:
One days work
One hours work
One mans work
=
=
=
2 / (7 * 90)
2 / (7 * 90 * 8)
2 / (7 * 90 * 8 * 75)
Answer:
(c) 1
Explanation:
a percent of b : (a/100) * b
b percent of a : (b/100) * a
a percent of b divided by b percent of a : ((a / 100 )*b) / (b/100) * a ))
=1
8.
Answer:
Cost price of horse = Rs. 400 & the cost price of cart = 200.
Explanation:Let x be the cost price of the horse and y be the cost price of the cart.
In the first sale there is no loss or profit. (i.e.) The loss obtained is equal to the
gain.
Therefore
(10/100) * x
= (20/100) * y
= 2*y
-----------------(1)
Answer:
3.
Explanation:
Since inclusion of any male player will reject a female from the team.
Since there should be four member in the team and only three males are
available, the girl, n should included in the team always irrespective of others
selection.
10.
Answer:
5
11.
Answer:
1,2,3 & 4
12.
Answer:
B
13.
Answer:
11 & 9 apples per tree.
Explanation:
Let a, b, c, d & e be the total number of apples bored per year in A, B,
C, D & E s orchard. Given that
a+1=b+3=c1=d+3=e6
But the question is to find the number of apples bored per tree in C and D s
orchard. If is enough to consider c 1 = d + 3.
Since the number of trees in Cs orchard is 11 and that of Ds orchard
is 13. Let x and y be the number of apples bored per tree in C & d s orchard
respectively.
Therefore 11 x 1 = 13 y + 3
By trial and error method, we get the value for x and y as 11 and 9
14.
Answer:
G.
Explanation:
The order in which they are climbing is R G K H J
15 18
Freshersworld.com Resource Center
Author
Rathko
Gorky
Burchfield
Hopper
Publisher
Heron
Piegon
Blueja
Sparrow
Explanation:
Given
Novel Name
Spy thriller
Murder mystery
Gothic romance
Science fiction
Author
Rathko
Gorky
Burchfield
Hopper
Publisher
Heron
Piegon
Blueja
Sparrow
Answer:
451 times.
Explanation:
There are 60 minutes in an hour.
In of an hour there are (60 * ) minutes = 45 minutes.
In of an hour there are (60 * 45) seconds = 2700 seconds.
Light flashed for every 6 seconds.
In 2700 seconds 2700/6 = 450 times.
The count start after the first flash, the light will flashes 451 times in
of an hour.
20.
Answer:
(4)
Explanation:
P
A
B
Since p is a point on the line segment AB, AB > AP
21.
Answer: (c)
22.
Ahmed
23 - 27.Answer:
Fakis
28.
Answer: Fakis
Explanation:
Chandra
Harsha
Geetha
Eswar
Balaji
Dhinesh
29.
Answer:
(5).
Explanation:
Since every alternative letter starting from B of the English alphabet is
written in small letter, the letters written in small letter are b, d, f...
In the first two answers the letter E is written in both small & capital
letters, so they are not the correct answers. But in third and fourth answers the
letter is written in small letter instead capital letter, so they are not the
answers.
30.
Answer:
x=4
Explanation:
Since the side of the square is x + 2, its perimeter = 4 (x + 2) = 4x + 8
Since the side of the equilateral triangle is 2x, its perimeter = 3 * 2x = 6x
Also, the perimeters of both are equal.
(i.e.) 4x + 8 = 6x
(i.e.) 2x = 8 x = 4.
31.
Answer:
(y 2) / y.
Explanation:
To type a manuscript karthik took y hours.
Therefore his speed in typing = 1/y.
He was called away after 2 hours of typing.
Therefore the work completed = 1/y * 2.
Therefore the remaining work to be completed = 1 2/y.
(i.e.) work to be completed = (y-2)/y
32.
Answer:
(2)
Answer:
1
Explanation:
One is the only number exists without reciprocal because the
reciprocal of one is one itself.
34.
Answer:
Sudhir had 39 cars, Arvind had 21 cars and Gauri had 12 cars.
Explanation:
Sudhir
Arvind
Finally
24
Before Gauris transaction 12
Before Arvinds transaction 6
Before Sudhir s transaction 39
35.
24
12
42
21
Gauri
24
48
24
12
Answer:
Cost price of horse: Rs. 400 &
Cost price of cart:
Rs. 200
Explanation:
Let x be the cost of horse & y be the cost of the cart.
10 % of loss in selling horse = 20 % of gain in selling the cart
Therefore
(10 / 100) * x = (20 * 100) * y
x = 2y -----------(1)
5 % of loss in selling the horse is 10 more than the 5 % gain in selling
the cart.
Therefore
(5 / 100) * x - 10 = (5 / 100) * y
5x - 1000
=
5y
Substituting (1)
10y - 1000 = 5y
5y = 1000
y = 200
x = 400
from (1)
Exercise 2.1
For the following, find the next term in the series
1. 6, 24, 60,120, 210
a) 336
b) 366
c) 330
d) 660
Answer : a) 336
Explanation : The series is 1.2.3, 2.3.4, 3.4.5, 4.5.6, 5.6.7, .....
product)
2. 1, 5, 13, 25
Freshersworld.com Resource Center
10
( '.' means
Answer : 41
Explanation : The series is of the form 0^2+1^2, 1^2+2^2,...
3. 0, 5, 8, 17
Answer : 24
Explanation : 1^2-1, 2^2+1, 3^2-1, 4^2+1, 5^2-1
4. 1, 8, 9, 64, 25 (Hint : Every successive terms are related)
Answer : 216
Explanation : 1^2, 2^3, 3^2, 4^3, 5^2, 6^3
5. 8,24,12,36,18,54
Answer : 27
6. 71,76,69,74,67,72
Answer : 67
7. 5,9,16,29,54
Answer : 103
Explanation : 5*2-1=9; 9*2-2=16; 16*2-3=29; 29*2-4=54; 54*2-5=103
8. 1,2,4,10,16,40,64 (Successive terms are related)
Answer : 200
Explanation : The series is powers of 2 (2^0,2^1,..).
All digits are less than 8. Every second number is in octal number system.
128 should follow 64. 128 base 10 = 200 base 8.
Exercise 2.2
Find the odd man out.
1. 3,5,7,12,13,17,19
Answer : 12
Explanation : All but 12 are odd numbers
2. 2,5,10,17,26,37,50,64
Answer : 64
Explanation : 2+3=5; 5+5=10; 10+7=17; 17+9=26; 26+11=37; 37+13=50;
50+15=65;
3. 105,85,60,30,0,-45,-90
Answer : 0
Freshersworld.com Resource Center
11
Exercise 3
Solve the following.
1. What is the number of zeros at the end of the product of the numbers from 1 to
100?
Answer : 127
2. A fast typist can type some matter in 2 hours and a slow typist can type the same in
3 hours. If both type combinely, in how much time will they finish?
Answer : 1 hr 12 min
Explanation : The fast typist's work done in 1 hr = 1/2
The slow typist's work done in 1 hr = 1/3
If they work combinely, work done in 1 hr = 1/2+1/3 = 5/6
So, the work will be completed in 6/5 hours. i.e., 1+1/5 hours = 1hr 12 min
3. Gavaskar's average in his first 50 innings was 50. After the 51st innings, his
average was 51. How many runs did he score in his 51st innings. (supposing that he
lost his wicket in his 51st innings)
Answer : 101
Explanation : Total score after 50 innings = 50*50 = 2500
Total score after 51 innings = 51*51 = 2601
So, runs made in the 51st innings = 2601-2500 = 101
If he had not lost his wicket in his 51st innings, he would have scored
an unbeaten 50 in his 51st innings.
4. Out of 80 coins, one is counterfeit. What is the minimum number of weighings
needed to find out the counterfeit coin?
Answer : 4
5. What can you conclude from the statement : All green are blue, all blue are red. ?
(i)
some blue are green
(ii)
some red are green
(iii) some green are not red
(iv)
all red are blue
(a) i or ii but not both
(b) i & ii only
(c) iii or iv but not both
(d) iii & iv
Answer : (b)
6. A rectangular plate with length 8 inches, breadth 11 inches and thickness 2 inches
is available. What is the length of the circular rod with diameter 8 inches and equal to
the volume of the rectangular plate?
Freshersworld.com Resource Center
12
13
14
Exercise 3
Try the following.
1. There are seventy clerks working in a company, of which 30 are females.
Also, 30 clerks are married; 24 clerks are above 25 years of age; 19 married
clerks are above 25 years, of which 7 are males; 12 males are above 25 years
of age; and 15 males are married. How many bachelor girls are there and how
many of these are above 25?
2. A man sailed off from the North Pole. After covering 2,000 miles in one
direction he turned West, sailed 2,000 miles, turned North and sailed ahead
another 2,000 miles till he met his friend. How far was he from the North Pole
and in what direction?
3. Here is a series of comments on the ages of three persons J, R, S by
themselves.
S : The difference between R's age and mine is three years.
J : R is the youngest.
R : Either I am 24 years old or J 25 or S 26.
J : All are above 24 years of age.
S : I am the eldest if and only if R is not the youngest.
R : S is elder to me.
J : I am the eldest.
Freshersworld.com Resource Center
15
16
17
18
19
C Questions
Note : All the programs are tested under Turbo C/C++ compilers.
It is assumed that,
Programs run under DOS environment,
The underlying machine is an x86 system,
Program is compiled using Turbo C/C++ compiler.
The program output may depend on the information based on this assumptions
(for example sizeof(int) == 2 may be assumed).
Predict the output or error(s) for the following:
1. void main()
{
int const * p=5;
printf("%d",++(*p));
}
Answer:
Compiler error: Cannot modify a constant value.
Explanation:
p is a pointer to a "constant integer". But we tried to change the value
of the "constant integer".
2. main()
{
char s[ ]="man";
int i;
for(i=0;s[ i ];i++)
printf("\n%c%c%c%c",s[ i ],*(s+i),*(i+s),i[s]);
}
Answer:
mmmm
aaaa
nnnn
Explanation:
s[i], *(i+s), *(s+i), i[s] are all different ways of expressing the same
idea. Generally array name is the base address for that array. Here s is the base
address. i is the index number/displacement from the base address. So, indirecting it
with * is same as s[i]. i[s] may be surprising. But in the case of C it is same as s[i].
3. main()
{
float me = 1.1;
double you = 1.1;
if(me==you)
printf("I love U");
Freshersworld.com Resource Center
9. main()
{
int i=3;
switch(i)
{
default:printf("zero");
case 1: printf("one");
break;
case 2:printf("two");
break;
case 3: printf("three");
break;
}
}
Answer :
three
Explanation :
The default case can be placed anywhere inside the loop. It is executed
only when all other cases doesn't match.
10. main()
{
printf("%x",-1<<4);
}
Answer:
fff0
Explanation :
-1 is internally represented as all 1's. When left shifted four times the
least significant 4 bits are filled with 0's.The %x format specifier specifies that the
integer value be printed as a hexadecimal value.
11. main()
{
char string[]="Hello World";
display(string);
}
void display(char *string)
{
printf("%s",string);
}
Answer:
Compiler Error : Type mismatch in redeclaration of function display
Explanation :
In third line, when the function display is encountered, the compiler
doesn't know anything about the function display. It assumes the arguments and
Freshersworld.com Resource Center
Explanation:
In the expression !i>14 , NOT (!) operator has more precedence than
> symbol. ! is a unary logical operator. !i (!10) is 0 (not of true is false). 0>14 is
false (zero).
15. #include<stdio.h>
Freshersworld.com Resource Center
main()
{
clrscr();
Freshersworld.com Resource Center
29)
void main()
{
char far *farther,*farthest;
printf("%d..%d",sizeof(farther),sizeof(farthest));
}
Answer:
4..2
Explanation:
the second pointer is of char type and not a far pointer
30)
main()
{
int i=400,j=300;
printf("%d..%d");
}
Answer:
400..300
Explanation:
printf takes the values of the first two assignments of the program. Any
number of printf's may be given. All of them take only the first two
10
main()
{
char *p;
p="Hello";
printf("%c\n",*&*p);
}
Answer:
H
Explanation:
* is a dereference operator & is a reference operator. They can be
applied any number of times provided it is meaningful. Here p points
to the first character in the string "Hello". *p dereferences it and so its
value is H. Again & references it to an address and * dereferences it to
the value H.
32)
main()
{
int i=1;
while (i<=5)
{
printf("%d",i);
if (i>2)
goto here;
i++;
}
}
fun()
{
here:
printf("PP");
}
Answer:
Compiler error: Undefined label 'here' in function main
Explanation:
Labels have functions scope, in other words The scope of the labels is
limited to functions . The label 'here' is available in function fun()
Hence it is not visible in function main.
33)
main()
{
static char names[5][20]={"pascal","ada","cobol","fortran","perl"};
int i;
char *t;
Freshersworld.com Resource Center
11
void main()
{
int i=5;
printf("%d",i++ + ++i);
}
Answer:
Output Cannot be predicted exactly.
Explanation:
Side effects are involved in the evaluation of i
35)
void main()
{
int i=5;
printf("%d",i+++++i);
}
Answer:
Compiler Error
Explanation:
The expression i+++++i is parsed as i ++ ++ + i which is an illegal
combination of operators.
36)
#include<stdio.h>
main()
{
int i=1,j=2;
switch(i)
{
case 1: printf("GOOD");
break;
case j: printf("BAD");
break;
}
}
Answer:
Compiler Error: Constant expression required in function main.
Freshersworld.com Resource Center
12
main()
{
int i;
printf("%d",scanf("%d",&i)); // value 10 is given as input here
}
Answer:
1
Explanation:
Scanf returns number of items successfully read and not 1/0. Here 10
is given as input which should have been scanned successfully. So
number of items read is 1.
38)
39)
main()
{
int i=0;
for(;i++;printf("%d",i)) ;
printf("%d",i);
}
Answer:
1
Explanation:
before entering into the for loop the checking condition is "evaluated".
Here it evaluates to 0 (false) and comes out of the loop, and i is
incremented (note the semicolon after the for loop).
40)
#include<stdio.h>
main()
{
char s[]={'a','b','c','\n','c','\0'};
char *p,*str,*str1;
Freshersworld.com Resource Center
13
#include<stdio.h>
main()
{
struct xx
{
int x=3;
char name[]="hello";
};
struct xx *s=malloc(sizeof(struct xx));
printf("%d",s->x);
printf("%s",s->name);
}
Answer:
Compiler Error
Explanation:
Initialization should not be done for structure members inside the
structure declaration
42)
#include<stdio.h>
main()
{
struct xx
{
int x;
struct yy
{
char s;
struct xx *p;
};
struct yy *q;
Freshersworld.com Resource Center
14
main()
{
extern int i;
i=20;
printf("%d",sizeof(i));
}
Answer:
Linker error: undefined symbol '_i'.
Explanation:
extern declaration specifies that the variable i is defined somewhere
else. The compiler passes the external variable to be resolved by the
linker. So compiler doesn't find an error. During linking the linker
searches for the definition of i. Since it is not found the linker flags an
error.
44)
main()
{
printf("%d", out);
}
int out=100;
Answer:
Compiler error: undefined symbol out in function main.
Explanation:
The rule is that a variable is available for use from the point of
declaration. Even though a is a global variable, it is not available for
main. Hence an error.
45)
main()
{
extern out;
printf("%d", out);
}
int out=100;
Answer:
100
Explanation:
This is the correct way of writing the previous program.
46)
main()
Freshersworld.com Resource Center
15
main( )
{
int a[2][3][2] = {{{2,4},{7,8},{3,4}},{{2,2},{2,3},{3,4}}};
printf(%u %u %u %d \n,a,*a,**a,***a);
printf(%u %u %u %d \n,a+1,*a+1,**a+1,***a+1);
}
Answer:
100, 100, 100, 2
114, 104, 102, 3
Explanation:
The given array is a 3-D one. It can also be viewed as a 1-D array.
2 4
7 8 3
4 2
2 2
3
3
4
100 102 104 106 108 110 112 114 116 118 120 122
thus, for the first printf statement a, *a, **a give address of first
element . since the indirection ***a gives the value. Hence, the first
line of the output.
for the second printf a+1 increases in the third dimension thus points to
value at 114, *a+1 increments in second dimension thus points to 104,
**a +1 increments the first dimension thus points to 102 and ***a+1
first gets the value at first location and then increments it by 1. Hence,
the output.
48)
main( )
{
Freshersworld.com Resource Center
16
main( )
{
static int a[ ] = {0,1,2,3,4};
int *p[ ] = {a,a+1,a+2,a+3,a+4};
int **ptr = p;
ptr++;
printf(\n %d %d %d, ptr-p, *ptr-a, **ptr);
*ptr++;
printf(\n %d %d %d, ptr-p, *ptr-a, **ptr);
*++ptr;
printf(\n %d %d %d, ptr-p, *ptr-a, **ptr);
++*ptr;
printf(\n %d %d %d, ptr-p, *ptr-a, **ptr);
}
Answer:
111
222
333
344
Explanation:
Let us consider the array and the two pointers with some address
a
0
1
2
3
4
100
102
104
106
108
Freshersworld.com Resource Center
17
main( )
{
char *q;
int j;
for (j=0; j<3; j++) scanf(%s ,(q+j));
for (j=0; j<3; j++) printf(%c ,*(q+j));
for (j=0; j<3; j++) printf(%s ,(q+j));
}
Explanation:
Here we have only one pointer to type char and since we take input in
the same pointer thus we keep writing over in the same location, each
time shifting the pointer value by 1. Suppose the inputs are MOUSE,
TRACK and VIRTUAL. Then for the first input suppose the pointer
starts at location 100 then the input one is stored as
M
O
U
S
E
\0
When the second input is given the pointer is incremented as j value
becomes 1, so the input is filled in memory starting from 101.
M
T
R
A
C
K
\0
The third input starts filling from the location 102
Freshersworld.com Resource Center
18
main( )
{
void *vp;
char ch = g, *cp = goofy;
int j = 20;
vp = &ch;
printf(%c, *(char *)vp);
vp = &j;
printf(%d,*(int *)vp);
vp = cp;
printf(%s,(char *)vp + 3);
}
Answer:
g20fy
Explanation:
Since a void pointer is used it can be type casted to any other type
pointer. vp = &ch stores address of char ch and the next statement
prints the value stored in vp after type casting it to the proper data type
pointer. the output is g. Similarly the output from second printf is
20. The third printf statement type casts it to print the string from the
4th value hence the output is fy.
52)
main ( )
{
static char *s[ ] = {black, white, yellow, violet};
char **ptr[ ] = {s+3, s+2, s+1, s}, ***p;
p = ptr;
**++p;
printf(%s,*--*++p + 3);
}
Answer:
ck
Explanation:
In this problem we have an array of char pointers pointing to start of 4
strings. Then we have ptr which is a pointer to a pointer of type char
and a variable p which is a pointer to a pointer to a pointer of type
char. p hold the initial value of ptr, i.e. p = s+3. The next statement
increment value in p by 1 , thus now value of p = s+2. In the printf
Freshersworld.com Resource Center
19
54)
main()
{
int i, n;
char *x = girl;
n = strlen(x);
*x = x[n];
for(i=0; i<n; ++i)
{
printf(%s\n,x);
x++;
}
}
Answer:
(blank space)
irl
rl
l
Explanation:
Here a string (a pointer to char) is initialized with a value girl. The
strlen function returns the length of the string, thus n has a value 4.
The next statement assigns value at the nth location (\0) to the first
location. Now the string becomes \0irl . Now the printf statement
prints the string after each iteration it increments it starting position.
Loop starts from 0 to 4. The first time x[0] = \0 hence it prints
nothing and pointer value is incremented. The second time it prints
from x[1] i.e irl and the third time it prints rl and the last time it
prints l and the loop terminates.
int i,j;
for(i=0;i<=10;i++)
{
j+=5;
assert(i<5);
}
Answer:
Runtime error: Abnormal program termination.
assert failed (i<5), <file name>,<line number>
Explanation:
20
main()
{
int i=-1;
+i;
printf("i = %d, +i = %d \n",i,+i);
}
Answer:
i = -1, +i = -1
Explanation:
Unary + is the only dummy operator in C. Where-ever it comes you
can just ignore it just because it has no effect in the expressions (hence
the name dummy operator).
56)
What are the files which are automatically opened when a C file is executed?
Answer:
stdin, stdout, stderr (standard input,standard output,standard error).
main()
{
char name[10],s[12];
scanf(" \"%[^\"]\"",s);
}
How scanf will execute?
Answer:
First it checks for the leading white space and discards it.Then it
matches with a quotation mark and then it reads all character upto
another quotation mark.
59)
21
main()
{
main();
}
Answer:
Runtime error : Stack overflow.
Explanation:
main function calls itself again and again. Each time the function is
called its return address is stored in the call stack. Since there is no
condition to terminate the function call, the call stack overflows at
runtime. So it terminates the program and results in an error.
61)
main()
{
char *cptr,c;
void *vptr,v;
c=10; v=0;
cptr=&c; vptr=&v;
printf("%c%v",c,v);
}
Answer:
Compiler error (at line number 4): size of v is Unknown.
Explanation:
You can create a variable of type void * but not of type void, since
void is an empty type. In the second line you are creating variable vptr
of type void * and v of type void hence an error.
62)
main()
{
char *str1="abcd";
char str2[]="abcd";
printf("%d %d %d",sizeof(str1),sizeof(str2),sizeof("abcd"));
}
Answer:
255
Explanation:
In first sizeof, str1 is a character pointer so it gives you the size of the
pointer variable. In second sizeof the name str2 indicates the name of
the array whose size is 5 (including the '\0' termination character). The
third sizeof is similar to the second one.
Freshersworld.com Resource Center
22
63)
main()
{
char not;
not=!2;
printf("%d",not);
}
Answer:
0
Explanation:
! is a logical operator. In C the value 0 is considered to be the boolean
value FALSE, and any non-zero value is considered to be the boolean
value TRUE. Here 2 is a non-zero value so TRUE. !TRUE is FALSE
(0) so it prints 0.
64)
#define FALSE -1
#define TRUE 1
#define NULL 0
main() {
if(NULL)
puts("NULL");
else if(FALSE)
puts("TRUE");
else
puts("FALSE");
}
Answer:
TRUE
Explanation:
The input program to the compiler after processing by the preprocessor
is,
main(){
if(0)
puts("NULL");
else if(-1)
puts("TRUE");
else
puts("FALSE");
}
Preprocessor doesn't replace the values given inside the double quotes.
The check by if condition is boolean value false so it goes to else. In
second if -1 is boolean value true hence "TRUE" is printed.
65)
main()
{
int k=1;
Freshersworld.com Resource Center
23
main()
{
int y;
scanf("%d",&y); // input given is 2000
if( (y%4==0 && y%100 != 0) || y%100 == 0 )
printf("%d is a leap year");
else
printf("%d is not a leap year");
}
Answer:
2000 is a leap year
Explanation:
An ordinary program to check if leap year or not.
67)
#define max 5
#define int arr1[max]
main()
{
typedef char arr2[max];
arr1 list={0,1,2,3,4};
arr2 name="name";
printf("%d %s",list[0],name);
}
Answer:
Compiler error (in the line arr1 list = {0,1,2,3,4})
Explanation:
arr2 is declared of type array of size 5 of characters. So it can be used
to declare the variable name of the type arr2. But it is not the case of
arr1. Hence an error.
Rule of Thumb:
#defines are used for textual replacement whereas typedefs are used
for declaring new types.
68)
int i=10;
main()
{
Freshersworld.com Resource Center
24
main()
{
int *j;
{
int i=10;
j=&i;
}
printf("%d",*j);
}
Answer:
10
Explanation:
The variable i is a block level variable and the visibility is inside that
block only. But the lifetime of i is lifetime of the function so it lives
upto the exit of main function. Since the i is still allocated space, *j
prints the value stored in i since j points i.
70)
main()
{
int i=-1;
-i;
printf("i = %d, -i = %d \n",i,-i);
Freshersworld.com Resource Center
25
#include<stdio.h>
main()
{
const int i=4;
float j;
j = ++i;
printf("%d %f", i,++j);
}
Answer:
Compiler error
Explanation:
i is a constant. you cannot change the value of constant
72)
#include<stdio.h>
main()
{
int a[2][2][2] = { {10,2,3,4}, {5,6,7,8} };
int *p,*q;
p=&a[2][2][2];
*q=***a;
printf("%d..%d",*p,*q);
}
Answer:
garbagevalue..1
Explanation:
p=&a[2][2][2] you declare only two 2D arrays. but you are trying to
access the third 2D(which you are not declared) it will print garbage
values. *q=***a starting address of a is assigned integer pointer. now q
is pointing to starting address of a.if you print *q meAnswer:it will
print first element of 3D array.
73)
#include<stdio.h>
main()
{
register i=5;
char j[]= "hello";
printf("%s %d",j,i);
}
Freshersworld.com Resource Center
26
main()
{
int i=5,j=6,z;
printf("%d",i+++j);
}
Answer:
11
Explanation:
the expression i+++j is treated as (i++ + j)
76)
struct aaa{
struct aaa *prev;
int i;
struct aaa *next;
};
main()
{
struct aaa abc,def,ghi,jkl;
int x=100;
abc.i=0;abc.prev=&jkl;
abc.next=&def;
def.i=1;def.prev=&abc;def.next=&ghi;
ghi.i=2;ghi.prev=&def;
ghi.next=&jkl;
jkl.i=3;jkl.prev=&ghi;jkl.next=&abc;
x=abc.next->next->prev->next->i;
printf("%d",x);
}
Answer:
2
Explanation:
above all statements form a double circular linked list;
abc.next->next->prev->next->i
this one points to "ghi" node the value of at particular node is 2.
77)
struct point
{
int x;
int y;
Freshersworld.com Resource Center
27
main()
{
int i=_l_abc(10);
printf("%d\n",--i);
}
int _l_abc(int i)
{
return(i++);
}
Answer:
9
Explanation:
return(i++) it will first return i and then increments. i.e. 10 will be
returned.
79)
main()
{
char *p;
int *q;
long *r;
p=q=r=0;
p++;
q++;
r++;
printf("%p...%p...%p",p,q,r);
}
Answer:
Freshersworld.com Resource Center
28
main()
{
char c=' ',x,convert(z);
getc(c);
if((c>='a') && (c<='z'))
x=convert(c);
printf("%c",x);
}
convert(z)
{
return z-32;
}
Answer:
Compiler error
Explanation:
declaration of convert and format of getc() are wrong.
81)
82)
# include <stdio.h>
int one_d[]={1,2,3};
main()
{
int *ptr;
ptr=one_d;
ptr+=3;
Freshersworld.com Resource Center
29
# include<stdio.h>
aaa() {
printf("hi");
}
bbb(){
printf("hello");
}
ccc(){
printf("bye");
}
main()
{
int (*ptr[3])();
ptr[0]=aaa;
ptr[1]=bbb;
ptr[2]=ccc;
ptr[2]();
}
Answer:
bye
Explanation:
ptr is array of pointers to functions of return type int.ptr[0] is assigned
to address of the function aaa. Similarly ptr[1] and ptr[2] for bbb and
ccc respectively. ptr[2]() is in effect of writing ccc(), since ptr[2]
points to ccc.
85)
#include<stdio.h>
main()
{
FILE *ptr;
char i;
ptr=fopen("zzz.c","r");
while((i=fgetch(ptr))!=EOF)
printf("%c",i);
}
Answer:
contents of zzz.c followed by an infinite loop
Explanation:
30
main()
{
int i =0;j=0;
if(i && j++)
printf("%d..%d",i++,j);
printf("%d..%d,i,j);
}
Answer:
0..0
Explanation:
The value of i is 0. Since this information is enough to determine the
truth value of the boolean expression. So the statement following the if
statement is not executed. The values of i and j remain unchanged and
get printed.
87)
main()
{
int i;
i = abc();
printf("%d",i);
}
abc()
{
_AX = 1000;
}
Answer:
1000
Explanation:
Normally the return value from the function is through the information
from the accumulator. Here _AH is the pseudo global variable
denoting the accumulator. Hence, the value of the accumulator is set
1000 so the function returns value 1000.
88)
int i;
main(){
int t;
for ( t=4;scanf("%d",&i)-t;printf("%d\n",i))
printf("%d--",t--);
}
// If the inputs are 0,1,2,3 find the o/p
Answer:
4--0
3--1
Freshersworld.com Resource Center
31
main(){
int a= 0;int b = 20;char x =1;char y =10;
if(a,b,x,y)
printf("hello");
}
Answer:
hello
Explanation:
The comma operator has associativity from left to right. Only the
rightmost value is returned and the other values are evaluated and
ignored. Thus the value of last variable y is returned to check in if.
Since it is a non zero value if becomes true so, "hello" will be printed.
90)
main(){
unsigned int i;
for(i=1;i>-2;i--)
printf("c aptitude");
}
Explanation:
i is an unsigned integer. It is compared with a signed value. Since the
both types doesn't match, signed is promoted to unsigned value. The
unsigned equivalent of -2 is a huge value so condition becomes false
and control comes out of the loop.
91)
In the following pgm add a stmt in the function fun such that the address of
'a' gets stored in 'j'.
main(){
int * j;
void fun(int **);
fun(&j);
}
void fun(int **k) {
int a =0;
/* add a stmt here*/
}
Answer:
*k = &a
Freshersworld.com Resource Center
32
93)
main()
{
char *p;
p="%d\n";
p++;
p++;
printf(p-2,300);
}
Answer:
300
Explanation:
The pointer points to % since it is incremented twice and again
decremented by 2, it points to '%d\n' and 300 is printed.
94)
main(){
char a[100];
a[0]='a';a[1]]='b';a[2]='c';a[4]='d';
abc(a);
}
abc(char a[]){
a++;
printf("%c",*a);
a++;
printf("%c",*a);
}
Explanation:
The base address is modified only in function and as a result a points
to 'b' then after incrementing to 'c' so bc will be printed.
33
func(a,b)
int a,b;
{
return( a= (a==b) );
}
main()
{
int process(),func();
printf("The value of process is %d !\n ",process(func,3,6));
}
process(pf,val1,val2)
int (*pf) ();
int val1,val2;
{
return((*pf) (val1,val2));
}
Answer:
The value if process is 0 !
Explanation:
The function 'process' has 3 parameters - 1, a pointer to another
function 2 and 3, integers. When this function is invoked from main,
the following substitutions for formal parameters take place: func for
pf, 3 for val1 and 6 for val2. This function returns the result of the
operation performed by the function 'func'. The function func has two
integer parameters. The formal parameters are substituted as 3 for a
and 6 for b. since 3 is not equal to 6, a==b returns 0. therefore the
function returns 0 which in turn is returned by the function 'process'.
96)
void main()
{
static int i=5;
if(--i){
main();
printf("%d ",i);
}
}
Answer:
0000
Explanation:
The variable "I" is declared as static, hence memory for I will be
allocated for only once, as it encounters the statement. The function main()
will be called recursively unless I becomes equal to 0, and since main() is
recursively called, so the value of static I ie., 0 will be printed every time the
control is returned.
97)
void main()
Freshersworld.com Resource Center
34
void main()
{
char a[]="12345\0";
int i=strlen(a);
printf("here in 3 %d\n",++i);
}
Answer:
here in 3 6
Explanation:
The char array 'a' will hold the initialized string, whose length will be
counted from 0 till the null character. Hence the 'I' will hold the value equal to
5, after the pre-increment in the printf statement, the 6 will be printed.
99)
void main()
{
unsigned giveit=-1;
int gotit;
printf("%u ",++giveit);
printf("%u \n",gotit=--giveit);
}
Answer:
0 65535
Explanation:
100)
void main()
{
int i;
Freshersworld.com Resource Center
35
void main()
{
void *v;
int integer=2;
int *i=&integer;
v=i;
printf("%d",(int*)*v);
}
Answer:
Compiler Error. We cannot apply indirection on type void*.
Explanation:
Void pointer is a generic pointer type. No pointer arithmetic can be
done on it. Void pointers are normally used for,
1. Passing generic pointers to functions and returning such
pointers.
2. As a intermediate pointer type.
3. Used when the exact pointer type will be known at a later point
of time.
102)
void main()
{
int i=i++,j=j++,k=k++;
printf(%d%d%d,i,j,k);
}
Answer:
Garbage values.
Explanation:
An identifier is available to use in program code from the point of its
declaration.
So expressions such as i = i++ are valid statements. The i, j and k are
automatic variables and so they contain some garbage value. Garbage
in is garbage out (GIGO).
36
103)
void main()
{
static int i=i++, j=j++, k=k++;
printf(i = %d j = %d k = %d, i, j, k);
}
Answer:
i=1j=1k=1
Explanation:
Since static variables are initialized to zero by default.
104)
void main()
{
while(1){
if(printf("%d",printf("%d")))
break;
else
continue;
}
}
Answer:
Garbage values
Explanation:
The inner printf executes first to print some garbage value. The printf
returns no of characters printed and this value also cannot be predicted.
Still the outer printf prints something and so returns a non-zero value.
So it encounters the break statement and comes out of the while
statement.
104)
main()
{
unsigned int i=10;
while(i-->=0)
printf("%u ",i);
}
Answer:
10 9 8 7 6 5 4 3 2 1 0 65535 65534..
Explanation:
Since i is an unsigned integer it can never become negative. So the
expression i-- >=0 will always be true, leading to an infinite loop.
105)
#include<conio.h>
main()
{
int x,y=2,z,a;
Freshersworld.com Resource Center
37
main()
{
int a[10];
printf("%d",*a+1-*a+3);
}
Answer:
4
Explanation:
*a and -*a cancels out. The result is as simple as 1 + 3 = 4 !
107)
108)
main()
{
unsigned int i=65000;
while(i++!=0);
printf("%d",i);
}
Answer:
1
Explanation:
Note the semicolon after the while statement. When the value of i
becomes 0 it comes out of while loop. Due to post-increment on i the
value of i while printing is 1.
38
main()
{
int i=0;
while(+(+i--)!=0)
i-=i++;
printf("%d",i);
}
Answer:
-1
Explanation:
Unary + is the only dummy operator in C. So it has no effect on the
expression and now the while loop is,
while(i--!=0) which is
false and so breaks out of while loop. The value 1 is printed due to
the post-decrement operator.
113)
main()
{
float f=5,g=10;
enum{i=10,j=20,k=50};
printf("%d\n",++k);
printf("%f\n",f<<2);
printf("%lf\n",f%g);
printf("%lf\n",fmod(f,g));
}
Answer:
Line no 5: Error: Lvalue required
Line no 6: Cannot apply leftshift to float
Line no 7: Cannot apply mod to float
Explanation:
Enumeration constants cannot be modified, so you cannot apply ++.
Bit-wise operators and % operators cannot be applied on float values.
fmod() is to find the modulus values for floats as % operator is for ints.
110)
main()
{
int i=10;
void pascal f(int,int,int);
f(i++,i++,i++);
printf(" %d",i);
}
void pascal f(integer :i,integer:j,integer :k)
{
write(i,j,k);
}
Answer:
Compiler error: unknown type integer
Freshersworld.com Resource Center
39
40
41
117)
Answer
1
Explanation
The three usages of name errors can be distinguishable by the compiler
at any instance, so valid (they are in different namespaces).
Typedef struct error{int warning, error, exception;}error;
This error can be used only by preceding the error by struct kayword as in:
struct error someError;
typedef struct error{int warning, error, exception;}error;
42
#ifdef something
int some=0;
#endif
main()
{
int thing = 0;
printf("%d %d\n", some ,thing);
}
Answer:
Compiler error : undefined symbol some
Explanation:
This is a very simple example for conditional compilation. The
name something is not already known to the compiler making
the declaration
int some = 0;
effectively removed from the source code.
119)
#if something == 0
int some=0;
#endif
main()
{
int thing = 0;
printf("%d %d\n", some ,thing);
}
Answer
Freshersworld.com Resource Center
43
44
main()
{
char *p = ayqm;
printf(%c,++*(p++));
}
Answer:
b
124)
main()
{
int i=5;
printf("%d",++i++);
}
Answer:
Compiler error: Lvalue required in function main
Explanation:
++i yields an rvalue. For postfix ++ to operate an lvalue is
required.
125)
main()
{
char *p = ayqm;
Freshersworld.com Resource Center
45
46
main()
{
char p[ ]="%d\n";
p[1] = 'c';
printf(p,65);
}
Answer:
A
Explanation:
Due to the assignment p[1] = c the string becomes, %c\n. Since
this string becomes the format string for printf and ASCII value of 65
is A, the same gets printed.
129)
130)
main()
{
while (strcmp(some,some\0))
printf(Strings are not equal\n);
}
Answer:
No output
Explanation:
Ending the string constant with \0 explicitly makes no difference. So
some and some\0 are equivalent. So, strcmp returns 0 (false)
hence breaking out of the while loop.
131)
main()
{
char str1[] = {s,o,m,e};
char str2[] = {s,o,m,e,\0};
while (strcmp(str1,str2))
printf(Strings are not equal\n);
}
Freshersworld.com Resource Center
47
main()
{
int i = 3;
for (;i++=0;) printf(%d,i);
}
Answer:
Compiler Error: Lvalue required.
Explanation:
As we know that increment operators return rvalues and hence
it cannot appear on the left hand side of an assignment
operation.
133)
void main()
{
int *mptr, *cptr;
mptr = (int*)malloc(sizeof(int));
printf(%d,*mptr);
int *cptr = (int*)calloc(sizeof(int),1);
printf(%d,*cptr);
}
Answer:
garbage-value 0
Explanation:
The memory space allocated by malloc is uninitialized, whereas calloc
returns the allocated memory space initialized to zeros.
134)
void main()
{
static int i;
while(i<=10)
(i>2)?i++:i--;
printf(%d, i);
}
Answer:
Freshersworld.com Resource Center
48
main()
{
int i=10,j=20;
j = i, j?(i,j)?i:j:j;
printf("%d %d",i,j);
}
Answer:
10 10
Explanation:
The Ternary operator ( ? : ) is equivalent for if-then-else statement. So
the question can be written as:
if(i,j)
{
if(i,j)
j = i;
else
j = j;
}
else
j = j;
136)
: legal
: illegal
49
main()
{
int i=5,j=10;
i=i&=j&&10;
printf("%d %d",i,j);
}
Answer:
1 10
Explanation:
The expression can be written as i=(i&=(j&&10)); The inner
expression (j&&10) evaluates to 1 because j==10. i is 5. i = 5&1 is 1.
Hence the result.
138)
main()
{
int i=4,j=7;
j = j || i++ && printf("YOU CAN");
printf("%d %d", i, j);
}
Answer:
41
Explanation:
The boolean expression needs to be evaluated only till the truth value
of the expression is not known. j is not equal to zero itself means that
the expressions truth value is 1. Because it is followed by || and true ||
(anything) => true where (anything) will not be evaluated. So the
remaining expression is not evaluated and so the value of i remains the
same.
Similarly when && operator is involved in an expression, when any of
the operands become false, the whole expressions truth value
becomes false and hence the remaining expression will not be
evaluated.
false && (anything) => false where (anything) will not be evaluated.
139)
main()
{
register int a=2;
printf("Address of a = %d",&a);
printf("Value of a = %d",a);
}
Answer:
Compier Error: '&' on register variable
Freshersworld.com Resource Center
50
main()
{
float i=1.5;
switch(i)
{
case 1: printf("1");
case 2: printf("2");
default : printf("0");
}
}
Answer:
Compiler Error: switch expression not integral
Explanation:
Switch statements can be applied only to integral types.
141)
main()
{
extern i;
printf("%d\n",i);
{
int i=20;
printf("%d\n",i);
}
}
Answer:
Linker Error : Unresolved external symbol i
Explanation:
The identifier i is available in the inner block and so using extern has
no use in resolving it.
142)
main()
{
int a=2,*f1,*f2;
f1=f2=&a;
*f2+=*f2+=a+=2.5;
printf("\n%d %d %d",a,*f1,*f2);
}
Answer:
16 16 16
Explanation:
f1 and f2 both refer to the same memory location a. So changes
through f1 and f2 ultimately affects only the value of a.
51
main()
{
char *p="GOOD";
char a[ ]="GOOD";
printf("\n sizeof(p) = %d, sizeof(*p) = %d, strlen(p) = %d", sizeof(p),
sizeof(*p), strlen(p));
printf("\n sizeof(a) = %d, strlen(a) = %d", sizeof(a), strlen(a));
}
Answer:
sizeof(p) = 2, sizeof(*p) = 1, strlen(p) = 4
sizeof(a) = 5, strlen(a) = 4
Explanation:
sizeof(p) => sizeof(char*) => 2
sizeof(*p) => sizeof(char) => 1
Similarly,
sizeof(a) => size of the character array => 5
When sizeof operator is applied to an array it returns the sizeof the
array and it is not the same as the sizeof the pointer variable. Here the
sizeof(a) where a is the character array and the size of the array is 5
because the space necessary for the terminating NULL character
should also be taken into account.
144)
145)
52
main()
{
static int a[3][3]={1,2,3,4,5,6,7,8,9};
int i,j;
static *p[]={a,a+1,a+2};
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d\t%d\t%d\t%d\n",*(*(p+i)+j),
*(*(j+p)+i),*(*(i+p)+j),*(*(p+j)+i));
}
}
Answer:
1
2
3
4
5
6
7
8
9
1
4
7
2
5
8
3
6
9
1
2
3
4
5
6
7
8
9
1
4
7
2
5
8
3
6
9
Explanation:
*(*(p+i)+j) is equivalent to p[i][j].
147)
main()
{
void swap();
int x=10,y=8;
swap(&x,&y);
printf("x=%d y=%d",x,y);
}
void swap(int *a, int *b)
{
*a ^= *b, *b ^= *a, *a ^= *b;
}
Answer:
x=10 y=8
Explanation:
Freshersworld.com Resource Center
53
main()
{
int i = 257;
int *iPtr = &i;
printf("%d %d", *((char*)iPtr), *((char*)iPtr+1) );
}
Answer:
11
Explanation:
The integer value 257 is stored in the memory as, 00000001 00000001,
so the individual bytes are taken by casting it to char * and get printed.
149)
main()
{
int i = 258;
int *iPtr = &i;
printf("%d %d", *((char*)iPtr), *((char*)iPtr+1) );
}
Answer:
21
Explanation:
The integer value 257 can be represented in binary as, 00000001
00000001. Remember that the INTEL machines are small-endian
machines. Small-endian means that the lower order bytes are stored in
the higher memory addresses and the higher order bytes are stored in
lower addresses. The integer value 258 is stored in memory as:
00000001 00000010.
54
main()
{
int i=300;
char *ptr = &i;
*++ptr=2;
printf("%d",i);
}
Answer:
556
Explanation:
The integer value 300 in binary notation is: 00000001 00101100. It is
stored in memory (small-endian) as: 00101100 00000001. Result of
the expression *++ptr = 2 makes the memory representation as:
00101100 00000010. So the integer corresponding to it is 00000010
00101100 => 556.
151)
#include <stdio.h>
main()
{
char * str = "hello";
char * ptr = str;
char least = 127;
while (*ptr++)
least = (*ptr<least ) ?*ptr :least;
printf("%d",least);
}
Answer:
0
Explanation:
After ptr reaches the end of the string the value pointed by str is
\0. So the value of str is less than that of least. So the value of
least finally is 0.
152)
153)
main()
{
struct student
{
char name[30];
struct date dob;
}stud;
struct date
Freshersworld.com Resource Center
55
&student.dob.day,
}
Answer:
Compiler Error: Undefined structure date
Explanation:
Inside the struct definition of student the member of type struct date
is given. The compiler doesnt have the definition of date structure
(forward reference is not allowed in C in this case) so it issues an
error.
154)
main()
{
struct date;
struct student
{
char name[30];
struct date dob;
}stud;
struct date
{
int day,month,year;
};
scanf("%s%d%d%d",
stud.rollno,
&student.dob.month, &student.dob.year);
&student.dob.day,
}
Answer:
Compiler Error: Undefined structure date
Explanation:
Only declaration of struct date is available inside the structure
definition of student but to have a variable of type struct date the
definition of the structure is required.
155)
56
157)
158)
57
160)
void main()
{
int *i = 0x400; // i points to the address 400
*i = 0;
// set the value of memory location pointed by i;
}
Answer:
Undefined behavior
Explanation:
The second statement results in undefined behavior because it points to
some location whose value may not be available for modification.
This type of pointer in which the non-availability of the
implementation of the referenced location is known as 'incomplete
type'.
161)
58
163)
164)
59
166)
167)
void main()
{
printf(sizeof (void *) = %d \n, sizeof( void *));
printf(sizeof (int *) = %d \n, sizeof(int *));
printf(sizeof (double *) = %d \n, sizeof(double *));
printf(sizeof(struct unknown *) = %d \n, sizeof(struct unknown *));
}
Freshersworld.com Resource Center
60
169)
170)
void main()
{
int i=10, j=2;
int *ip= &i, *jp = &j;
int k = *ip/*jp;
printf(%d,k);
}
Answer:
Compiler Error: Unexpected end of file in comment started in line 5.
Explanation:
The programmer intended to divide two integers, but by the
maximum munch rule, the compiler treats the operator
sequence / and * as /* which happens to be the starting of
comment. To force what is intended by the programmer,
int k = *ip/ *jp;
// give space explicity separating / and *
//or
int k = *ip/(*jp);
// put braces to force the intention
will solve the problem.
61
void main()
{
char ch;
for(ch=0;ch<=127;ch++)
printf(%c %d \n, ch, ch);
}
Answer:
Implementaion dependent
Explanation:
The char type may be signed or unsigned by default. If it is signed then
ch++ is executed after ch reaches 127 and rotates back to -128. Thus
ch is always smaller than 127.
172)
173)
main()
{
char a[4]="HELLO";
printf("%s",a);
}
Answer:
Compiler error: Too many initializers
Explanation:
The array a is of size 4 but the string constant requires 6 bytes to get
stored.
174)
main()
{
char a[4]="HELL";
printf("%s",a);
}
Answer:
HELL%@!~@!@???@~~!
Explanation:
The character array has the memory just enough to hold the string
HELL and doesnt have enough space to store the terminating null
character. So it prints the HELL correctly and continues to print
garbage values till it accidentally comes across a NULL character.
175)
main()
Freshersworld.com Resource Center
62
main()
{
{
{
extern int i;
int i=20;
const volatile unsigned i=30; printf("%d",i);
}
printf("%d",i);
}
printf("%d",i);
}
int i;
177)
63
char *someFun1()
{
char temp[ ] = string";
return temp;
}
char *someFun2()
{
char temp[ ] = {s, t,r,i,n,g};
return temp;
}
int main()
{
puts(someFun1());
puts(someFun2());
}
Answer:
Garbage values.
Explanation:
Both the functions suffer from the problem of dangling pointers. In
someFun1() temp is a character array and so the space for it is allocated in heap and is
initialized with character string string. This is created dynamically as the function is
called, so is also deleted dynamically on exiting the function so the string data is not
available in the calling function main() leading to print some garbage values. The
function someFun2() also suffers from the same problem but the problem can be
easily identified in this case.
64
C,C++ Questions
1. Base class has some virtual method and derived class has a method with the
same name. If we initialize the base class pointer with derived
object,. calling of that virtual method will result in which method being called?
a. Base method
b. Derived method..
Ans. b
2. For the following C program
#define AREA(x)(3.14*x*x)
main()
{float r1=6.25,r2=2.5,a;
a=AREA(r1);
printf("\n Area of the circle is %f", a);
a=AREA(r2);
printf("\n Area of the circle is %f", a);
}
What is the output?
Ans. Area of the circle is 122.656250
Area of the circle is 19.625000
3. What do the following statements indicate. Explain.
int(*p)[10]
int*f()
int(*pf)()
int*p[10]
Refer to:
-- Kernighan & Ritchie page no. 122
-- Schaum series page no. 323
4.
void main()
{
int d=5;
printf("%f",d);
}
Ans: Undefined
5.
void main()
{
int i;
for(i=1;i<4,i++)
switch(i)
case 1: printf("%d",i);break;
{
case 2:printf("%d",i);break;
case 3:printf("%d",i);break;
}
switch(i) case 4:printf("%d",i);
}
Ans: 1,2,3,4
6.
void main()
{
char *s="\12345s\n";
printf("%d",sizeof(s));
}
Ans: 6
7.
void main()
{
unsigned i=1; /* unsigned char k= -1 => k=255; */
signed j=-1; /* char k= -1 => k=65535 */
/* unsigned or signed int k= -1 =>k=65535 */
if(i<j)
printf("less");
else
if(i>j)
printf("greater");
else
if(i==j)
printf("equal");
}
Ans: less
8.
void main()
{
float j;
j=1000*1000;
printf("%f",j);
}
1.
2.
3.
4.
1000000
Overflow
Error
None
Ans: 4
12.
int f()
void main()
{
f(1);
f(1,2);
f(1,2,3);
}
f(int i,int j,int k)
{
printf("%d %d %d",i,j,k);
}
What are the number of syntax errors in the above?
Ans: None.
13.
void main()
{
int i=7;
printf("%d",i++*i++);
}
Ans: 56
14.
#define one 0
#ifdef one
printf("one is defined ");
#ifndef one
printf("one is not defined ");
Ans: "one is defined"
15.
void main()
{
int count=10,*temp,sum=0;
temp=&count;
*temp=20;
temp=∑
*temp=count;
printf("%d %d %d ",count,*temp,sum);
}
Ans: 20 20 20
16. There was question in c working only on unix machine with pattern matching.
14. what is alloca()
Ans : It allocates and frees memory after use/after getting out of scope
17.
main()
{
static i=3;
printf("%d",i--);
return i>0 ? main():0;
}
Ans: 321
18.
char *foo()
{
char result[100]);
strcpy(result,"anything is good");
return(result);
}
void main()
{
char *j;
j=foo()
printf("%s",j);
}
Ans: anything is good.
32. Find the output for the following C program given that
[1]. The following variable is available in file1.c
static int average_float;
Ans. All the functions in the file1.c can access the variable
10
11
12
C++ Questions
Note : All the programs are tested under Turbo C++ 3.0, 4.5 and Microsoft VC++ 6.0
compilers.
It is assumed that,
Programs run under Windows environment,
The underlying machine is an x86 based system,
Program is compiled using Turbo C/C++ compiler.
The program output may depend on the information based on this assumptions
(for example sizeof(int) == 2 may be assumed).
1) class Sample
{
public:
int *ptr;
Sample(int i)
{
ptr = new int(i);
}
~Sample()
{
delete ptr;
}
void PrintVal()
{
cout << "The value is " << *ptr;
}
};
void SomeFunc(Sample x)
{
cout << "Say i am in someFunc " << endl;
}
int main()
{
Sample s1= 10;
SomeFunc(s1);
s1.PrintVal();
}
Answer:
Say i am in someFunc
Null pointer assignment(Run-time error)
Explanation:
As the object is passed by value to SomeFunc the destructor of the object is
called when the control returns from the function. So when PrintVal is called it meets
by
2) Which is the parameter that is added to every non-static member function when it
is called?
Answer:
this pointer
3) class base
{
public:
int bval;
base(){ bval=0;}
};
class deri:public base
{
public:
int dval;
deri(){ dval=1;}
};
void SomeFunc(base *arr,int size)
{
for(int i=0; i<size; i++,arr++)
cout<<arr->bval;
cout<<endl;
}
int main()
{
base BaseArr[5];
SomeFunc(BaseArr,5);
deri DeriArr[5];
SomeFunc(DeriArr,5);
}
Answer:
Freshersworld.com Resource Center
void main()
{
int a, *pa, &ra;
pa = &a;
ra = a;
cout <<"a="<<a <<"*pa="<<*pa <<"ra"<<ra ;
}
/*
Answer :
Compiler Error: 'ra',reference must be initialized
Explanation :
Pointers are different from references. One of the main
differences is that the pointers can be both initialized and assigned,
whereas references can only be initialized. So this code issues an error.
*/
const int size = 5;
void print(int *ptr)
Freshersworld.com Resource Center
//
}
/*
class complex{
double re;
double im;
Freshersworld.com Resource Center
class complex{
double re;
double im;
public:
complex() : re(0),im(0) {}
complex(double n) { re=n,im=n;};
complex(int m,int n) { re=m,im=n;}
void print() { cout<<re; cout<<im;}
};
void main(){
complex c3;
double i=5;
c3 = i;
c3.print();
}
Answer:
Freshersworld.com Resource Center
void main()
{
int a, *pa, &ra;
pa = &a;
ra = a;
cout <<"a="<<a <<"*pa="<<*pa <<"ra"<<ra ;
}
Answer :
Compiler Error: 'ra',reference must be initialized
Explanation :
Pointers are different from references. One of the main
differences is that the pointers can be both initialized and assigned,
whereas references can only be initialized. So this code issues an error.
Try it Yourself
1) Determine the output of the 'C++' Codelet.
class base
{
public :
out()
{
cout<<"base ";
}
};
class deri{
public : out()
{
cout<<"deri ";
}
};
void main()
{
deri dp[3];
base *bp = (base*)dp;
for (int i=0; i<3;i++)
(bp++)->out();
}
________
10
11
ONTOS of Ontos.
Object Oriented Analysis and Design (OOA/D) (Coad and Yourdon 1991).
12
13
14
Smalltalk,
Java,
Eiffel,
Sather.
.*
.->
::
?:
15
25. What is a container class? What are the types of container classes?
Answer:
A container class is a class that is used to hold objects in memory or external
storage. A container class acts as a generic holder. A container class has a predefined
behavior and a well-known interface. A container class is a supporting class whose
purpose is to hide the topology used for maintaining the list of objects in memory.
When a container class contains a group of mixed objects, the container is called a
heterogeneous container; when the container is holding a group of objects that are all
the same, the container is called a homogeneous container.
26. What is a protocol class?
Answer:
An abstract class is a protocol class if:
it neither contains nor inherits from classes that contain member data, nonvirtual functions, or private (or protected) members of any kind.
it has a non-inline virtual destructor defined with an empty implementation,
all member functions other than the destructor including inherited functions,
are declared pure virtual functions and left undefined.
27. What is a mixin class?
Answer:
A class that provides some but not all of the implementation for a virtual base
class is often called mixin. Derivation done just for the purpose of redefining the
virtual functions in the base classes is often called mixin inheritance. Mixin classes
typically don't share common bases.
28. What is a concrete class?
Answer:
A concrete class is used to define a useful object that can be instantiated as an
automatic variable on the program stack. The implementation of a concrete class is
defined. The concrete class is not intended to be a base class and no attempt to
minimize dependency on other classes in the implementation or behavior of the class.
Freshersworld.com Resource Center
16
17
31. When can you tell that a memory leak will occur?
Answer:
A memory leak occurs when a program loses the ability to free a block of
dynamically allocated memory.
32.What is a parameterized type?
Answer:
A template is a parameterized construct or type containing generic code that
can use or manipulate any type. It is called parameterized because an actual type is a
parameter of the code body. Polymorphism may be achieved through parameterized
types. This type of polymorphism is called parameteric polymorphism. Parameteric
polymorphism is the mechanism by which the same code is used on different types
passed as parameters.
33. Differentiate between a deep copy and a shallow copy?
Answer:
Freshersworld.com Resource Center
18
19
X& operator *( );
const X& operator*( ) const;
X* operator->() const;
smart_pointer(const smart_pointer <X> &);
const smart_pointer <X> & operator =(const smart_pointer<X>&);
~smart_pointer();
private:
//...
};
This class implement a smart pointer to an object of type X. The object itself
is located on the heap. Here is how to use it:
smart_pointer <employee> p= employee("Harris",1333);
Like other overloaded operators, p will behave like a regular pointer,
cout<<*p;
p->raise_salary(0.5);
36. What is reflexive association?
Answer:
The 'is-a' is called a reflexive association because the reflexive association
permits classes to bear the is-a association not only with their super-classes but also
with themselves. It differs from a 'specializes-from' as 'specializes-from' is usually
used to describe the association between a super-class and a sub-class. For example:
Printer is-a printer.
37. What is slicing?
Answer:
Slicing means that the data added by a subclass are discarded when an object
of the subclass is passed or returned by value or from a function expecting a base
class object.
Explanation:
Consider the following class declaration:
class base
{
...
base& operator =(const base&);
base (const base&);
}
void fun( )
{
base e=m;
e=m;
}
20
In general, member names are made unique by concatenating the name of the
member with that of the class e.g. given the declaration:
class Bar
{
public:
int ival;
...
};
ival becomes something like:
// a possible member name mangling
ival__3Bar
Consider this derivation:
class Foo : public Bar
{
public:
int ival;
...
}
The internal representation of a Foo object is the concatenation of its base and
derived class members.
// Pseudo C++ code
// Internal representation of Foo
class Foo
{
public:
int ival__3Bar;
int ival__3Foo;
...
Freshersworld.com Resource Center
21
it is a typedef declaration.
A definition is a declaration unless:
22
23
OOAD
1. What do you mean by analysis and design?
Analysis:
Basically, it is the process of determining what needs to be done before
how it should be done. In order to accomplish this, the developer refers the existing
systems and documents. So, simply it is an art of discovery.
Design:
It is the process of adopting/choosing the one among the many, which
best accomplishes the users needs. So, simply, it is compromising mechanism.
2. What are the steps involved in designing?
Before getting into the design the designer should go through the SRS
prepared by the System Analyst.
The main tasks of design are Architectural Design and Detailed Design.
In Architectural Design we find what are the main modules in the problem
domain.
In Detailed Design we find what should be done within each module.
3. What are the main underlying concepts of object orientation?
Objects, messages, class, inheritance and polymorphism are the main concepts
of object orientation.
4. What do u meant by "SBI" of an object?
SBI stands for State, Behavior and Identity. Since every object has the above
three.
State:
It is just a value to the attribute of an object at a particular time.
Behaviour:
Freshersworld.com Resource Center
24
25
wheels
Containment: This relationship is applied when the part contained with in the
whole part, dies when the whole part dies.
It is represented as darked diamond at the whole part.
example:
class A{
//some code
};
class B
{
A aa; // an object of class A;
// some code for class B;
};
In the above example we see that an object of class A is instantiated with in
the class B. so the object class A dies when the object class B dies.we can represnt it
in
diagram like this.
class A
class B
class B
26 class C
27
Booch: In this method classes are represented as "Clouds" which are not very
easy to draw as for as the developer's view is concern.
Diagram:
28
:obj1
:obj2
In the above representation I, obj1 sends message to obj2. But in the case of II
the data is transferred from obj1 to obj2.
22. USECASE is an implementation independent notation. How will the designer give
the implementation details of a particular USECASE to the programmer?
This can be accomplished by specifying the relationship called "refinement
which talks about the two different abstraction of the same thing.
Or example,
calculate pay
calculate
class1 class2 class3
23. Suppose a class acts an Actor in the problem domain, how to represent it in the
static model?
In this scenario you can use stereotype. Since stereotype is just a string that
gives extra semantic to the particular entity/model element. It is given with in the <<
>>.
class A
<< Actor>>
attributes
29
30
31
Operators
1) What are operators and what are the various types of operators available in Java?
Ans: Operators are special symbols used in expressions.
The following are the types of operators:
Arithmetic operators,
Assignment operators,
Increment & Decrement operators,
Logical operators,
Biwise operators,
Comparison/Relational operators and
Conditional operators
2) The ++ operator is used for incrementing and the -- operator is used for
decrementing.
a)True
b)False
Ans: a.
3) Comparison/Logical operators are used for testing and magnitude.
a)True
b)False
Ans: a.
4) Character literals are stored as unicode characters.
a)True
b)False
Ans: a.
5) What are the Logical operators?
Ans: OR(|), AND(&), XOR(^) AND NOT(~).
6) What is the % operator?
Ans : % operator is the modulo operator or reminder operator. It returns the reminder of dividing the
first operand by second operand.
7) What is the value of 111 % 13?
3
5
7
9
Ans : c.
8) Is &&= a valid operator?
Ans : No.
9) Can a double value be cast to a byte?
Ans : Yes
10) Can a byte object be cast to a double value ?
Ans : No. An object cannot be cast to a primitive value.
11) What are order of precedence and associativity?
Ans : Order of precedence the order in which operators are evaluated in expressions.
Associativity determines whether an expression is evaluated left-right or right-left.
12) Which Java operator is right associativity?
Ans : = operator.
Freshersworld.com Resource Center
Control Statements
1) What are the programming constructs?
Ans: a) Sequential
b) Selection -- if and switch statements
c) Iteration -- for loop, while loop and do-while loop
2) class conditional {
public static void main(String args[]) {
int i = 20;
int j = 55;
int z = 0;
z = i < j ? i : j; // ternary operator
System.out.println("The value assigned is " + z);
}
}
What is output of the above program?
Ans: The value assigned is 20
3) The switch statement does not require a break.
a)True
b)False
Ans: b.
4) The conditional operator is otherwise known as the ternary operator.
a)True
b)False
Ans: a.
5) The while loop repeats a set of code while the condition is false.
a)True
b)False
Ans: b.
6) The do-while loop repeats a set of code atleast once before the condition is tested.
a)True
b)False
Ans: a.
7) What are difference between break and continue?
Freshersworld.com Resource Center
16) Casting between primitive types allows conversion of one primitive type to another.
a)True
b)False
Ans: a.
17) Casting occurs commonly between numeric types.
a)True
b)False
Ans: a.
18) Boolean values can be cast into any other primitive type.
a)True
b)False
Ans: b.
19) Casting does not affect the original object or value.
a)True
b)False
Ans: a.
20) Which cast must be used to convert a larger value into a smaller one?
Ans: Explicit cast.
21) Which cast must be used to cast an object to another class?
Ans: Specific cast.
22) Which of the following features are common to both Java & C++?
A.The class declaration
b.The access modifiers
c.The encapsulation of data & methods with in objects
d.The use of pointers
Ans: a,b,c.
23) Which of the following statements accurately describe the use of access modifiers within a class
definition?
a.They can be applied to both data & methods
b.They must precede a class's data variables or methods
c.They can follow a class's data variables or methods
d.They can appear in any order
e.They must be applied to data variables first and then to methods
Ans: a,b,d.
24) Suppose a given instance variable has been declared private.
Can this instance variable be manipulated by methods out side its class?
a.yes
b.no
Ans: b.
25) Which of the following statements can be used to describe a public method?
a.It is accessible to all other classes in the hierarchy
Freshersworld.com Resource Center
10
11
Exception Handling
1) What is the difference between throw and throws ?And its application?
Ans : Exceptions that are thrown by java runtime systems can be handled by Try and catch blocks.
With throw exception we can handle the exceptions thrown by the program itself. If a method is
capable of causing an exception that it does not
handle, it must specify this behavior so the callers of the method can guard
against that exception.
2) What is the difference between Exception and error in java?
Ans : Exception and Error are the subclasses of the Throwable class. Exception class is used for
exceptional conditions that user program should catch. With exception class we can subclass to create
our own custom exception.
Error defines exceptions that are not excepted to be caught by you program. Example is Stack
Overflow.
3) What is Resource leak?
Ans : Freeing up other resources that might have been allocated at the beginning of a method.
4)What is the finally block?
Ans : Finally block will execute whether or not an exception is thrown. If an exception is thrown, the
finally block will execute even if no catch statement match the exception. Any time a method is about
to return to the caller from inside try/catch block, via an uncaught exception or an explicit return
statement, the finally clause is also execute.
5) Can we have catch block with out try block? If so when?
Ans : No. Try/Catch or Try/finally form a unit.
6) What is the difference between the following statements?
Catch (Exception e),
Catch (Error err),
Catch (Throwable t)
Ans :
12
MULTI THREADING
1) What are the two types of multitasking?
Ans : 1.process-based
2.Thread-based
2) What are the two ways to create the thread?
Ans : 1.by implementing Runnable
2.by extending Thread
3) What is the signature of the constructor of a thread class?
Ans : Thread(Runnable threadob,String threadName)
4) What are all the methods available in the Runnable Interface?
Ans : run()
5) What is the data type for the method isAlive() and this method is
available in which class?
Ans : boolean, Thread
6) What are all the methods available in the Thread class?
Ans : 1.isAlive()
2.join()
3.resume()
4.suspend()
5.stop()
6.start()
7.sleep()
8.destroy()
7) What are all the methods used for Inter Thread communication and what is the class in which these
methods are defined?
Ans :1. wait(),notify() & notifyall()
2. Object class
8) What is the mechanisam defind by java for the Resources to be used by only one Thread at a time?
Ans : Synchronisation
9) What is the procedure to own the moniter by many threads?
Ans : not possible
Freshersworld.com Resource Center
13
14
Inheritance
1) What is the difference between superclass & subclass?
Ans : A super class is a class that is inherited whereas subclass is a class that does the inheriting.
2) Which keyword is used to inherit a class?
Ans : extends
3) Subclasses methods can access superclass members/ attributes at all times?
True/False
Ans : False
4) When can subclasses not access superclass members?
Ans : When superclass is declared as private.
5) Which class does begin Java class hierarchy?
Ans : Object class
6) Object class is a superclass of all other classes?
True/False
Ans : True
7) Java supports multiple inheritance?
True/False
Ans : False
8) What is inheritance?
Ans : Deriving an object from an existing class. In the other words, Inheritance is the process of
inheriting all the features from a class
9) What are the advantages of inheritance?
Ans : Reusability of code and accessibility of variables and methods of the superclass by subclasses.
10) Which method is used to call the constructors of the superclass from the subclass?
Ans : super(argument)
11) Which is used to execute any method of the superclass from the subclass?
Ans : super.method-name(arguments)
12) Which methods are used to destroy the objects created by the constructor methods?
Ans : finalize()
13) What are abstract classes?
Ans : Abstract classes are those for which instances cant be created.
14) What must a class do to implement an interface?
Ans: It must provide all of the methods in the interface and identify the interface in its implements
clause.
15) Which methods in the Object class are declared as final?
Ans : getClass(), notify(), notifyAll(), and wait()
16) Final methods can be overridden.
True/False
Ans : False
17) Declaration of methods as final results in faster execution of the program?
True/False
Ans: True
18) Final variables should be declared in the beginning?
True/False
Ans : True
19) Can we declare variable inside a method as final variables? Why?
Ans : Cannot because, local variable cannot be declared as final variables.
20) Can an abstract class may be final?
Ans : An abstract class may not be declared as final.
21) Does a class inherit the constructors of it's super class?
Ans: A class does not inherit constructors from any of it's super classes.
22) What restrictions are placed on method overloading?
Ans: Two methods may not have the same name and argument list but different return types.
Freshersworld.com Resource Center
15
STRING HANDLING
Which package does define String and StringBuffer classes?
Ans : java.lang package.
Which method can be used to obtain the length of the String?
Ans : length( ) method.
How do you concatenate Strings?
Ans : By using " + " operator.
Which method can be used to compare two strings for equality?
Ans : equals( ) method.
Which method can be used to perform a comparison between strings that ignores case differences?
Ans : equalsIgnoreCase( ) method.
What is the use of valueOf( ) method?
Ans : valueOf( ) method converts data from its internal format into a human-readable form.
What are the uses of toLowerCase( ) and toUpperCase( ) methods?
Ans : The method toLowerCase( ) converts all the characters in a string from uppercase to
lowercase.
The method toUpperCase( ) converts all the characters in a string from lowercase to
uppercase.
Which method can be used to find out the total allocated capacity of a StrinBuffer?
Ans : capacity( ) method.
Which method can be used to set the length of the buffer within a StringBuffer object?
Ans : setLength( ).
What is the difference between String and StringBuffer?
Ans : String objects are constants, whereas StringBuffer objects are not.
String class supports constant strings, whereas StringBuffer class supports growable, modifiable
strings.
What are wrapper classes?
Freshersworld.com Resource Center
16
17
EXPLORING JAVA.LANG
java.lang package is automatically imported into all programs.
True
False
Ans : a
What are the interfaces defined by java.lang?
Ans : Cloneable, Comparable and Runnable.
What are the constants defined by both Flaot and Double classes?
Ans : MAX_VALUE,
MIN_VALUE,
NaN,
POSITIVE_INFINITY,
NEGATIVE_INFINITY and
TYPE.
What are the constants defined by Byte, Short, Integer and Long?
Ans : MAX_VALUE,
MIN_VALUE and
TYPE.
What are the constants defined by both Float and Double classes?
Ans : MAX_RADIX,
MIN_RADIX,
MAX_VALUE,
MIN_VALUE and
TYPE.
What is the purpose of the Runtime class?
Ans : The purpose of the Runtime class is to provide access to the Java runtime system.
What is the purpose of the System class?
Ans : The purpose of the System class is to provide access to system resources.
Which class is extended by all other classes?
Ans : Object class is extended by all other classes.
Which class can be used to obtain design information about an object?
Ans : The Class class can be used to obtain information about an objects design.
Which method is used to calculate the absolute value of a number?
Ans : abs( ) method.
What are E and PI?
Ans : E is the base of the natural logarithm and PI is the mathematical value pi.
Which of the following classes is used to perform basic console I/O?
System
SecurityManager
Math
Freshersworld.com Resource Center
18
19
20
21
22
EVENT HANDLING
The event delegation model, introduced in release 1.1 of the JDK, is fully compatible with the
event model.
True
False
Ans : b.
Freshersworld.com Resource Center
23
24
APPLETS
What is an Applet? Should applets have constructors?
Ans : Applet is a dynamic and interactive program that runs inside a Web page
displayed by a Java capable browser. We dont have the concept of Constructors in Applets.
How do we read number information from my applets parameters, given that Applets getParameter()
method returns a string?
Ans : Use the parseInt() method in the Integer Class, the Float(String) constructor in the
Freshersworld.com Resource Center
25
26
27
28
29
30
31
32
33
48) Which layout should you use to organize the components of a container in a
tabular form?
CardLayout
BorederLayout
FlowLayout
GridLayout
Ans : d.
An application has a frame that uses a Border layout manager. Why is it probably not a good idea to
put a vertical scroll bar at North in the frame?
The scroll bars height would be its preferred height, which is not likely to be enough.
The scroll bars width would be the entire width of the frame, which would be much wider than
necessary.
Freshersworld.com Resource Center
34
56) How do you change the current layout manager for a container?
a) Use the setLayout method
b) Once created you cannot change the current layout manager of a component
c) Use the setLayoutManager method
d) Use the updateLayout method
Ans :a.
57)When using the GridBagLayout manager, each new component requires a new instance of the
GridBagConstraints class. Is this statement true or false?
a) true
b) false
Ans : b.
58) Which of the following statements are true?
a)The default layout manager for an Applet is FlowLayout
b) The default layout manager for an application is FlowLayout
c) A layout manager must be assigned to an Applet before the setSize method is called
d) The FlowLayout manager attempts to honor the preferred size of any components
Ans : a and d.
59) Which method does display the messages whenever there is an item selection or deselection of the
CheckboxMenuItem menu?
Freshersworld.com Resource Center
35
Which colour is used to indicate instance methods in the standard "javadoc" format documentation:
1) blue
2) red
3) purple
4) orange
Answer : 2
explain
In JDK 1.1 the variabels, methods and constructors are colour coded to simplifytheir identification.
endExplain
What is the correct ordering for the import, class and package declarations when found in a single file?
1) package, import, class
2) class, import, package
3) import, package, class
4) package, class, import
Answer : 1
explain
This is my explanation for question 2
endExplain
Which methods can be legally applied to a string object?
(Multiple)
1) equals(String)
2) equals(Object)
3) trim()
4) round()
5) toString()
Freshersworld.com Resource Center
36
37
38
39
40
41
42
43
44
45
46
47
48
Utility Package
1) What is the Vector class?
ANSWER : The Vector class provides the capability to implement a growable array of objects.
2) What is the Set interface?
ANSWER : The Set interface provides methods for accessing the elements of a finite mathematical
set.Sets do not allow duplicate elements.
3) What is Dictionary class?
ANSWER : The Dictionary class is the abstarct super class of Hashtable and Properties
class.Dictionary provides the abstarct functions used to store and retrieve objects by key-value.This
class allows any object to be used as a key or value.
4) What is the Hashtable class?
ANSWER : The Hashtable class implements a hash table data structure. A hash table indexes and
stores objects in a dictionary using hash codes as the objects' keys. Hash codes are integer values that
identify objects.
5) What is the Properties class?
Freshersworld.com Resource Center
49
50
51
JDBC
1) What are the steps involved in establishing a connection?
ANSWER : This involves two steps: (1) loading the driver and (2) making the connection.
2) How can you load the drivers?
ANSWER : Loading the driver or drivers you want to use is very simple and involves just one line of
code. If, for example, you want to use the JDBC-ODBC Bridge driver, the following code will load it:
Eg.
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Your driver documentation will give you the class name to use. For instance, if the class name is
jdbc.DriverXYZ , you would load the driver with the following line of code:
Eg.
Class.forName("jdbc.DriverXYZ");
3) What Class.forName will do while loading drivers?
ANSWER : It is used to create an instance of a driver and register it with the DriverManager.
When you have loaded a driver, it is available for making a connection with a DBMS.
4) How can you make the connection?
ANSWER : In establishing a connection is to have the appropriate driver connect to the DBMS. The
following line of code illustrates the general idea:
Eg.
String url = "jdbc:odbc:Fred";
Connection con = DriverManager.getConnection(url, "Fernanda", "J8");
5) How can you create JDBC statements?
ANSWER : A Statement object is what sends your SQL statement to the DBMS. You simply create a
Statement object and then execute it, supplying the appropriate execute method with the SQL
statement you want to send. For a SELECT statement, the method to use is executeQuery. For
statements that create or modify tables, the method to use is executeUpdate.
Eg.
It takes an instance of an active connection to create a Statement object. In the following example, we
use our Connection object con to create the Statement object stmt :
Statement stmt = con.createStatement();
6) How can you retrieve data from the ResultSet?
ANSWER : Step 1.
JDBC returns results in a ResultSet object, so we need to declare an instance of the class ResultSet to
hold our results. The following code demonstrates declaring the ResultSet object rs.
Eg.
ResultSet rs = stmt.executeQuery("SELECT COF_NAME, PRICE FROM COFFEES");
Step2.
String s = rs.getString("COF_NAME");
The method getString is invoked on the ResultSet object rs , so getString will retrieve (get) the value
stored in the column COF_NAME in the current row of rs
7) What are the different types of Statements?
ANSWER : 1.Statement (use createStatement method) 2. Prepared Statement (Use prepareStatement
method) and 3. Callable Statement (Use prepareCall)
8) How can you use PreparedStatement?
ANSWER : This special type of statement is derived from the more general class, Statement.If you
want to execute a Statement object many times, it will normally reduce execution time to use a
PreparedStatement object instead.
The advantage to this is that in most cases, this SQL statement will be sent to the DBMS right away,
where it will be compiled. As a result, the PreparedStatement object contains not just an SQL
statement, but an SQL statement that has been precompiled. This means that when the
PreparedStatement is executed, the DBMS can just run the PreparedStatement 's SQL statement
without having to compile it first.
Freshersworld.com Resource Center
52
53
54
55
3) What Is a Socket?
A socket is one end-point of a two-way communication link between two programs running on the
network. A socket is bound to a port number so that the TCP layer can identify the application that data
is destined to be sent.Socket classes are used to represent the connection between a client program and
a server program. The java.net package provides two classes--Socket and ServerSocket--which
implement the client side of the connection and the server side of the connection, respectively.
What information is needed to create a TCP Socket?
ANSWER : The Local Systems IP Address and Port Number.
And the Remote System's IPAddress and Port Number.
5) What are the two important TCP Socket classes?
ANSWER : Socket and ServerSocket.
ServerSocket is used for normal two-way socket communication. Socket class allows us to read and
write through the sockets.
getInputStream() and getOutputStream() are the two methods available in Socket class.
When MalformedURLException and UnknownHostException throws?
ANSWER : When the specified URL is not connected then the URL throw MalformedURLException
and If InetAddress methods getByName and getLocalHost are unabletoresolve the host name they
throwan UnknownHostException.
Servlets
1) What is the servlet?
ANSWER : Servlets are modules that extend request/response-oriented servers, such as Java-enabled
web servers. For example, a servlet might be responsible for taking data in an HTML order-entry form
and applying the business logic used to update a company's order database.
Servlets are to servers what applets are to browsers. Unlike applets, however, servlets have no
graphical user interface.
2) Whats the advantages using servlets than using CGI?
ANSWER : Servlets provide a way to generate dynamic documents that is both easier to write and
faster to run. Servlets also address the problem of doing server-side programming with platformspecific APIs: they are developed with the Java Servlet API, a standard Java extension.
3) What are the uses of Servlets?
ANSWER : A servlet can handle multiple requests concurrently, and can synchronize requests. This
allows servlets to support systems such as on-line conferencing.
Servlets can forward requests to other servers and servlets.Thus servlets can be used to balance load
among several servers that mirror the same content, and to partition a single logical service over
several servers, according to task type or organizational boundaries.
4) Which pakage provides interfaces and classes for writing servlets?
ANSWER : javax
5) Whats the Servlet Interfcae?
ANSWER : The central abstraction in the Servlet API is the Servlet interface. All servlets implement
this interface, either directly or, more commonly, by extending a class that implements it such as
HttpServlet.
Servlets-->Generic Servlet-->HttpServlet-->MyServlet.
The Servlet interface declares, but does not implement, methods that manage the servlet and its
communications with clients. Servlet writers provide some or all of these methods when developing a
servlet.
6) When a servlet accepts a call from a client, it receives two objects- What are they?
ANSWER : ServeltRequest: Which encapsulates the communication from the client to the server.
ServletResponse: Whcih encapsulates the communication from the servlet back to the client.
ServletRequest and ServletResponse are interfaces defined by the javax.servlet package.
7) What information that the ServletRequest interface allows the servlet access to?
ANSWER : Information such as the names of the parameters passed in by the client, the protocol
(scheme) being used by the client, and the names of the remote host that made the request and the
server that received it.
56
Encapsulation :
Encapsulation is the mechanism that binds together code and the data it manipulates and keeps both
safe from outside interference and misuse.
Inheritance:
Inheritance is the process by which one object acquires the properties of another object.
Polymorphism:
Polymorphism is a feature that allows one interface to be used for a general class of actions. The
specific action is determined by the exact nature of actions.
Code Blocks:
Two or more statements which is allowed to be grouped into blocks of code is otherwise called as
Code Blocks.This is done by enclosing the statements between opening and closing curly braces.
Floating-point numbers:
Floating-point numbers which is also known as real numbers, are used when evaluating expressions
that require fractional precision.
Unicode:
Unicode defines a fully international character set that can represent all of the characters found in all
human languages. It is a unification of dozens of character sets, such as Latin, Greek, Arabic and many
more.
Booleans:
Java has a simple type called boolean, for logical values. It can have only on of two possible values,
true or false.
Casting:
A cast is simply an explicit type conversion. To create a conversion between two incompatible types,
you must use a cast.
Arrays:
An array is a group of like-typed variables that are referred to by a common name. Arrays offer a
convenient means of grouping related information. Arrays of any type can be created and may have
one or more dimension.
Relational Operators:
The relational operators determine the relationship that one operand has to the other. They determine
the equality and ordering.
11.Short-Circuit Logical Operators:
The secondary versions of the Boolean AND and OR operators are known as shortcircuit logical operators. It is represented by || and &&..
12. Switch:
The switch statement is Javas multiway branch statement. It provides an easy way to
dispatch execution to different parts of your code based on the value of an
Freshersworld.com Resource Center
57
58
Technical Questions
1. A 2MB PCM(pulse code modulation) has
a) 32 channels
b) 30 voice channels & 1 signalling channel.
c) 31 voice channels & 1 signalling channel.
d) 32 channels out of which 30 voice channels, 1 signalling channel, & 1
Synchronizatio channel.
Ans: (c)
2. Time taken for 1 satellite hop in voice communication is
a) 1/2 second
b) 1 seconds
c) 4 seconds
d) 2 seconds
Ans: (a)
3. Max number of satellite hops allowed in voice communication is :
a) only one
b) more han one
c) two hops
d) four hops
Ans: (c)
4. What is the max. decimal number that can be accomodated in a byte.
a) 128
b) 256
c) 255
d) 512
Ans: (c)
5. Conditional results after execution of an instruction in a micro processor is
stored in
a) register
b) accumulator
c) flag register
d) flag register part of PSW(Program Status Word)
Ans: (d)
31. The percentage of times a page number bound in associate register is called
Ans. Bit ratio
32. Expand MODEM
Ans. Modulator and Demodulator
33. RDBMS file system can be defined as
Ans. Interrelated
34. Super Key is
Ans. Primary key and Attribute
35. Windows 95 supports
(a) Multiuser
(b) n tasks
(c) Both
(d) None
Ans. (a)
36.In the command scanf, h is used for
Ans. Short int
37.A process is defined as
Ans. Program in execution
38.A thread is
Ans. Detachable unit of executable code)
39.What is the advantage of Win NT over Win 95
Ans. Robust and secure
50.Preorder of A*(B+C)/D-G
Ans.*+ABC/-DG
51.What is the efficiency of merge sort
Ans. O(n log n)
52.In which layer are routers used
Ans.In network layer
53.Which of the following sorting algorithem has average sorting behavior -Bubble sort,merge sort,heap sort,exchange sort
Ans. Heap sort
54.In binary search tree which traversal is used for getting ascending order
values--Inorder ,post order,preorder
Ans.Inorder
55.What are device drivers used for
Ans.To provide software for enabling the hardware
56.What is fork command in unix
Ans. System call used to create process
57.What is make command in unix
Ans. Used forcreation of more than one file
58.In unix .profile contains
Ans. Start up program
59.In unix 'ls 'stores contents in
Ans.inode block
10
11
12
83. Which Statement would you use to remove the EMPLOYEE_Id_PK PRIMARY
KEY constraint and all depending constraints fromthe EMPLOYEE table?
a) ALTER TABLE employee dROP PRIMARY KEY CASCAdE;
b) ALTER TABLE employee dELETE PRIMARY KEY CASCAdE;
c) MOdIFY TABLE employee dROP CONSTRAINT employee_id_pk CASCAdE;
d) ALTER TABLE employee dROP PRIMARY KEY employee_id_pk CASCAdE;
e) MOdIFY TABLE employee dELETE PRIMARY KEY employee_id_pk CASCAdE;
Ans. a
13
14
91. If the sum of the roots of the equation ax2 + bx + c=0 is equal to the sum of the
squares of their reciprocals
then a/c, b/a, c/b are in
(a) AP
(b) GP
(c) HP
(d) None of these
Ans. (c)
15
16
17
UNIX Concepts
SECTION - I
FILE MANAGEMENT IN UNIX
1. How are devices represented in UNIX?
All devices are represented by files called special files that are located
in/dev directory. Thus, device files and other files are named and accessed in the
same way. A 'regular file' is just an ordinary data file in the disk. A 'block special file'
represents a device with characteristics similar to a disk (data transfer in terms of
blocks). A 'character special file' represents a device with characteristics similar to a
keyboard (data transfer is by stream of bits in sequential order).
2. What is 'inode'?
All UNIX files have its description stored in a structure called 'inode'. The
inode contains info about the file-size, its location, time of last access, time of last
modification, permission and so on. Directories are also represented as files and have
an associated inode. In addition to descriptions about the file, the inode contains
pointers to the data blocks of the file. If the file is large, inode has indirect pointer to a
block of pointers to additional data blocks (this further aggregates for larger files). A
block is typically 8k.
Inode consists of the following fields:
File owner identifier
File type
File access permissions
File access times
Number of links
File size
Location of the file data
3. Brief about the directory representation in UNIX
A Unix directory is a file containing a correspondence between filenames and
inodes. A directory is a special file that the kernel maintains. Only kernel modifies
directories, but processes can read directories. The contents of a directory are a list of
filename and inode number pairs. When new directories are created, kernel makes
two entries named '.' (refers to the directory itself) and '..' (refers to parent directory).
System call for creating directory is mkdir (pathname, mode).
4.
8. How do you create special files like named pipes and device files?
The system call mknod creates special files in the following sequence.
1. kernel assigns new inode,
2. sets the file type to indicate that the file is a pipe, directory or special file,
3. If it is a device file, it makes the other entries like major, minor device numbers.
For example:
If the device is a disk, major device number refers to the disk controller and
minor device number is the disk.
9. Discuss the mount and unmount system calls
The privileged mount system call is used to attach a file system to a directory
of another file system; the unmount system call detaches a file system. When you
mount another file system on to your directory, you are essentially splicing one
directory tree onto a branch in another directory tree. The first argument to mount call
is the mount point, that is , a directory in the current file naming system. The second
argument is the file system to mount to that point. When you insert a cdrom to your
unix system's drive, the file system in the cdrom automatically mounts to /dev/cdrom
in your system.
10. How does the inode map to data block of a file?
Inode has 13 block addresses. The first 10 are direct block addresses of the
first 10 data blocks in the file. The 11th address points to a one-level index block. The
12th address points to a two-level (double in-direction) index block. The 13th address
points to a three-level(triple in-direction)index block. This provides a very large
maximum file size with efficient access to large files, but also small files are accessed
directly in one disk read.
11. What is a shell?
A shell is an interactive user interface to an operating system services that allows an
user to enter commands as character strings or through a graphical user interface. The
shell converts them to system calls to the OS or forks off a process to execute the
command. System call results and other information from the OS are presented to the
user through an interactive interface. Commonly used shells are sh,csh,ks etc.
SECTION - II
PROCESS MODEL and IPC
1. Brief about the initial process sequence while the system boots up.
While booting, special process called the 'swapper' or 'scheduler' is created
with Process-ID 0. The swapper manages memory allocation for processes and
influences CPU allocation. The swapper inturn creates 3 children:
the process dispatcher,
vhand and
dbflush
with IDs 1,2 and 3 respectively.
Freshersworld.com Resource Center
Paging:
Freshersworld.com Resource Center
2. What is major difference between the Historic Unix and the new BSD release of
Unix System V in terms of Memory Management?
Historic Unix uses Swapping entire process is transferred to the main
memory from the swap device, whereas the Unix System V uses Demand Paging
only the part of the process is moved to the main memory. Historic Unix uses one
Swap Device and Unix System V allow multiple Swap Devices.
3. What is the main goal of the Memory Management?
It decides which process should reside in the main memory,
Manages the parts of the virtual address space of a process which is non-core
resident,
Monitors the available main memory and periodically write the processes into the
swap device to provide more processes fit in the main memory simultaneously.
4. What is a Map?
A Map is an Array, which contains the addresses of the free space in the swap
device that are allocatable resources, and the number of the resource units available
there.
Address
1
Units
10,000
10
Modify Reference
11
Valid Protection
27. How the Kernel handles the fork() system call in traditional Unix and in the
System V Unix, while swapping?
Kernel in traditional Unix, makes the duplicate copy of the parents address
space and attaches it to the childs process, while swapping. Kernel in System V
Unix, manipulates the region tables, page table, and pfdata table entries, by
incrementing the reference count of the region table of shared regions.
28. Difference between the fork() and vfork() system call?
During the fork() system call the Kernel makes a copy of the parent processs
address space and attaches it to the child process.
But the vfork() system call do not makes any copy of the parents address
space, so it is faster than the fork() system call. The child process as a result of the
vfork() system call executes exec() system call. The child process from vfork()
system call executes in the parents address space (this can overwrite the parents data
and stack ) which suspends the parent process until the child process exits.
29. What is BSS(Block Started by Symbol)?
A data representation at the machine level, that has initial values when a
program starts and tells about how much space the kernel allocates for the uninitialized data. Kernel initializes it to zero at run-time.
30. What is Page-Stealer process?
This is the Kernel process that makes rooms for the incoming pages, by
swapping the memory pages that are not the part of the working set of a process.
Page-Stealer is created by the Kernel at the system initialization and invokes it
throughout the lifetime of the system. Kernel locks a region when a process faults on
a page in the region, so that page stealer cannot steal the page, which is being faulted
in.
31. Name two paging states for a page in memory?
The two paging states are:
The page is aging and is not yet eligible for swapping,
The page is eligible for swapping but not yet eligible for reassignment to other
virtual address space.
32. What are the phases of swapping a page from the memory?
Page stealer finds the page eligible for swapping and places the page
number in the list of pages to be swapped.
Kernel copies the page to a swap device when necessary and clears the
valid bit in the page table entry, decrements the pfdata reference count,
and places the pfdata table entry at the end of the free list if its reference
count is 0.
33. What is page fault? Its types?
Freshersworld.com Resource Center
12
13
14
15
Data Structure
1. What is data structure?
A data structure is a way of organizing data that considers not only the items
stored, but also their relationship to each other. Advance knowledge about the
relationship between data items allows designing of efficient algorithms for the
manipulation of data.
2.
List out the areas in which data structures are applied extensively?
Compiler Design,
Operating System,
Database Management System,
Statistical analysis package,
Numerical Analysis,
Graphics,
Artificial Intelligence,
Simulation
3. What are the major data structures used in the following areas : RDBMS,
Network data model & Hierarchical data model.
RDBMS
Array (i.e. Array of structures)
Network data model
Graph
Hierarchical data model Trees
4. If you are using C language to implement the heterogeneous linked list, what
pointer type will you use?
The heterogeneous linked list contains different data types in its nodes and we
need a link, pointer to connect them. It is not possible to use ordinary pointers for this.
So we go for void pointer. Void pointer is capable of storing pointer to any type as it
is a generic pointer type.
5. Minimum number of queues needed to implement the priority queue?
Two. One queue is used for actual storing of data and another for storing
priorities.
6. What is the data structures used to perform recursion?
Stack. Because of its LIFO (Last In First Out) property it remembers its
caller so knows whom to return when the function has to return. Recursion makes
use of system stack for storing the return addresses of the function calls.
Every recursive function has its equivalent iterative (non-recursive) function.
Even when such equivalent iterative procedures are written, explicit stack is to be
used.
Null Branches
ii
iii
iv
In general:
If there are n nodes, there exist 2n-n different trees.
13. List out few of the Application of tree data-structure?
The manipulation of Arithmetic expression,
Symbol Table construction,
Syntax analysis.
14. List out few of the applications that make use of Multilinked Structures?
Sparse matrix,
Index generation.
15. In tree construction which is the suitable efficient data structure?
(a) Array
(b) Linked list
(c) Stack
(d) Queue (e) none
(b) Linked list
16. What is the type of the algorithm used in solving the 8 Queens problem?
Backtracking
17. In an AVL tree, at what condition the balancing is to be done?
If the pivotal value (or the Height factor) is greater than 1 or less than 1.
18. What is the bucket size, when the overlapping and collision occur at same time?
One. If there is only one entry possible in the bucket, when the collision
occurs, there is no way to accommodate the colliding value. This results in the
overlapping of values.
Inorder : D H B E A F C I G J
Preorder: A B D H E C F G I J
Postorder: H D E B F I J G C A
20. There are 8, 15, 13, 14 nodes were there in 4 different trees. Which of them could
have formed a full binary tree?
15.
In general:
There are 2n-1 nodes in a full binary tree.
By the method of elimination:
Full binary trees contain odd number of nodes. So there cannot be full
binary trees with 8 or 14 nodes, so rejected. With 13 nodes you can form a complete
binary tree but not a full binary tree. So the correct answer is 15.
Note:
Full and Complete binary trees are different. All full binary trees are complete
binary trees but not vice versa.
21. In the given binary tree, using array you can store the node 4 at which location?
1
4
5
Freshersworld.com
Resource Center
4
At location 6
Root
LC1
RC1
LC2
RC2
LC3
RC3
LC4
RC4
where LCn means Left Child of node n and RCn means Right Child of node n
22. Sort the given values using Quick Sort?
65
70
75
80
85
60
55
50
45
Sorting takes place from the pivot value, which is the first value of the given
elements, this is marked bold. The values at the left pointer and right pointer are
indicated using L and R respectively.
65
70L
75
80
85
60
55
50
45R
Since pivot is not yet changed the same process is continued after interchanging the
values at L and R positions
65
45
75 L
80
85
60
55
50 R
70
65
45
50
80 L
85
60
55 R
75
70
65
45
50
55
85 L
60 R
80
75
70
65
45
50
55
60 R
85 L
80
75
70
When the L and R pointers cross each other the pivot value is interchanged with the
value at right pointer. If the pivot is changed it means that the pivot has occupied its
original position in the sorted order (shown in bold italics) and hence two different
arrays are formed, one from start of the original array to the pivot position-1 and the
other from pivot position+1 to end.
60 L
45
50
55 R
65
85 L
80
75
70 R
55 L
45
50 R
60
65
70 R
80 L
75
85
50 L
45 R
55
60
65
70
80 L
75 R
85
50
55
60
65
70
75
80
85
23. For the given graph, draw the DFS and BFS?
The given graph:
BFS:
AXGHPEMYJ
DFS:
AXHPEYMJG
24. Classify the Hashing Functions based on the various methods by which the key
value is found.
Direct method,
Subtraction method,
Modulo-Division method,
Digit-Extraction method,
Mid-Square method,
Folding method,
Pseudo-random method.
25. What are the types of Collision Resolution Techniques and the methods used in
each of the type?
Open addressing (closed hashing),
The methods used include:
Overflow block,
Closed addressing (open hashing)
The methods used include:
Linked list,
Binary tree
19
16
24
20
22
78
92
28. Of the following tree structure, which is, efficient considering space
and time complexities?
(a) Incomplete Binary Tree
(b) Complete Binary Tree
(c) Full Binary Tree
(b) Complete Binary Tree.
By the method of elimination:
Full binary tree loses its nature when operations of insertions and
deletions are done. For incomplete binary trees, extra storage is required and
overhead of NULL node checking takes place. So complete binary tree is the better
one since the property of complete binary tree is maintained even after operations like
additions and deletions are done on it.
29. What is a spanning Tree?
A spanning tree is a tree associated with a network. All the nodes of the graph
appear on the tree once. A minimum spanning tree is a spanning tree organized so
that the total edge weight between nodes is minimized.
30. Does the minimum spanning tree of a graph give the shortest distance between
any 2 specified nodes?
No.
Minimal spanning tree assures that the total weight of the tree is kept at its
minimum. But it doesnt mean that the distance between any two nodes involved in
the minimum-spanning tree is minimum.
600
200
612
410
310
2985
5
400
1421
3
200
310
612
410
2
02
02
NAME
03
FIRST NAME
YEAR OF STUDY
03
03
LAST NAME
FIRST SEM
03
SECOND SEM
Operating Systems
Following are a few basic questions that cover the essentials of OS:
1. Explain the concept of Reentrancy.
It is a useful, memory-saving technique for multiprogrammed timesharing
systems. A Reentrant Procedure is one in which multiple users can share a single
copy of a program during the same period. Reentrancy has 2 key aspects: The
program code cannot modify itself, and the local data for each user process must be
stored separately. Thus, the permanent part is the code, and the temporary part is the
pointer back to the calling program and local variables used by that program. Each
execution instance is called activation. It executes the code in the permanent part, but
has its own copy of local variables/parameters. The temporary part associated with
each activation is the activation record. Generally, the activation record is kept on the
stack.
Note: A reentrant procedure can be interrupted and called by an interrupting
program, and still execute correctly on returning to the procedure.
2. Explain Belady's Anomaly.
Also called FIFO anomaly. Usually, on increasing the number of frames
allocated to a process' virtual memory, the process execution is faster, because fewer
page faults occur. Sometimes, the reverse happens, i.e., the execution time increases
even when more frames are allocated to the process. This is Belady's Anomaly. This
is true for certain page reference patterns.
3. What is a binary semaphore? What is its use?
A binary semaphore is one, which takes only 0 and 1 as values. They are used
to implement mutual exclusion and synchronize concurrent processes.
4. What is thrashing?
It is a phenomenon in virtual memory schemes when the processor spends
most of its time swapping pages, rather than executing instructions. This is due to an
inordinate number of page faults.
5. List the Coffman's conditions that lead to a deadlock.
Mutual Exclusion: Only one process may use a critical resource at a time.
Hold & Wait: A process may be allocated some resources while waiting for
others.
No Pre-emption: No resource can be forcible removed from a process holding it.
Circular Wait: A closed chain of processes exist such that each process holds at
least one resource needed by another process in the chain.
24. In the context of memory management, what are placement and replacement
algorithms?
Networking concepts
1. What are the two types of transmission technology available?
(i) Broadcast and
(ii) point-to-point
2. What is subnet?
A generic term for section of a large networks usually separated by a bridge or
router.
3. Difference between the communication and transmission.
Transmission is a physical movement of information and concern issues like
bit polarity, synchronisation, clock etc.
Communication means the meaning full exchange of information between two
communication media.
4. What are the possible ways of data exchange?
(i) Simplex (ii) Half-duplex
(iii) Full-duplex.
5. What is SAP?
Series of interface points that allow other computers to communicate with the
other layers of network protocol stack.
6. What do you meant by "triple X" in Networks?
The function of PAD (Packet Assembler Disassembler) is described in a
document known as X.3. The standard protocol has been defined between the
terminal and the PAD, called X.28; another standard protocol exists between hte PAD
and the network, called X.29. Together, these three recommendations are often called
"triple X"
7. What is frame relay, in which layer it comes?
Frame relay is a packet switching technology. It will operate in the data link
layer.
8. What is terminal emulation, in which layer it comes?
Telnet is also called as terminal emulation. It belongs to application layer.
9. What is Beaconing?
The process that allows a network to self-repair networks problems. The
stations on the network notify the other stations on the ring when they are not
receiving the transmissions. Beaconing is used in Token ring and FDDI networks.
10. What is redirector?
Redirector is software that intercepts file or prints I/O requests and translates
them into network requests. This comes under presentation layer.
RDBMS Concepts
1. What is database?
A database is a logically coherent collection of data with some inherent meaning,
representing some aspect of real world and which is designed, built and populated
with data for a specific purpose.
2. What is DBMS?
It is a collection of programs that enables user to create and maintain a
database. In other words it is general-purpose software that provides the users with
the processes of defining, constructing and manipulating the database for various
applications.
3. What is a Database system?
The database and DBMS software together is called as Database system.
4.
Advantages of DBMS?
Redundancy is controlled.
Unauthorised access is restricted.
Providing multiple user interfaces.
Enforcing integrity constraints.
Providing backup and recovery.
5.
Database files
Control files
Redo logs
The most important of these are the database files where the actual data
resides. The control files and the redo logs support the functioning of the architecture
itself.
All three sets of files must be present, open, and available to Oracle for any data on the database to be useable.
Without these files, you cannot access the database, and the database administrator might have to recover some or all of the
database using a backup, if there is one.
10
11
12
EXCEPTION
when NO_DATA_FOUND then
g_out_status_code := 'FAIL';
RAISE ot_failure;
Within this exception is the RAISE statement that transfers control back to the
ot_failure exception handler. This technique of raising the exception is used to invoke
all user-defined exceptions.
System-Defined Exceptions
Freshersworld.com Resource Center
13
Oracle Error
ORA-06511
ORA-00001
ORA-01001
ORA-01722
ORA-01017
ORA-01403
ORA-01012
ORA-06501
ORA-06500
ORA-00051
ORA-01422
ORA-00061
ORA-06502
ORA-01476
14
b) ii & iii
d) ii & iii
(a) i & iii because theta joins are joins made on keys that are not primary
keys.
91. A B C is a set of attributes. The functional dependency is as follows
AB -> B
AC -> C
C -> B
a) is in 1NF
b) is in 2NF
c) is in 3NF
d) is in BCNF
(a) is in 1NF since (AC)+ = { A, B, C} hence AC is the primary key. Since
C
B is a FD given, where neither C is a Key nor B is a prime attribute, this it is
not in 3NF. Further B is not functionally dependent on key AC thus it is not in 2NF.
Thus the given FDs is in 1NF.
92. In mapping of ERD to DFD
a) entities in ERD should correspond to an existing entity/store in DFD
b) entity in DFD is converted to attributes of an entity in ERD
c) relations in ERD has 1 to 1 correspondence to processes in DFD
d) relationships in ERD has 1 to 1 correspondence to flows in DFD
(a) entities in ERD should correspond to an existing entity/store in DFD
93. A dominant entity is the entity
a) on the N side in a 1 : N relationship
b) on the 1 side in a 1 : N relationship
c) on either side in a 1 : 1 relationship
d) nothing to do with 1 : 1 or 1 : N relationship
(b) on the 1 side in a 1 : N relationship
94. Select 'NORTH', CUSTOMER From CUST_DTLS Where REGION = 'N' Order
By
CUSTOMER Union Select 'EAST', CUSTOMER From CUST_DTLS Where
REGION = 'E' Order By CUSTOMER
The above is
a) Not an error
b) Error - the string in single quotes 'NORTH' and 'SOUTH'
c) Error - the string should be in double quotes
d) Error - ORDER BY clause
15
101.
16
17
105.
18
SQL
1. Which is the subset of SQL commands used to manipulate Oracle Database
structures, including tables?
Data Definition Language (DDL)
2. What operator performs pattern matching?
LIKE operator
3. What operator tests column for the absence of data?
IS NULL operator
4. Which command executes the contents of a specified file?
START <filename> or @<filename>
5. What is the parameter substitution symbol used with INSERT INTO command?
&
6. Which command displays the SQL command in the SQL buffer, and then executes
it?
RUN
7. What are the wildcards used for pattern matching?
_ for single character substitution and % for multi-character substitution
8. State true or false. EXISTS, SOME, ANY are operators in SQL.
True
9. State true or false. !=, <>, ^= all denote the same operation.
True
10. What are the privileges that can be granted on a table by a user to others?
Insert, update, delete, select, references, index, execute, alter, all
11. What command is used to get back the privileges offered by the GRANT
command?
REVOKE
12. Which system tables contain information on privileges granted and privileges
obtained?
USER_TAB_PRIVS_MADE, USER_TAB_PRIVS_RECD
13. Which system table contains information on constraints on all the tables created?
USER_CONSTRAINTS
20. Which date function is used to find the difference between two dates?
MONTHS_BETWEEN
21. Why does the following command give a compilation error?
DROP TABLE &TABLE_NAME;
SQL QUERIES
I. SCHEMAS
Table 1 : STUDIES
Freshersworld.com Resource Center
Find out the selling cost average for packages developed in Oracle.
Display the names, ages and experience of all programmers.
Display the names of those who have done the PGDCA course.
What is the highest number of copies sold by a package?
Display the names and date of birth of all programmers born in April.
Display the lowest course fee.
How many programmers have done the DCA course.
How much revenue has been earned through the sale of packages developed
in C.
9. Display the details of software developed by Rakesh.
10. How many programmers studied at Pentafour.
11. Display the details of packages whose sales crossed the 5000 mark.
12. Find out the number of copies which should be sold in order to recover the
development cost of each package.
13. Display the details of packages for which the development cost has been
recovered.
14. What is the price of costliest software developed in VB?
15. How many packages were developed in Oracle ?
16. How many programmers studied at PRAGATHI?
17. How many programmers paid 10000 to 15000 for the course?
18. What is the average course fee?
19. Display the details of programmers knowing C.
20. How many programmers know either C or Pascal?
21. How many programmers dont know C and C++?
Freshersworld.com Resource Center
II . SCHEMA :
Table 1 : DEPT
DEPTNO (NOT NULL , NUMBER(2)), DNAME (VARCHAR2(14)),
LOC (VARCHAR2(13)
Table 2 : EMP
EMPNO (NOT NULL , NUMBER(4)), ENAME (VARCHAR2(10)),
JOB (VARCHAR2(9)), MGR (NUMBER(4)), HIREDATE (DATE),
SAL (NUMBER(7,2)), COMM (NUMBER(7,2)), DEPTNO (NUMBER(2))
MGR is the empno of the employee whom the employee reports to. DEPTNO is a
foreign key.
QUERIES
1. List all the employees who have at least one person reporting to them.
Freshersworld.com Resource Center
UNIX Concepts
SECTION - I
FILE MANAGEMENT IN UNIX
2. What is 'inode'?
All UNIX files have its description stored in a structure called 'inode'. The inode
contains info about the file-size, its location, time of last access, time of last modification,
permission and so on. Directories are also represented as files and have an associated
inode. In addition to descriptions about the file, the inode contains pointers to the data
blocks of the file. If the file is large, inode has indirect pointer to a block of pointers to
additional data blocks (this further aggregates for larger files). A block is typically 8k.
Inode consists of the following fields:
The difference between fcntl anf ioctl is that the former is intended for any open file,
while the latter is for device-specific operations.
'r w x -r w x- r w x'
(user permission-group permission-others permission)
r-read, w-write, x-execute
7. What is a FIFO?
8. How do you create special files like named pipes and device files?
The system call mknod creates special files in the following sequence.
1. kernel assigns new inode,
2. sets the file type to indicate that the file is a pipe, directory or special file,
3. If it is a device file, it makes the other entries like major, minor device numbers.
For example:
If the device is a disk, major device number refers to the disk controller and minor
device number is the disk.
9. Discuss the mount and unmount system calls
The privileged mount system call is used to attach a file system to a directory of
another file system; the unmount system call detaches a file system. When you mount
another file system on to your directory, you are essentially splicing one directory tree
onto a branch in another directory tree. The first argument to mount call is the mount
point, that is , a directory in the current file naming system. The second argument is the
file system to mount to that point. When you insert a cdrom to your unix system's drive,
the file system in the cdrom automatically mounts to /dev/cdrom in your system.
A shell is an interactive user interface to an operating system services that allows an user
to enter commands as character strings or through a graphical user interface. The shell
converts them to system calls to the OS or forks off a process to execute the command.
System call results and other information from the OS are presented to the user through
an interactive interface. Commonly used shells are sh,csh,ks etc.
SECTION - II
PROCESS MODEL and IPC
1. Brief about the initial process sequence while the system boots up.
While booting, special process called the 'swapper' or 'scheduler' is created with
Process-ID 0. The swapper manages memory allocation for processes and influences
CPU allocation. The swapper inturn creates 3 children:
printf("Hello World!");
}
Answer:
"Hello World" will be printed 8 times.
Explanation:
2^n times where n is the number of calls to fork()
A parent and child can communicate through any of the normal inter-process
communication schemes (pipes, sockets, message queues, shared memory), but also have
some special ways to communicate that take advantage of their relationship as a parent
and child. One of the most obvious is that the parent can get the exit status of the child.
9. What is a zombie?
When a program forks and the child finishes before the parent, the kernel still
keeps some of its information about the child in case the parent might need it - for
example, the parent may need to check the child's exit status. To be able to get this
information, the parent calls `wait()'; In the interval between the child terminating and the
parent calling `wait()', the child is said to be a `zombie' (If you do `ps', the child will have
a `Z' in its status field to indicate this.)
Allocate a slot in the process table, a list of currently running programs kept by
UNIX.
Assign a unique process identifier (PID) to the process.
iCopy the context of the parent, the process that requested the spawning of the
new process.
Return the new PID to the parent process. This enables the parent process to
examine or control the process directly.
init: Takes over the basic running of the system when the kernel has finished the
boot process.
inetd: Responsible for starting network services that do not have their own standalone daemons. For example, inetd usually takes care of incoming rlogin, telnet,
and ftp connections.
cron: Responsible for running repetitive tasks on a regular schedule.
ancestor (parent-child relationship). However this problem was fixed with the
introduction of named-pipes (FIFO).
Message Queues :
Message queues can be used between related and unrelated processes
running on a machine.
Shared Memory:
This is the fastest of all IPC schemes. The memory to be shared is mapped
into the address space of the processes (that are sharing). The speed achieved is
attributed to the fact that there is no kernel involvement. But this scheme needs
synchronization.
SECTION - III
MEMORY MANAGEMENT
Paging:
Only the required memory pages are moved to main memory from the
swap device for execution. Process size does not matter. Gives the concept of the virtual
memory.
It provides greater flexibility in mapping the virtual address space into the physical
memory of the machine. Allows more number of processes to fit in the main memory
simultaneously. Allows the greater process size than the available physical memory.
Demand paging systems handle the memory more flexibly.
2. What is major difference between the Historic Unix and the new BSD release of
Unix System V in terms of Memory Management?
Historic Unix uses Swapping entire process is transferred to the main memory
from the swap device, whereas the Unix System V uses Demand Paging only the part
of the process is moved to the main memory. Historic Unix uses one Swap Device and
Unix System V allow multiple Swap Devices.
4. What is a Map?
A Map is an Array, which contains the addresses of the free space in the swap
device that are allocatable resources, and the number of the resource units available there.
5. What scheme does the Kernel in Unix System V follow while choosing a swap
device among the multiple swap devices?
Kernel follows Round Robin scheme choosing a swap device among the multiple
swap devices in Unix System V.
6. What is a Region?
A Region is a continuous area of a processs address space (such as text, data and
stack). The kernel in a Region Table that is local to the process maintains region.
Regions are sharable among the process.
7. What are the events done by the Kernel after a process is being swapped out from
the main memory?
When Kernel swaps the process out of the primary memory, it performs the
following:
Kernel decrements the Reference Count of each region of the process. If the
reference count becomes zero, swaps the region out of the main memory,
Kernel allocates the space for the swapping process in the swap device,
Kernel locks the other swapping process while the current swapping operation is
going on,
The Kernel saves the swap address of the region in the region table.
8. Is the Process before and after the swap are the same? Give reason.
Process before swapping is residing in the primary memory in its original form.
The regions (text, data and stack) may not be occupied fully by the process, there may be
few empty slots in any of the regions and while swapping Kernel do not bother about the
empty slots while swapping the process out.
After swapping the process resides in the swap (secondary memory) device. The
regions swapped out will be present but only the occupied region slots but not the empty
slots that were present before assigning.
While swapping the process once again into the main memory, the Kernel referring to the Process Memory Map, it assigns
the main memory accordingly taking care of the empty slots in the regions.
10. What are the entities that are swapped out of the main memory while swapping
the process out of the main memory?
All memory space occupied by the process, processs u-area, and Kernel stack are
swapped out, theoretically.
Practically, if the processs u-area contains the Address Translation Tables for the
process then Kernel implementations do not swap the u-area.
14. What are the processes that are not bothered by the swapper? Give Reason.
16. What are the criteria for choosing a process for swapping into memory from the
swap device?
The resident time of the processes in the swap device, the priority of the processes and
the amount of time the processes had been swapped out.
17. What are the criteria for choosing a process for swapping out of the memory to
the swap device?
19. What are conditions on which deadlock can occur while swapping the processes?
25. What are data structures that are used for Demand Paging?
Kernel contains 4 data structures for Demand paging. They are,
26. What are the bits that support the demand paging?
Valid, Reference, Modify, Copy on write, Age. These bits are the part of the page
table entry, which includes physical address of the page and protection bits.
Page address
Age
Copy on write
Modify
Reference
Valid
Protection
26. How the Kernel handles the fork() system call in traditional Unix and in the
System V Unix, while swapping?
Kernel in traditional Unix, makes the duplicate copy of the parents address space and
attaches it to the childs process, while swapping. Kernel in System V Unix, manipulates
the region tables, page table, and pfdata table entries, by incrementing the reference count
of the region table of shared regions.
26. What are the phases of swapping a page from the memory?
Page stealer finds the page eligible for swapping and places the page number in
the list of pages to be swapped.
Kernel copies the page to a swap device when necessary and clears the valid bit in
the page table entry, decrements the pfdata reference count, and places the pfdata
table entry at the end of the free list if its reference count is 0.
Validity fault,
Protection fault.
33. In what way the Fault Handlers and the Interrupt handlers are different?
Fault handlers are also an interrupt handler with an exception that the interrupt handlers
cannot sleep. Fault handlers sleep in the context of the process that caused the memory
fault. The fault refers to the running process and no arbitrary processes are put to sleep.
33. What does the swapping system do if it identifies the illegal page for swapping?
If the disk block descriptor does not contain any record of the faulted page, then
this causes the attempted memory reference is invalid and the kernel sends a
Segmentation violation signal to the offending process. This happens when the
swapping system identifies any invalid memory reference.
33. What are states that the page can be in, after causing a page fault?
It sets the valid bit of the page by clearing the modify bit.
It recalculates the process priority.
33. How the Kernel handles the copy on write bit of a page, when the bit is set?
In situations like, where the copy on write bit of a page is set and that page is shared by
more than one process, the Kernel allocates new page and copies the content to the new
page and the other processes retain their references to the old page. After copying the
Kernel updates the page table entry with the new page number. Then Kernel decrements
the reference count of the old pfdata table entry.
In cases like, where the copy on write bit is set and no processes are sharing the page,
the Kernel allows the physical page to be reused by the processes. By doing so, it clears
the copy on write bit and disassociates the page from its disk copy (if one exists), because
other process may share the disk copy. Then it removes the pfdata table entry from the
page-queue as the new copy of the virtual page is not on the swap device. It decrements
the swap-use count for the page and if count drops to 0, frees the swap space.
33. How the Kernel handles both the page stealer and the fault handler?
The page stealer and the fault handler thrash because of the shortage of the
memory. If the sum of the working sets of all processes is greater that the physical
memory then the fault handler will usually sleep because it cannot allocate pages for a
process. This results in the reduction of the system throughput because Kernel spends too
much time in overhead, rearranging the memory in the frantic pace.
1. What is pipelining?
2. What are the five stages in a DLX pipeline?
3. For a pipeline with n stages, whats the ideal throughput? What prevents us from
achieving this ideal throughput?
4. What are the different hazards? How do you avoid them?
5. Instead of just 5-8 pipe stages why not have, say, a pipeline with 50 pipe stages?
6. What are Branch Prediction and Branch Target Buffers?
7. How do you handle precise exceptions or interrupts?
8. What is a cache?
9. Whats the difference between Write-Through and Write-Back Caches? Explain
advantages and disadvantages of each.
10. Cache Size is 64KB, Block size is 32B and the cache is Two-Way Set
Associative. For a 32-bit physical address, give the division between Block
Offset, Index and Tag.
11. What is Virtual Memory?
12. What is Cache Coherency?
13. What is MESI?
14. What is a Snooping cache?
15. What are the components in a Microprocessor?
16. What is ACBF(Hex) divided by 16?
17. Convert 65(Hex) to Binary
18. Convert a number to its twos compliment and back
19. The CPU is busy but you want to stop and do some other task. How do you do it?
1. What are the flags in 8086? - In 8086 Carry flag, Parity flag, Auxiliary carry
flag, Zero flag, Overflow flag, Trace flag, Interrupt flag, Direction flag, and Sign
flag.
2. What are the various interrupts in 8086? - Maskable interrupts, Non-Maskable
interrupts.
3. What is meant by Maskable interrupts? - An interrupt that can be turned off by
the programmer is known as Maskable interrupt.
4. What is Non-Maskable interrupts? - An interrupt which can be never be turned
off (ie.disabled) is known as Non-Maskable interrupt.
5. Which interrupts are generally used for critical events? - Non-Maskable
interrupts are used in critical events. Such as Power failure, Emergency, Shut off
etc.,
6. Give examples for Maskable interrupts? - RST 7.5, RST6.5, RST5.5 are
Maskable interrupts
7. Give example for Non-Maskable interrupts? - Trap is known as Non-Maskable
interrupts, which is used in emergency condition.
8. What is the Maximum clock frequency in 8086? - 5 Mhz is the Maximum
clock frequency in 8086.
9. What are the various segment registers in 8086? - Code, Data, Stack, Extra
Segment registers in 8086.
10. Which Stack is used in 8086? - FIFO (First In First Out) stack is used in 8086.In
this type of Stack the first stored information is retrieved first.
11. What are the address lines for the software interrupts? RST 0 0000 H
RST1
0008 H
RST2
0010 H
RST3
0018 H
RST4
0020 H
RST5
0028 H
RST6
0030 H
RST7
0038 H
12. What is SIM and RIM instructions? - SIM is Set Interrupt Mask. Used to mask
the hardware interrupts. RIM is Read Interrupt Mask. Used to check whether the
interrupt is Masked or not.
13. Which is the tool used to connect the user and the computer? - Interpreter is
the tool used to connect the user and the tool.
14. What is the position of the Stack Pointer after the PUSH instruction? - The
address line is 02 less than the earlier value.
15. What is the position of the Stack Pointer after the POP instruction? - The
address line is 02 greater than the earlier value.
16. Logic calculations are done in which type of registers? - Accumulator is the
register in which Arithmetic and Logic calculations are done.
17. What are the different functional units in 8086? - Bus Interface Unit and
Execution unit, are the two different functional units in 8086.
18. Give examples for Micro controller? - Z80, Intel MSC51 &96, Motorola are the
best examples of Microcontroller.
19. What is meant by cross-compiler? - A program runs on one machine and
executes on another is called as cross-compiler.
20. What are the address lines for the hardware interrupts? -
TRAP
0024 H
21. Which Segment is used to store interrupt and subroutine return address
registers? - Stack Segment in segment register is used to store interrupt and
subroutine return address registers.
22. Which Flags can be set or reset by the programmer and also used to control
the operation of the processor? - Trace Flag, Interrupt Flag, Direction Flag.
23. What does EU do? - Execution Unit receives program instruction codes and data
from BIU, executes these instructions and store the result in general registers.
24. Which microprocessor accepts the program written for 8086 without any
changes? - 8088 is that processor.
25. What is the difference between 8086 and 8088? - The BIU in 8088 is 8-bit data
bus & 16- bit in 8086.Instruction queue is 4 byte long in 8088and 6 byte in 8086.
a) register
b) accumulator
c) flag register
d) flag register part of PSW(Program Status Word)
Ans: (d)
6. Frequency at which VOICE is sampled is
a) 4 KHz
b) 8 KHz
c) 16 KHz
d) 64 KHz
Ans: (a)
7. Line of sight is
a) Straight Line
b) Parabolic
c) Tx & Rx should be visible to each other
d) none of the above
Ans: (c)
8. Purpose of PC(Program Counter) in a MicroProcessor is
a) To store address of TOS(Top Of Stack)
b) To store address of next instruction to be executed.
c) count the number of instructions.
d) to store base address of the stack.
Ans: (b)
9. What action is taken when the processor under execution is interrupted by a nonmaskable interrupt?
a) Processor serves the interrupt request after completing the execution of the current
instruction.
b) Processor serves the interrupt request after completing the current task.
c) Processor serves the interrupt request immediately.
d) Processor serving the interrupt request depends upon the priority of the current task
under execution.
Ans: (a)
a) terminal adapter
b) bulletin board
c) modem
d) terminal emulation
Ans: (d)
26. Give the logic expression for an AOI gate. Draw its transistor level equivalent.
Draw its stick diagram
27. Why dont we use just one NMOS or PMOS transistor as a transmission gate?
28. For a NMOS transistor acting as a pass transistor, say the gate is connected to
VDD, give the output for a square pulse input going from 0 to VDD
29. Draw a 6-T SRAM Cell and explain the Read and Write operations
30. Draw the Differential Sense Amplifier and explain its working. Any idea how to
size this circuit? (Consider Channel Length Modulation)
31. What happens if we use an Inverter instead of the Differential Sense Amplifier?
32. Draw the SRAM Write Circuitry
33. Approximately, what were the sizes of your transistors in the SRAM cell? How
did you arrive at those sizes?
34. How does the size of PMOS Pull Up transistors (for bit & bit- lines) affect
SRAMs performance?
35. Whats the critical path in a SRAM?
36. Draw the timing diagram for a SRAM Read. What happens if we delay the
enabling of Clock signal?
37. Give a big picture of the entire SRAM Layout showing your placements of
SRAM Cells, Row Decoders, Column Decoders, Read Circuit, Write Circuit and
Buffers
38. In a SRAM layout, which metal layers would you prefer for Word Lines and Bit
Lines? Why?
39. How can you model a SRAM at RTL Level?
40. Whats the difference between Testing & Verification?
41. For an AND-OR implementation of a two input Mux, how do you test for StuckAt-0 and Stuck-At-1 faults at the internal nodes? (You can expect a circuit with
some redundant logic)
42. What is Latch Up? Explain Latch Up with cross section of a CMOS Inverter.
How do you avoid Latch Up?
Database
1. What is database?
A database is a logically coherent collection of data with some inherent meaning, representing
some aspect of real world and which is designed, built and populated with data for a specific
purpose.
2. What is DBMS?
It is a collection of programs that enables user to create and maintain a database. In other words
it is general-purpose software that provides the users with the processes of defining, constructing
and manipulating the database for various applications.
4. Advantages of DBMS?
Redundancy is controlled.
Unauthorised access is restricted.
Providing multiple user interfaces.
Enforcing integrity constraints.
Providing backup and recovery.
10. How is the data structure of System R different from the relational structure?
Unlike Relational systems in System R
Domains are not supported
Enforcement of candidate key uniqueness is optional
Enforcement of entity integrity is optional
Referential integrity is not enforced
compromises of its partial key and primary key of its parent entity, then it is said to be Weak
Entity set.
38. How does Tuple-oriented relational calculus differ from domain-oriented relational calculus
The tuple-oriented calculus uses a tuple variables i.e., variable whose only permitted values are
tuples of that relation. E.g. QUEL
The domain-oriented calculus has domain variables i.e., variables that range over the underlying
domains instead of over relation. E.g. ILL, DEDUCE.
It guarantees that the spurious tuple generation does not occur with respect to relation schemas
after decomposition.
52. What are partial, alternate,, artificial, compound and natural key?
Partial Key:
It is a set of attributes that can uniquely identify weak entities and that are related to same owner
entity. It is sometime called as Discriminator.
Alternate Key:
All Candidate Keys excluding the Primary Key are known as Alternate Keys.
Artificial Key:
If no obvious key, either stand alone or compound is available, then the last resort is to simply
create a key, by assigning a unique number to each record or occurrence. Then this is known as
developing an artificial key.
Compound Key:
If no single data element uniquely identifies occurrences within a construct, then combining
multiple elements to create a unique identifier for the construct is known as creating a compound
key.
Natural Key:
When one of the data elements stored within a construct is utilized as the primary key, then it is
called the natural key.
53. What is indexing and what are the different kinds of indexing?
Indexing is a technique for determining how quickly specific data can be found.
Types:
Binary search style indexing
B-Tree indexing
Inverted list indexing
Memory resident table
Table indexing
54. What is system catalog or catalog relation? How is better known as?
A RDBMS maintains a description of all the data that it contains, information about every relation
and index that it contains. This information is stored in a collection of relations maintained by the
system called metadata. It is also called data dictionary.
67. What are the primitive operations common to all record management systems?
Addition, deletion and modification.
68. Name the buffer in which all the commands that are typed in are stored
Edit Buffer
70. Are the resulting relations of PRODUCT and JOIN operation the same?
No.
PRODUCT: Concatenation of every row in one relation with every row in another.
JOIN: Concatenation of rows from one relation and related rows from another.
73. Which part of the RDBMS takes care of the data dictionary? How
Data dictionary is a set of tables and database objects that is stored in a special area of the
database and maintained exclusively by the kernel.
77. Define SQL and state the differences between SQL and other conventional programming
Languages
SQL is a nonprocedural language that is designed specifically for data access operations on
normalized relational database structures. The primary difference between SQL and other
conventional programming languages is that SQL statements specify what data operations
should be performed rather than how to perform them.
78. Name the three major set of files on disk that compose a database in Oracle
There are three major sets of files on disk that compose a database. All the files are binary.
These are
Database files
Control files
Redo logs
The most important of these are the database files where the actual data resides. The control
files and the redo logs support the functioning of the architecture itself.
All three sets of files must be present, open, and available to Oracle for any data on the database
to be useable. Without these files, you cannot access the database, and the database
administrator might have to recover some or all of the database using a backup, if there is one.
80. What are the four Oracle system processes that must always be up and running for the
database to be useable
The four Oracle system processes that must always be up and running for the database to be
useable include DBWR (Database Writer), LGWR (Log Writer), SMON (System Monitor), and
PMON (Process Monitor).
81. What are database files, control files and log files. How many of these files should a database
have at least? Why?
Database Files
The database files hold the actual data and are typically the largest in size. Depending on their
sizes, the tables (and other objects) for all the user accounts can go in one database filebut
that's not an ideal situation because it does not make the database structure very flexible for
controlling access to storage for different users, putting the database on different disk drives, or
backing up and restoring just part of the database.
You must have at least one database file but usually, more than one files are used. In terms of
accessing and using the data in the tables and other objects, the number (or location) of the files
is immaterial.
The database files are fixed in size and never grow bigger than the size at which they were
created
Control Files
The control files and redo logs support the rest of the architecture. Any database must have at
least one control file, although you typically have more than one to guard against loss. The
control file records the name of the database, the date and time it was created, the location of the
database and redo logs, and the synchronization information to ensure that all three sets of files
are always in step. Every time you add a new database or redo log file to the database, the
information is recorded in the control files.
Redo Logs
Any database must have at least two redo logs. These are the journals for the database; the redo
logs record all changes to the user objects or system objects. If any type of failure occurs, the
changes recorded in the redo logs can be used to bring the database to a consistent state without
losing any committed transactions. In the case of non-data loss failure, Oracle can apply the
information in the redo logs automatically without intervention from the DBA.
The redo log files are fixed in size and never grow dynamically from the size at which they were
created.
83. What is Oracle Block? Can two Oracle Blocks have the same address?
Oracle "formats" the database files into a number of Oracle blocks when they are first
createdmaking it easier for the RDBMS software to manage the files and easier to read data
into the memory areas.
The block size should be a multiple of the operating system block size. Regardless of the block
size, the entire block is not available for holding data; Oracle takes up some space to manage the
contents of the block. This block header has a minimum size, but it can grow.
These Oracle blocks are the smallest unit of storage. Increasing the Oracle block size can
improve performance, but it should be done only when the database is first created.
Each Oracle block is numbered sequentially for each database file starting at 1. Two blocks can
have the same block address if they are in different database files.
85. Name two utilities that Oracle provides, which are use for backup and recovery.
Along with the RDBMS software, Oracle provides two utilities that you can use to back up and
restore the database. These utilities are Export and Import.
The Export utility dumps the definitions and data for the specified part of the database to an
operating system binary file. The Import utility reads the file produced by an export, recreates the
definitions of objects, and inserts the data
If Export and Import are used as a means of backing up and recovering the database, all the
changes made to the database cannot be recovered since the export was performed. The best
you can do is recover the database to the time when the export was last performed.
86. What are stored-procedures? And what are the advantages of using them.
Stored procedures are database objects that perform a user defined operation. A stored
procedure can have a set of compound SQL statements. A stored procedure executes the SQL
commands and returns the result to the client. Stored procedures are used to reduce network
traffic.
87. How are exceptions handled in PL/SQL? Give some of the internal exceptions' name
PL/SQL exception handling is a mechanism for dealing with run-time errors encountered during
procedure execution. Use of this mechanism enables execution to continue if the error is not
severe enough to cause procedure termination.
The exception handler must be defined within a subprogram specification. Errors cause the
program to raise an exception with a transfer of control to the exception-handler block. After the
exception handler executes, control returns to the block in which the handler was defined. If there
are no more executable statements in the block, control returns to the caller.
User-Defined Exceptions
PL/SQL enables the user to define exception handlers in the declarations area of subprogram
specifications. User accomplishes this by naming an exception as in the following example:
ot_failure EXCEPTION;
In this case, the exception name is ot_failure. Code associated with this handler is written in the
EXCEPTION specification area as follows:
EXCEPTION
when OT_FAILURE then
out_status_code := g_out_status_code;
out_msg := g_out_msg;
The following is an example of a subprogram exception:
EXCEPTION
when NO_DATA_FOUND then
g_out_status_code := 'FAIL';
RAISE ot_failure;
Within this exception is the RAISE statement that transfers control back to the ot_failure
exception handler. This technique of raising the exception is used to invoke all user-defined
exceptions.
System-Defined Exceptions
Exceptions internal to PL/SQL are raised automatically upon error. NO_DATA_FOUND is a
system-defined exception. Table below gives a complete list of internal exceptions.
In addition to this list of exceptions, there is a catch-all exception named OTHERS that traps all
errors for which specific error handling has not been established.
:: Freshersworld.com
1 of 6
...
Interview
http://freshersworld.com/interview/gdtips.htm
Many companies conduct group discussion after the written test so as to check
on your interactive skills and how good you are at communicating with other
people. The GD is to check how you behave, participate and contribute in a
group, how much importance do you give to the group objective as well as your
own, how well do you listen to viewpoints of others and how open-minded are
you in accepting views contrary to your own. The aspects which make up a GD
are verbal communication, non-verbal behaviour, conformation to norms,
decision-making ability and cooperation. You should try to be as true as possible
to these aspects.
1. In a group discussion what should my objectives be and how should I
achieve them?
2. Is it wise to take a strong stand either in favor or against the topic right at the
start of a Group Discussion ?
3. Is it a good strategy to try and be the first speaker on the topic in a GD?
4. In an interview how does one handle the question "Tell us about yourself?".
5. Is it better to have a longer selection interview or a shorter one?
6. In the MBA entrance interview how do I justify my decision to pursue the
MBA programme?
In a group discussion what should my objectives be and how should I achieve
them? In order to succeed at any unstructured group discussion, you must
define what your objective in the group is. A good definition of your objective is
- to be seen to have contributed meaningfully in an attempt to achieve the right
consensus.
The key words in this definition are 'seen', 'meaningfully', and 'attempt'. Let us
understand what each of these imply in terms of action points : The first
implication is that merely making a meaningful contribution in an attempt to
achieve consensus is not enough. You have to be seen by the evaluator to have
made a meaningful contribution in n attempt to build the right consensus.
In other words you must ensure that you are heard by the group. If the group
hears you so will the evaluator. You must get at least some airtime. If you are
not a very assertive person you will have to simply learn to be assertive for those
15 minutes. If you get cowed down easily in an aggressive group, you can say
goodbye to the business school admission.
8/22/2007 11:36 PM
:: Freshersworld.com
2 of 6
...
http://freshersworld.com/interview/gdtips.htm
Many GD participants often complain that they did not get a chance to speak.
The fact of the matter is that in no GD do you get a chance to speak. You have
to make your chances.
The second important implication is that making just any sort of contribution is
not enough. Your contribution has to be meaningful. A meaningful contribution
suggests that you have a good knowledge base, are able to structure arguments
logically and are a good communicator. These are qualities that are desired by
all evaluators.
Many GD participants feel that the way to succeed in a GD is by speaking
frequently, for a long time and loudly. This is not true. The quality of what you
say is more important than the quantity. Don't be demoralized if you feel you
have not spoken enough. If you have spoken sense and have been heard, even
if only for a short time, it is usually good enough. You must have substance in
your arguments.
Therefore, think things through carefully. Always enter the room with a piece
of paper and a pen. In the first two minutes jot down as many ideas as you can. It
pays to think laterally. Everybody else will state the obvious. Can you state
something different? Can you take the group ahead if it is stuck at one point?
Can you take it in a fresh and more relevant direction? You may like to dissect
the topic and go into the underlying causes or into the results.
One way of deciding what sort of contribution is meaningful at what point of
time is to follow two simple rules. First, in times of chaos a person who restores
order to the group is appreciated. Your level of participation in a fish market kind
of scenario can be low, but your degree of influence must never be low. In
other words you must make positive contributions every time you speak and not
speak for the sake of speaking. The second rule is applicable when the group is
floundering. In this situation a person who provides a fresh direction to the group
is given credit.
The third implication is that you must be clearly seen to be attempting to build
a consensus. Nobody expects a group of ten people, all with different points of
view on a controversial subject to actually achieve a consensus. But did you
make the attempt to build a consensus?
8/22/2007 11:36 PM
:: Freshersworld.com
3 of 6
...
http://freshersworld.com/interview/gdtips.htm
Try and lay down the boundaries or the area of the discussion at the beginning.
Discuss what the group should discuss before actually beginning your
discussion. This will at least ensure that everyone is talking about the same thing.
Try and summarize the discussion at the end. In the summary do not merely
restate your point of view; also accommodate dissenting viewpoints. If the
group did not reach a consensus, say so in your summary.
You must carry people with you. So do not get emotional, shout, invade other
people's private space.
Do not bang your fist on the table except in extreme
circumstances.
If you have spoken and you notice that someone else has tried to enter the
discussion on a number of occasions and has not had the chance to do so
maybe you could give him a chance the next time he tries. But do not offer a
chance to anyone who is not trying to speak. He may not have anything to say at
that point and you will just end up looking foolish.
The surest way of antagonizing others in the GD as well as the examiner is to
appoint yourself as a de facto chairperson of the group. Do not try to impose a
system whereby everyone gets a chance to speak in turn. A GD is meant to be a
free flowing discussion.
Let it proceed naturally. Do not ever try to take a vote on the topic. A vote is no
substitute for discussion.
Do not address only one or two persons when speaking. Maintain eye contact
with as many members of the group as possible. This will involve others in what
you are saying and increase your chances of carrying them with you. Do this
even if you are answering a specific point raised by one person. One last point.
You must not agree with another participant in the group merely for the sake of
achieving consensus. If you disagree, say so. You are not there to attempt to
build just any consensus. You have to attempt to build the right consensus.
Is it wise to take a strong stand either in favour or against the topic right at the
start of a Group Discussion ?
In theory yes. If you believe something why shouldn't you say so? If we are
convinced about something our natural response is to say so emphatically.
However in practice what is likely to happen if you take a very strong and
dogged stance right at the beginning of the interview is that you will
antagonize the people in the group who disagree with you and will be unable to
carry them with you and convince them of the validity of your argument. We
therefore recommend that after you hear the topic you think about it for a
minute with an open mind and note down the major issues that come to your
mind. Don't jump to any conclusions.
Instead arrive at a stand in your own mind after examining all the issues in a
balanced manner. Only then begin to speak. And when you do so outline the
major issues first and only then state your stand. In other words give the
justification first and the stand later. If you were to state your stand first chances
are that the others in the group who disagree with your stand will interrupt to
contradict you before you can elaborate on the reasons why you have taken that
8/22/2007 11:36 PM
:: Freshersworld.com
4 of 6
...
http://freshersworld.com/interview/gdtips.htm
stance. In this situation the evaluator will only get an impression of what you
think and not how you think. Remember you are being evaluated on how you
think and not what you think.
Is it a good strategy to try and be the first speaker on the topic in a GD?
In most GD's the opening speaker is the person who is likely to get the
maximum uninterrupted airtime. The reason is simple - at the start most other
participants in the GD are still trying to understand the basic issues in the topic,
or are too nervous to speak and are waiting for someone else to start. Therefore
the evaluators get the best chance to observe the opening speaker.
Now this is a double edged sword. If the opening speaker talks sense naturally he
will get credit because he opened and took the group in the right direction. If on
the other hand the first speaker doesn't have too much sense to say, he will
attract the undivided attention of the evaluators to his shortcomings. He will be
marked as a person who speaks without thinking merely for the sake of speaking.
As someone who leads the group in the wrong direction and does not make a
positive contribution to the group.
So remember speaking first is a high risk high return strategy. It can make or
mar your GD performance depending how you handle it. Speak first only if you
have something sensible to say. Otherwise keep shut and let someone else start.
In an interview how does one handle the question "Tell us about yourself?".
An often asked opening question. Perhaps the most frequently asked question
across interviews. Your opening statement needs to be a summary of your goals,
overall professional capabilities, achievements, background (educational and
family), strengths, professional objectives and anything about your personality
that is relevant and interesting. This question represents an opportunity to lead
the interviewer in the direction you want him to go e.g., your speciality or
whatever else you may wish to highlight.
Your intention should be to try to subtly convince the interviewers that you are
a good candidate, you have proved that in the past, and have a personality that
fits the requirement. Remember that the first impression you create will go a long
way in the ultimate selection. Keep in mind, most candidates who are asked this
question just blurt out their schooling, college, marks and qualifications. All
this is already there in the CV.
Why tell the interviewer something he already knows?
A final word on approaching this question. Once you have said what you have to
say - shut up. Don't drone on for the sake of speaking for you just might say
something foolish. Sometimes interviewers don't interrupt in order to give the
candidate the impression that he has not spoken enough. This is just a stress
inducing tactic. Don't fall for it, if you feel you have spoken enough. In case the
pause gets too awkward for you just add something like,
"Is there something specific that you wish to know about me?"
Is it better to have a longer selection interview or a shorter one?
8/22/2007 11:36 PM
:: Freshersworld.com
5 of 6
...
http://freshersworld.com/interview/gdtips.htm
Career Objectives : You could talk about your career objectives and how the
two year MBA programme will help you achieve them. This implies that you
have a clear idea of what your career objectives are and how you wish to achieve
them. For example you may want to be an entrepreneur and wish to set up your
independent enterprise after doing your MBA and then working for a few years
in a professionally managed company. You could explain to the panel that the
MBA programme will provide you with the necessary inputs to help you run
your business enterprise better. But then you must be clear about what the inputs
you will receive in the MBA programme are.
Value Addition : That brings us to the second area that your answer should
touch upon. What is the value you will add to yourself during your tw o year
study of management. Value addition will essentially be in two forms knowledge
and skills. Knowledge of the various areas of management e.g. marketing,
finance, systems, HRD etc. and skills of analysis and communication. You will
find it useful to talk to a few people who are either doing their MBA or have
already done it. They will be able to give you a more detailed idea of what they
gained from their MBA.
Background : Remember, there must be no inconsistency between your
proposed study of management and your past subject of study or your past work
experience. If you have studied commerce in college then management is a
natural course of higher studies. If you are an engineer this is a tricky area. You
8/22/2007 11:36 PM
:: Freshersworld.com
6 of 6
...
http://freshersworld.com/interview/gdtips.htm
must never say that by pursuing a career in management you will be wasting
your engineering degree. Try and say that the MBA course and your engineering
degree will help you do your job better in the company that you will join. But
then you should be able to justify how your engineering qualification will help.
Opportunities and Rewards : You could also at this stage mention the
opportunities that are opening up in organizations for management graduates.
Highlight with examples. At the end you may mention that while monetary
rewards are not everything they are also important and MBAs do get paid well.
You must not mention these reasons as your primary motivators even if that may
be the case.
General Tips
A good level of general awareness will come in handy so that you aren't at
a loss of words on certain issues.
Understand the topic and analyse it mentally before speaking.
Be clear about the purpose and content of your viewpoint.
One should be able to communicate his views in an effective manner to
everyone. Be clear in speech, audible but not too loud and above all remain
confident.
Remember the six C's of effective communication -- Clarity,
Completeness, Conciseness, Confidence, Correctness and Courtesy.
You should mantain eye contact with all others in the group and not focus
on a particular person for he may benefit from that.
Be responsive to ideas from other people and seem to be very receptive
and open-minded but don't allow others to change your own viewpoint..
Starting the discussion is considered to be good however it isn't that
important; what is important is that you speak for a period long enough for
you to be able to communicate your viewpoint .
Always mantain your calm and never get aggresive. If you haven't been
able to talk then one can cut in saying "Excuse me, but what I think is
.........." or something of that sort.
Never lose your temper and never attack anyone on a personal front. Your
attitude should be one of cooperation and not one of conflict.
Don't lose sight of the goal of the discussion.
Listen to any criticisms and give them a thought before trying to defend
your views.
8/22/2007 11:36 PM
:: Freshersworld.com
1 of 2
...
Interview
http://www.freshersworld.com/interview/toptips.htm
Great interviews arise from careful groundwork. You can ace your next
interview if you:
1. Enter into a state of relaxed concentration. This is the state from which great
2.
3.
4.
5.
6.
7.
8/22/2007 11:40 PM
:: Freshersworld.com
2 of 2
...
http://www.freshersworld.com/interview/toptips.htm
8/22/2007 11:40 PM
37. Does mentioning the array name gives the base address in all the contexts?
38. Explain one method to process an entire string as one unit?
39. What is the similarity between a Structure, Union and enumeration?
40. Can a Structure contain a Pointer to itself?
41. How can we check whether the contents of two structure variables are same or
not?
42. How are Structure passing and returning implemented by the complier?
43. How can we read/write Structures from/to data files?
44. What is the difference between an enumeration and a set of pre-processor #
defines?
45. what do the 'c' and 'v' in argc and argv stand for?
46. Are the variables argc and argv are local to main?
47. What is the maximum combined length of command line arguments including the
space between adjacent arguments?
48. If we want that any wildcard characters in the command line arguments should be
appropriately expanded, are we required to make any special provision? If yes,
which?
49. Does there exist any way to make the command line arguments available to other
functions without passing them as arguments to the function?
50. What are bit fields? What is the use of bit fields in a Structure declaration?
51. To which numbering system can the binary number 1101100100111100 be easily
converted to?
52. Which bit wise operator is suitable for checking whether a particular bit is on or
off?
53. Which bit wise operator is suitable for turning off a particular bit in a number?
54. Which bit wise operator is suitable for putting on a particular bit in a number?
55. Which bit wise operator is suitable for checking whether a particular bit is on or
off?
56. which one is equivalent to multiplying by 2:Left shifting a number by 1 or Left
shifting an unsigned int or char by 1?
57. Write a program to compare two strings without using the strcmp() function.
58. Write a program to concatenate two strings.
59. Write a program to interchange 2 variables without using the third one.
60. Write programs for String Reversal & Palindrome check
61. Write a program to find the Factorial of a number
62. Write a program to generate the Fibinocci Series
63. Write a program which employs Recursion
64. Write a program which uses Command Line Arguments
65. Write a program which uses functions like strcmp(), strcpy()? etc
66. What are the advantages of using typedef in a program?
67. How would you dynamically allocate a one-dimensional and two-dimensional
array of integers?
68. How can you increase the size of a dynamically allocated array?
69. How can you increase the size of a statically allocated array?
70. When reallocating memory if any other pointers point into the same piece of
memory do you have to readjust these other pointers or do they get readjusted
automatically?
71. Which function should be used to free the memory allocated by calloc()?
72. How much maximum can you allocate in a single call to malloc()?
73. Can you dynamically allocate arrays in expanded memory?
74. What is object file? How can you access object file?
75. Which header file should you include if you are to develop a function which can
accept variable number of arguments?
76. Can you write a function similar to printf()?
77. How can a called function determine the number of arguments that have been
passed to it?
78. Can there be at least some solution to determine the number of arguments passed
to a variable argument list function?
79. How do you declare the following:
o An array of three pointers to chars
o An array of three char pointers
o A pointer to array of three chars
o A pointer to function which receives an int pointer and returns a float
pointer
o A pointer to a function which receives nothing and returns nothing
80. What do the functions atoi(), itoa() and gcvt() do?
81. Does there exist any other function which can be used to convert an integer or a
float to a string?
82. How would you use qsort() function to sort an array of structures?
83. How would you use qsort() function to sort the name stored in an array of pointers
to string?
84. How would you use bsearch() function to search a name stored in array of
pointers to string?
85. How would you use the functions sin(), pow(), sqrt()?
86. How would you use the functions memcpy(), memset(), memmove()?
87. How would you use the functions fseek(), freed(), fwrite() and ftell()?
88. How would you obtain the current time and difference between two times?
89. How would you use the functions randomize() and random()?
90. How would you implement a substr() function that extracts a sub string from a
given string?
91. What is the difference between the functions rand(), random(), srand() and
randomize()?
92. What is the difference between the functions memmove() and memcpy()?
93. How do you print a string on the printer?
94. Can you use the function fprintf() to display the output on the screen?
C++ Questions
1. What is a class?
2. What is an object?
How do you write a program which produces its own source code as its output?
How can I find the day of the week given the date?
Why doesn't C have nested functions?
What is the most efficient way to count the number of bits which are set in a value?
How can I convert integers to binary or hexadecimal?
How can I call a function, given its name as a string?
How do I access command-line arguments?
How can I return multiple values from a function?
How can I invoke another program from within a C program?
How can I access memory located at a certain address?
How can I allocate arrays or structures bigger than 64K?
How can I find out how much memory is available?
How can I read a directory in a C program?
How can I increase the allowable number of simultaneously open files?
What's wrong with the call "fopen("c:\newdir\file.dat", "r")"?
What is the output of printf("%d")
What will happen if I say delete this
Difference between "C structure" and "C++ structure".
Diffrence between a "assignment operator" and a "copy constructor"
What is the difference between "overloading" and "overridding"?
Explain the need for "Virtual Destructor".
Can we have "Virtual Constructors"?
What are the different types of polymorphism?
What are Virtual Functions? How to implement virtual functions in "C"
What are the different types of Storage classes?
What is Namespace?
What are the types of STL containers?.
Difference between "vector" and "array"?
How to write a program such that it will delete itself after exectution?
Can we generate a C++ source code from the binary file?
What are inline functions?
Talk sometiming about profiling?
How many lines of code you have written for a single program?
What is "strstream" ?
How to write Multithreaded applications using C++?
Explain "passing by value", "passing by pointer" and "passing by reference"
Write any small program that will compile in "C" but not in "C++"
Have you heard of "mutable" keyword?
What is a "RTTI"?
Is there something that I can do in C and not in C++?
Why preincrement operator is faster than postincrement?
What is the difference between "calloc" and "malloc"?
What will happen if I allocate memory using "new" and free it using "free" or allocate sing
"calloc" and free it using "delete"?
What is Memory Alignment?
Explain working of printf.
Difference between "printf" and "sprintf".
What is "map" in STL?
When shall I use Multiple Inheritance?
What are the techniques you use for debugging?
How to reduce a final size of executable?
Give 2 examples of a code optimization.
What is inheritance?
Does mentioning the array name gives the base address in all the contexts?
Explain one method to process an entire string as one unit?
What is the similarity between a Structure, Union and enumeration?
Can a Structure contain a Pointer to itself?
How can we check whether the contents of two structure variables are same or not?
How are Structure passing and returning implemented by the complier?
How can we read/write Structures from/to data files?
What is the difference between an enumeration and a set of pre-processor # defines?
what do the 'c' and 'v' in argc and argv stand for?
Are the variables argc and argv are local to main?
What is the maximum combined length of command line arguments including the space between
adjacent arguments?
If we want that any wildcard characters in the command line arguments should be appropriately
expanded, are we required to make any special provision? If yes, which?
Does there exist any way to make the command line arguments available to other functions
without passing them as arguments to the function?
What are bit fields? What is the use of bit fields in a Structure declaration?
To which numbering system can the binary number 1101100100111100 be easily converted to?
Which bit wise operator is suitable for checking whether a particular bit is on or off?
Which bit wise operator is suitable for turning off a particular bit in a number?
Which bit wise operator is suitable for putting on a particular bit in a number?
Which bit wise operator is suitable for checking whether a particular bit is on or off?
which one is equivalent to multiplying by 2:Left shifting a number by 1 or Left shifting an
unsigned int or char by 1?
Write a program to compare two strings without using the strcmp() function.
Write a program to concatenate two strings.
Write a program to interchange 2 variables without using the third one.
Write programs for String Reversal & Palindrome check
Write a program to find the Factorial of a number
Write a program to generate the Fibinocci Series
Write a program which employs Recursion
Write a program which uses Command Line Arguments
Write a program which uses functions like strcmp(), strcpy()? etc
What are the advantages of using typedef in a program?
How would you dynamically allocate a one-dimensional and two-dimensional array of integers?
How can you increase the size of a dynamically allocated array?
How can you increase the size of a statically allocated array?
When reallocating memory if any other pointers point into the same piece of memory do you have
to readjust these other pointers or do they get readjusted automatically?
Which function should be used to free the memory allocated by calloc()?
How much maximum can you allocate in a single call to malloc()?
Can you dynamically allocate arrays in expanded memory?
What is object file? How can you access object file?
Which header file should you include if you are to develop a function which can accept variable
number of arguments?
Can you write a function similar to printf()?
How can a called function determine the number of arguments that have been passed to it?
Can there be at least some solution to determine the number of arguments passed to a variable
argument list function?
How do you declare the following:
An array of three pointers to chars
An array of three char pointers
A pointer to array of three chars
A pointer to function which receives an int pointer and returns a float pointer
A pointer to a function which receives nothing and returns nothing
What do the functions atoi(), itoa() and gcvt() do?
Does there exist any other function which can be used to convert an integer or a float to a string?
How would you use qsort() function to sort an array of structures?
How would you use qsort() function to sort the name stored in an array of pointers to string?
How would you use bsearch() function to search a name stored in array of pointers to string?
How would you use the functions sin(), pow(), sqrt()?
How would you use the functions memcpy(), memset(), memmove()?
How would you use the functions fseek(), freed(), fwrite() and ftell()?
How would you obtain the current time and difference between two times?
How would you use the functions randomize() and random()?
How would you implement a substr() function that extracts a sub string from a given string?
What is the difference between the functions rand(), random(), srand() and randomize()?
What is the difference between the functions memmove() and memcpy()?
How do you print a string on the printer?
Can you use the function fprintf() to display the output on the screen?
What is an object?
What is the difference between an object and a class?
What is the difference between class and structure?
What is public, protected, private?
What are virtual functions?
What is friend function?
What is a scope resolution operator?
What do you mean by inheritance?
What is abstraction?
What is polymorphism? Explain with an example.
What is encapsulation?
What do you mean by binding of data and functions?
What is function overloading and operator overloading?
What is virtual class and friend class?
What do you mean by inline function?
What do you mean by public, private, protected and friendly?
When is an object created and what is its lifetime?
What do you mean by multiple inheritance and multilevel inheritance? Differentiate between
them.
Difference between realloc() and free?
What is a template?
What are the main differences between procedure oriented languages and object oriented
languages?
What is R T T I ?
What are generic functions and generic classes?
What is namespace?
What is the difference between pass by reference and pass by value?
Why do we use virtual functions?
What do you mean by pure virtual functions?
What are virtual classes?
Does c++ support multilevel and multiple inheritance?
What are the advantages of inheritance?
When is a memory allocated to a class?
What is the difference between declaration and definition?
What is virtual constructors/destructors?
In c++ there is only virtual destructors, no constructors. Why?
What is late bound function call and early bound function call? Differentiate.
How is exception handling carried out in c++?
When will a constructor executed?
What is Dynamic Polymorphism?
Write a macro for swapping integers.
12. Implement D flip-flop with a couple of latches? Write a VHDL Code for a D flipflop?
13. What is latchup? Explain the methods used to prevent it?
14. What is charge sharing?
15. While using logic design, explain the various steps that r followed to obtain the
desirable design in a well defined manner?
16. Why is OOPS called OOPS? (C++)
17. What is a linked list? Explain the 2 fields in a linked list?
18. Implement a 2 I/P and gate using Tran gates?
19. Insights of a 4bit adder/Sub Circuit?
20. For f = AB+CD if B is S-a-1, what r the test vectors needed to detect the fault?
21. Explain various adders and diff between them?
22. Explain the working of 4-bit Up/down Counter?
23. A circuit has 1 input X and 2 outputs A and B. If X = HIGH for 4 clock ticks, A =
1. If X = LOW for 4 clock ticks, B = 1. Draw a state diagram for this Spec?
24. Advantages and disadvantages of Mealy and Moore?
25. Id vs. Vds Characteristics of NMOS and PMOS transistors?
26. Explain the operation of a 6T-SRAM cell?
27. Differences between DRAM and SRAM?
28. Implement a function with both ratioed and domino logic and merits and demerits
of each logic?
29. Given a circuit and asked to tell the output voltages of that circuit?
30. How can you construct both PMOS and NMOS on a single substrate?
31. What happens when the gate oxide is very thin?
32. What is setup time and hold time?
33. Write a pseudo code for sorting the numbers in an array?
34. What is pipelining and how can we increase throughput using pipelining?
35. Explain about stuck at fault models, scan design, BIST and IDDQ testing?
36. What is SPICE?
37. Differences between IRSIM and SPICE?
38. Differences between netlist of HSPICE and Spectre?
39. What is FPGA?
40. Draw the Cross Section of an Inverter? Clearly show all the connections between
M1 and poly, M1 and diffusion layers etc?
41. Draw the Layout of an Inverter?
42. If the current thru the poly is 20nA and the contact can take a max current of
10nA how would u overcome the problem?
43. Implement F = AB+C using CMOS gates?
44. Working of a 2-stage OPAMP?
45. 6-T XOR gate?
46. Differences between blocking and Non-blocking statements in Verilog?
47. Differences between Signals and Variables in VHDL? If the same code is written
using Signals and Variables what does it synthesize to?
48. Differences between functions and Procedures in VHDL?
49. What is component binding?
50. What is polymorphism? (C++)
86. Describe a finite state machine that will detect three consecutive coin tosses (of
one coin) that results in heads.
87. In what cases do you need to double clock a signal before presenting it to a
synchronous state machine?
88. You have a driver that drives a long signal & connects to an input device. At the
input device there is either overshoot, undershoot or signal threshold violations,
what can be done to correct this problem?
89. What are the total number of lines written by you in C/C++? What is the most
complicated/valuable program written in C/C++?
90. What compiler was used?
91. What is the difference between = and == in C?
92. Are you familiar with VHDL and/or Verilog?
93. What types of CMOS memories have you designed? What were their size?
Speed?
94. What work have you done on full chip Clock and Power distribution? What
process technology and budgets were used?
95. What types of I/O have you designed? What were their size? Speed?
Configuration? Voltage requirements?
96. Process technology? What package was used and how did you model the
package/system? What parasitic effects were considered?
97. What types of high speed CMOS circuits have you designed?
98. What transistor level design tools are you proficient with? What types of designs
were they used on?
99. What products have you designed which have entered high volume production?
100.
What was your role in the silicon evaluation/product ramp? What tools did
you use?
101.
If not into production, how far did you follow the design and why did not
you see it into production?
102.
What types of CMOS memories have you designed? What were their size?
Speed? Configuration Process technology?
103.
What work have you done on full chip Clock and Power distribution?
What process technology and budgets were used?
104.
What types of I/O have you designed? What were their size? Speed?
Configuration? Voltage requirements? Process technology? What package was
used and how did you model the package/system? What parasitic effects were
considered?
105.
What types of high speed CMOS circuits have you designed?
106.
What transistor level design tools are you proficient with? What types of
designs were they used on?
107.
What products have you designed which have entered high volume
production?
108.
What was your role in the silicon evaluation/product ramp? What tools did
you use?
109.
If not into production, how far did you follow the design and why did not
you see it into production?
24. What was your role in the silicon evaluation/product ramp? What tools did you
use?
25. If not into production, how far did you follow the design and why did not you see
it into production?
What is MUTEX ?
What isthe difference between a 'thread' and a 'process'?
What is INODE?
Explain the working of Virtual Memory.
How does Windows NT supports Multitasking?
Explain the Unix Kernel.
What is Concurrency? Expain with example Deadlock and Starvation.
What are your solution strategies for "Dining Philosophers Problem" ?
Explain Memory Partitioning, Paging, Segmentation.
Explain Scheduling.
Operating System Security.
What is Semaphore?
Explain the following file systems : NTFS, Macintosh(HPFS), FAT .
What are the different process states?
What is Marshalling?
Define and explain COM?
What is Marshalling?
Difference - Loading and Linking ?
What are the basic functions of an operating system?
Explain briefly about, processor, assembler, compiler, loader, linker and the
functions executed by them.
What are the difference phases of software development? Explain briefly?
Differentiate between RAM and ROM?
What is DRAM? In which form does it store data?
What is cache memory?
What is hard disk and what is its purpose?
Differentiate between Complier and Interpreter?
What are the different tasks of Lexical analysis?
What are the different functions of Syntax phase, Sheduler?
What are the main difference between Micro-Controller and Micro- Processor?
Describe different job scheduling in operating systems.
What is a Real-Time System ?
What is the difference between Hard and Soft real-time systems ?
What is a mission critical system ?
What is the important aspect of a real-time system ?
If two processes which shares same system memory and system clock in a
distributed system, What is it called?
What is the state of the processor, when a process is waiting for some event to
occur?
What do you mean by deadlock?
131.
What is the difference between panel and frame ?
132.
What is the default layout of the panel and frame ?
133.
What is meant by controls and types ?
134.
What is the difference between a scroll bar and a scroll panel.
135.
What is the difference between list and choice ?
136.
How to place a component on Windows ?
137.
What are the different types of Layouts ?
138.
What is meant by CardLayout ?
139.
What is the difference between GridLayout and GridBagLayout
140.
What is the difference between menuitem and checkboxmenu item.
141. What is meant by vector class, dictionary class , hash table class,and property class ?
142.
Which class has no duplicate elements ?
143.
What is resource bundle ?
144.
What is an enumeration class ?
145.
What is meant by Swing ?
146.
What is the difference between AWT and Swing ?
147.
What is the difference between an applet and a Japplet
148.
What are all the components used in Swing ?
149.
What is meant by tab pans ?
150.
What is the use of JTree ?
151.
How can you add and remove nodes in Jtree.
152.
What is the method to expand and collapse nodes in a Jtree
153.
What is the use of JTable ?
154.
What is meant by JFC ?
155.
What is the class in Swing to change the appearance of the Frame in
Runtime.
156.
How to reduce flicking in animation ?
157.
What is meant by Javabeans ?
158.
What is JAR file ?
159.
What is meant by manifest files ?
160.
What is Introspection ?
161.
What are the steps involved to create a bean ?
162.
Say any two properties in Beans ?
163.
What is persistence ?
164.
What is the use of beaninfo ?
165.
What are the interfaces you used in Beans ?
166.
What are the classes you used in Beans ?
167.
What is the diffrence between an Abstract class and Interface
168.
What is user defined exception ?
169.
What do you know about the garbate collector ?
170.
What is the difference between C++ & Java ?
171.
How do you communicate in between Applets & Servlets ?
172.
What is the use of Servlets ?
173.
In an HTML form I have a Button which makes us to open another page in
15 seconds. How will do you that ?
174.
What is the difference between Process and Threads ?
175.
How will you initialize an Applet ?
176.
What is the order of method invocation in an Applet ?
177.
When is update method called ?
178.
How will you communicate between two Applets ?
179.
Have you ever used HashTable and Dictionary ?
180.
What are statements in JAVA ?
181.
What is JAR file ?
182.
What is JNI ?
183.
What is the base class for all swing components ?
184.
What is JFC ?
185.
What is Difference between AWT and Swing ?
186.
Considering notepad/IE or any other thing as process, What will Happen if
you start notepad or IE 3 times? Where 3 processes are started or 3 threads are
started ?
187.
How does thread synchronization occurs inside a monitor ?
188.
How will you call an Applet using a Java Script function ?
189.
Is there any tag in HTML to upload and download files ?
190.
Why do you Canvas ?
191.
How can you push data from an Applet to Servlet ?
192.
What are the benefits of Swing over AWT ?
193.
Where the CardLayout is used ?
194.
What is the Layout for ToolBar ?
195.
What is the difference between Grid and GridbagLayout ?
196.
How will you add panel to a Frame ?
197.
What is the corresponding Layout for Card in Swing ?
198.
What is light weight component ?
199.
What is bean ? Where it can be used ?
200.
What is difference in between Java Class and Bean ?
201.
What is the mapping mechanism used by Java to identify IDL language ?
202.
Diff between Application and Applet ?
203.
What is serializable Interface ?
204.
What is the difference between CGI and Servlet ?
205.
What is the use of Interface ?
206.
Why Java is not fully objective oriented ?
207.
Why does not support multiple Inheritance ?
208.
What it the root class for all Java classes ?
209.
What is polymorphism ?
210.
Suppose If we have variable ' I ' in run method, If I can create one or
More thread each thread will occupy a separate copy or same variable will be
shared ?
211.
What is Constructor and Virtual function? Can we call Virtual
212.
Funciton in a constructor ?
213.
Why we use OOPS concepts? What is its advantage ?
214.
What is the difference in between C++ and Java ? can u explain in detail?
215.
What is the exact difference in between Unicast and Multicast object ?
Where we will use ?
216.
How do you sing an Applet ?
217.
In a Container there are 5 components. I want to display the all the
components names, how will you do that one ?
218.
Why there are some null interface in java ? What does it mean ?
219.
Give me some null interfaces in JAVA ?
220.
Tell me the latest versions in JAVA related areas ?
221.
What is meant by class loader ? How many types are there? When will we
use them ?
222.
What is meant by flickering ?
223.
What is meant by cookies ? Explain ?
224.
Problem faced in your earlier project
225.
How OOPS concept is achieved in Java
226.
Features for using Java
227.
How does Java 2.0 differ from Java 1.0
228.
Public static void main - Explain
229.
What are command line arguments
230.
Explain about the three-tier model
231.
Difference between String & StringBuffer
232.
Wrapper class. Is String a Wrapper Class
233.
What are the restriction for static method Purpose of the file class
234.
Default modifier in Interface
235.
Difference between Interface & Abstract class
236.
Can abstract be declared as Final
237.
Can we declare variables inside a method as Final Variables
238.
What is the package concept and use of package
239.
How can a dead thread be started
240.
Difference between Applet & Application
241.
Life cycle of the Applet
242.
Can Applet have constructors
243.
Differeence between canvas class & graphics class
244.
Explain about Superclass & subclass
245.
What is AppletStub
246.
Explain Stream Tokenizer
247.
What is the difference between two types of threads
248.
Checked & Unchecked exception
249.
Use of throws exception
250.
What is finally in exception handling Vector class
251.
What will happen to the Exception object after exception handling
252.
Two types of multi-tasking
253.
Two ways to create the thread
254.
Synchronization
255.
I/O Filter
256.
Can applet in different page communicate with each other
257.
Why Java is not 100 % pure OOPS ? ( EcomServer )
258.
When we will use an Interface and Abstract class ?
259.
How to communicate 2 threads each other ?
260.
What is the difference between an Abstract class and Interface?
261.
What is user defined exception?
262.
What do you know about the garbage collector?
263.
What is the difference between java and c++?
264.
In an htm form I have a button which makes us to open another page in 15
seconds. How will you do that?
265.
What is the difference between process and threads?
266.
What is update method called?
267.
Have you ever used HashTable and Directory?
268.
What are statements in Java?
269.
What is a JAR file?
270.
What is JNI?
271.
What is the base class for all swing components?
272.
What is JFC?
273.
What is the difference between AWT and Swing?
274.
Considering notepad/IE or any other thing as process, What will happen if
you start notepad or IE 3 times ? Where three processes are started or three
threads are started?
275.
How does thread synchronization occur in a monitor?
276.
Is there any tag in htm to upload and download files?
277.
Why do you canvas?
278.
How can you know about drivers and database information ?
279.
What is serialization?
280.
Can you load the server object dynamically? If so what are the 3 major
steps involved in it?
281.
What is the layout for toolbar?
282.
What is the difference between Grid and Gridbaglayout?
283.
How will you add panel to a frame?
284.
Where are the card layouts used?
285.
What is the corresponding layout for card in swing?
286.
What is light weight component?
287.
Can you run the product development on all operating systems?
288.
What are the benefits if Swing over AWT?
289.
How can two threads be made to communicate with each other?
290.
What are the files generated after using IDL to java compiler?
291.
What is the protocol used by server and client?
292.
What is the functionability stubs and skeletons?
293.
What is the mapping mechanism used by java to identify IDL language?
294.
What is serializable interface?
295.
What is the use of interface?
296.
Why is java not fully objective oriented?
297.
Why does java not support multiple inheritance?
298.
What is the root class for all java classes?
299.
What is polymorphism?
300.
Suppose if we have a variable 'I' in run method, if I can create one or more
thread each thread will occupy a separate copy or same variable will be shared?
301.
What are virtual functions?
302.
Write down how will you create a Binary tree?
303.
What are the traverses in binary tree?
304.
Write a program for recursive traverse?
305.
What are session variable in servlets?
306.
What is client server computing?
307.
What is constructor and virtual function? Can we call a virtual function in
a constructor?
308.
Why do we use oops concepts? What is its advantage?
309.
What is middleware? What is the functionality of web server?
310.
Why is java not 100% pure oops?
311.
When will you use an interface and abstract class?
312.
What is the exact difference in between Unicast and Multicast object?
Where will it be used?
313.
What is the main functionality of the remote reference layer?
314.
How do you download stubs from Remote place?
315.
I want to store more than 10 objects in a remote server? Which
methodology will follow?
316.
What is the main functionality of Prepared Statement?
317.
What is meant by Static query and Dynamic query?
318.
What are Normalization Rules? Define Normalization?
319.
What is meant by Servelet? What are the parameters of service method?
320.
What is meant by Session? Explain something about HTTP Session Class?
321.
In a container there are 5 components. I want to display all the component
names, how will you do that?
322.
Why there are some null interface in JAVA? What does it mean? Give
some null interface in JAVA?
323.
Tell some latest versions in JAVA related areas?
324.
What is meant by class loader? How many types are there? When will we
use them?
325.
What is meant by flickering?
326.
What is meant by distributed application? Why are we using that in our
application?
327.
What is the functionality of the stub?
328.
Explain about version control?
329.
Explain 2-tier and 3-tier architecture?
330.
What is the role of Web Server?
331.
How can we do validation of the fields in a project?
332.
What is meant by cookies? Explain the main features?
333.
Why java is considered as platform independent?
334.
What are the advantages of java over C++?
335.
How java can be connected to a database?
336.
What is thread?
337.
What is difference between Process and Thread?
338.
Does java support multiple inheritance? if not, what is the solution?
339.
What are abstract classes?
340.
What is an interface?
341.
What is the difference abstract class and interface?
342.
What are adapter classes?
343.
what is meant wrapper classes?
344.
What are JVM.JRE, J2EE, JNI?
345.
What are swing components?
346.
What do you mean by light weight and heavy weight components?
347.
What is meant by function overloading and function overriding?
348.
Does java support function overloading, pointers, structures, unions or
linked lists?
349.
What do you mean by multithreading?
350.
What are byte codes?
351.
What are streams?
352.
What is user defined exception?
353.
In an htm page form I have one button which makes us to open a new page
in 15 seconds. How will you do that?
Advanced Java
1. What is RMI?
2. Explain about RMI Architecture?
3. What are Servelets?
4. What is the use of servlets?
5. Explain RMI Architecture?
6. How will you pass values from htm page to the servlet?
7. How do you load an image in a Servelet?
8. What is purpose of applet programming?
9. How will you communicate between two applets?
10. What IS the difference between Servelets and Applets?
11. How do you communicate in between Applets and Servlets?
12. What is the difference between applet and application?
13. What is the difference between CGI and Servlet?
14. In the servlets, we are having a web page that is invoking servlets ,username and
password? which is checks in database? Suppose the second page also if we want
to verify the same information whether it will connect to the database or it will be
used previous information?
15. What are the difference between RMI and Servelets?
16. How will you call an Applet using Java Script Function?
17. How can you push data from an Applet to a Servlet?
18. What are 4 drivers available in JDBC? At what situation are four of the drivers
used?
19. If you are truncated using JDBC , how can you that how much data is truncated?
20. How will you perform truncation using JDBC?
21. What is the latest version of JDBC? What are the new features added in that?
22. What is the difference between RMI registry and OS Agent?
23. To a server method, the client wants to send a value 20, with this value exceeds to
20 a message should be sent to the client . What will you do for achieving this?
24. How do you invoke a Servelet? What is the difference between doPost method
and doGet method?
25. What is difference between the HTTP Servelet and Generic Servelet? Explain
about their methods and parameters?
26. Can we use threads in Servelets?
27. Write a program on RMI and JDBC using Stored Procedure?
28. How do you swing an applet?
29. How will you pass parameters in RMI? Why do you serialize?
30. In RMI ,server object is first loaded into memory and then the stub reference is
sent to the client. true or false?
31. Suppose server object not loaded into the memory and the client request for it.
What will happen?
32. What is the web server used for running the servelets?
33. What is Servlet API used for connecting database?
34. What is bean? Where can it be used?
35. What is the difference between java class and bean?
36. Can we sent objects using Sockets?
37. What is the RMI and Socket?
38. What is CORBA?
39. Can you modify an object in CORBA?
40. What is RMI and what are the services in RMI?
41. What are the difference between RMI and CORBA?
42. How will you initialize an Applet?
43. What is the order of method invocation in an Applet?
44. What is ODBC and JDBC? How do you connect the Database?
45. What do you mean by Socket Programming?
46. What is difference between Generic Servlet and HTTP Servelet?
47. What you mean by COM and DCOM?
48. what is e-commerce?
User(s) are complaining of delays when using the network. What would you do?
What are some of the problems associated with operating a switched LAN?
Name some of the ways of combining TCP/IP traffic and SNA traffic over the
same link.
What sort of cabling is suitable for Fast Ethernet protocols?
What is a Class D IP address?
Why do I sometimes lose a server's address when using more than one server?
What is Firewall?
How do I monitor the activity of sockets?
How would I put my socket in non-blocking mode?
What are RAW sockets?
What is the role of TCP protocol and IP protocol.
What is UDP?
How can I make my server a daemon?
How should I choose a port number for my server?
Layers in TCP/IP
How can I be sure that a UDP message is received?
How to get IP header of a UDP message
Writing UDP/SOCK_DGRAM applications
How many bytes in an IPX network address?
What is the difference between MUTEX and Semaphore?
What is priority inversion?
Different Solutions to dining philosophers problem.
What is a message queue?
Questions on Shared Memory.
What is DHCP?
Working of ping, telnet, gopher.
Can I connect two computers to internet using same line ?
Why networks are layered ? What is the advantage of that ?
How many layers are there in OSI ? Why is it called OSI model ?
network topologies ?
Which are the different network toplogies ?
an example of bus type network.
What is the Bandwidth of ethernet ?
Explain the advantage and disadvantage of ethernet ?
Which is the protocol used in ethernet. (CSMA/CD) Why is it called so ?
What is the advantage of Ring network ?
Compare it with ethernet
1
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
www.Freshersworld.com
Tutorial Index :
Section 1. Introduction to Assembler and Assembly Language _________________ 3
Section 1.1. Generation of Language ________________________________________ 3
Section 1.2. Assembly Language and Assembler_______________________________ 3
Section 1.3. Introduction to 8086 CPU internal architecture_____________________ 4
Section 1.4. Memory segmentation__________________________________________ 4
10
12
13
13
14
15
15
15
16
18
18
18
18
19
20
2
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
Provided by
www.Freshersworld.com.com
First Job .. ! Dream Job .! Freshersworld.com
3
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
2.
Low level language, e.g. Machine Language & Assembly Language. Low level languages are
closely related to the internal architecture of the computer system. For each single action of the
computer, a corresponding program line must be written.
High level language, e.g. C, C++, COBOL, etc.
Machine language, or first-generation language, is a set of instructions that can be directly executed by
a computer system. Each instruction is composed of an operation code (OPCODE), and an operand which
defines the function that the computer must perform. They are written at the most basic level of the computer
operation, as a series of 1s and 0s. However, it is difficult to understand and time-consuming for programmers.
MAIN
CODE_SEG
SEGMENT
PROC
FAR
ASSUME
CS:CODE_SEG, DS:DATA_SEG
MOV AX, DATA_SEG
MOV DS, AX
MOV CX,0100h
MOV AH,2h
MOV DL,2Ah
MOV ABC,0Ah
INT
21h
MOV AH,4Ch
INT
21h
ENDP
ENDS
DATA_SEG
ABC
DATA_SEG
SEGMENT
DB
0Bh
ENDS
START:
END
MAIN
An assembler is a language translator used to convert assembly language into machine code.
Assembler accepts as input a program whose instructions are essentially in one to one correspondence with
those of machine language, with symbolic names used for operation codes and operands. It produces as output a
machine-language program in main storage for execution. It is not necessary to find the meaning or work done
in the assembly program. The purpose of the assembler is nothing but the translation.
1
8088 refers to the model of the processor used. For example, 80386, 80486, 80586 are the model of the processor. It is designed in late
1970s.
4
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
SI & DI (Source Index & Destination Index) are acted as pointers of a string.
Segment Registers
Figure 2 Register Segmentation
There are four special segment registers:
CS (Code Segment Registers) stores the starting address of the program instruction.
DS (Data Segment Registers) stores the starting address of the data segment.
SS (Stack Segment Registers) stores the starting address of the stack segment.
3.
Other Registers
There are two main types of other registers. One is instruction pointer (IP) and the other is the
status register. The instruction pointer contains the address of the currently executing instruction. A 16bit register provides a pointer into the current code segment.
The status register holds 16-bit information, which includes overflow register (O), sign
register (N), zero register (Z) & carry register (C).
15
14
13
12
O
11
10
N
7
Z
6
P
2
C
0
00000
00002
00004
FFFFC
FFFFE
CD
:
:
:
AB
00001
:
:
:
00003
00005
FFFFD
FFFFF
5
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
6
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
Address
0100:0001
CS
Segment Definition
All programs consist of one or more segments. Of course, while your programs is running, the segment
registers point at the currently active segments. Segment, in the assembly language source file, are defined with
the following instructions:
<Segment Name> segment (<align>) (<combine>) (<class>)
<code>
<Segment Name> ends
where
<Segment Name> is the segment name you designed,
<align> indicates the boundary on which the segment is to begin,
<combine> indicates whether to combine with other segments in linking,
<class> is used as identifier for the linker to combine various segments.
<align> ::= para | byte | page | word
where
para sets the segment starting address evenly divisible by 16 (10h)
byte sets the segment starting address on the next available byte
page sets the segment starting address on the next page (100h).
word sets the segment starting address on the next available word.
<combine> ::= STACK | PUBLIC | NONE
where
STACK defines stack segment only.
PUBLIC grouped the same class segment both physically and logically
NONE separated each segment with others logically.
<class> ::= <name>
It is used as an identifier for the linker to combine various code segments.
Segment Registers
When MS-DOS begins execution of your program, it initializes two segment registers. It points CS at
the code segment containing your main program and it points SS at your stack segment. From that point
forward, you are responsible for maintaining the segment registers yourself.
To access the data correctly in your program, you should copy the address from the actual data
segment to the data segment register, as shown below:
MOV
AX, DATA_SEG
MOV
DS, AX
Lets explain each term in the syntax of the segment.
Segment Names
*** Page 6 ***
7
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
The segment directive requires a label in the label field. This label is the segments name. The
assembler will use the segment name to obtain the address of a segment. You must also specify the segments
name in the label field of the ENDS directive that ends the segment.
Segments normally load into memory in the order that they appear in your source file. If you write the
code segment after the data segment, the data segment would load into memory before the code segment.
Align Type
The align parameter is one of the following words: byte, word, para, or page. These keywords instruct
the assembler, linker, and DOS to load the segment on a byte, word, paragraph or page boundary. The align
parameter is optional. If one of the above keywords does not appear as a parameter to the segment directive, the
default alignment is paragraph (16 bytes).
Aligning a segment on a byte boundary loads the segment into memory starting at the first available
byte after the last segment. Aligning on a word boundary will start the segment at the first byte with an even
address after the last segment.
Combine Type
The combine type controls the order of the segment. To specify the combine type you use one of the
keywords: PUBLIC, STACK or NONE. The PUBLIC and STACK combine types essentially perform the same
operation. They will combine all the segments with the same name, and join into a single contiguous segment.
The main difference between PUBLIC and STACK is that STACK is used in the stack segment while PUBLIC
is used in the code segment and data segment.
Class Type
The final operand to the segment directive is usually the class type. The class type specifies the
ordering of segments that do not have the same segment name. This operand consists of a symbol enclosed by
apostrophes . Generally, you should use the following names: CODE (for code segment), DATA (for data
segment) and STACK (for stack segment).
The following will be the typical three segments:
CODE_SEG
SEGMENT
PARA PUBLIC CODE
:
:
CODE_SEG
ENDS
DATA_SEG
SEGMENT
PARA PUBLIC DATA
:
:
DATA_SEG
ENDS
STACK_SEG
SEGMENT
PARA STACK STACK
DW
1024 dup (?)
STACK_SEG
ENDS
END
Figure 7 Typical Segment Definitions
Assume Directive
How does the assembler know which segment is the data segment, and which one is stack segment?
The segment directives dont tell you what type of segment it happens to be in the program. When you specify
the segment in your program, not only you must tell the CPU that a segment is a data segment, but also you
must tell the assembler where and when the segment is a data segment. The assume directive provides this
information to the assembler.
The assume directive takes the following form:
ASSUME CS:<code segment name>, DS:<data segment name>, SS:<stack segment name>
The assume directives tells the assembler that you have loaded the specified segment register(s) with
the segment addresses of the special value. Note that this directive does not modify any of the segment registers,
it simply tells the assembler to assume the segment registers are pointing at certain segments in the program.
END directive
The END directive terminates an assembly language source file. In addition to telling the assembler
that it has reached the end of the assembly language source file, the end directive operand <entry point> tells the
MS-DOS where to transfer the control when the program begins execution, as shown by the following syntax:
END <entry point>
8
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
If you write separate assembly and youre linking together several different object codes, only one
module can have a main program. Likewise, only one module should specify the starting location of the
program. Others will leave blank.
Variable declaration
For the above example, the variable V1 locates at location DS:0, V21 locates at location DS:1, V22
locates at location DS:2, V3 locates at location DS:4, etc. The question mark ? tells the assembler that the
variable should be left uninitalized when it loads into the memory, i.e. just leave space for that variable. You
may specify any initial value for the variable before or after (replace the ?) the execution of the program.
Number Base
To differentiate between numbers in the various bases, you can use a suffix character. If you terminate
a number with a b or B, then the assembler assumes that it is a binary number. If it contains any digits other
than 0 or 1 will generate an error. A suffix D or d assumes the number is a decimal number, while a suffix
H or h will select the hexadecimal radix.
All integer constants must begin with a decimal digit, including hexadecimal constants. To represent
the number ABCD, you must specify as 0ABCDh. The assembler requires the leading decimal digit so that it
can differentiate between symbols and numeric constants.
If you do not specify the suffix after the number, the assembler will use the current default radix, i.e.
decimal radix. Therefore, you can specify the values without using D character.
Array
In the high-level programming, it is commonly to use the arrays. Abstractly, an array is an aggregate
data type whose members are all the same type. Selection of the member from the array is by an integer index.
For example, A[2] selects the third element from array A in C language.
There are three factors controlling the array. The base address of an array is the address of the first
element on the array and always appears in the lowest memory location. The index is the position of the
member that retrieves the specified element. The element size is the size of the element in the memory.
For a single dimension array, the address of the specified element can be calculated as:
Address = Base Address + (Index Element Size)
In the assembly language, an array is defined as
<arrayname>
DB | DW
<size> dup
(<element>)
Array name is the name of the array variable. The <size> dup (<element>) tells the assembler to
duplicate the object with the size defined in <size>. For example, in Figure 7, 10 dup (?) duplicate the array V3
10 times with a byte size for each element. With a ? in the ( ), 10 uninitialized value will be defined. If a
value, say 1, is defined in the ( ), 10 byte size array with value 1 will be assigned.
In order to design an array with all different value, you can use the following syntax
3
All string must be ended with $ notation, otherwise the assembler will output the unpredictable result.
9
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
<arrayname>
DB | DW
value1, value2, value3, valuen
This form allocates n variables of DB or DW type. It initializes the first item to value1, the second item
to value2, etc. For example,
Integers
DB
0, 1, 2, 3, 4
initialize the five-element array, with the values from 0 to 4 respectively.
Consider the following declaration:
Strange
DW
256 dup (0, 1, 2, 3)
The array Strange has 1024 elements. The n dup (XXX) operand tells the assembler to duplicate XXX
n times, not creating an array with n elements. If XXX contains k elements, then the dup operator will create an
array with size kn. The values in the above example will be 0 1 2 3 0 1 2 3 .
To access the element in the array, the address formula will be used.
For the base address, you can use the name of the array. The element size is the number of bytes for
each array element. If the object is an array of the bytes, the element size is 1, while it will be 2 if the object is
an array of the word length.
The assembly code for accessing the array will be
[<arrayname>+<index>*<element size>]
The square box tells the assembler to resolve the entire element to the address inside the box. For
example, to denote the array SUMMER[2] with word size in assembly, you can use it as:
[SUMMER+3*2]
String
To declare the string, you can use the following syntax
<stringname>
DB
<string>$
The <stringname> is the name of the string, which defined inside the or . If you want to place an
inside a string, you must place a pair of next to each other, e.g.
Im fine, thanks
or by using the other characters as the string delimiter:
Im fine, thanks
A string will appear as an array of ASCII number for each character. With the size of the ASCII is a
byte size, we will only use DB to define the string.
START:
MAIN
CODE_SEG
SEGMENT
PROC
ASSUME
MOV
MOV
MOV
MOV
MOV
MOV
INT
MOV
INT
ENDP
ENDS
FAR
CS:CODE_SEG, DS:DATA_SEG
AX, DATA_SEG
DS, AX
CX,0100h
AH,2h
DL,2Ah
ABC,0Ah
21h
AH,4Ch
21h
Label
*** Page 9 ***
10
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
The label field is an optional field containing a symbolic label for the current statement. Labels are
used in assembly language as to mark the lines which can be jumped by the other instruction (as GOTO
statement). In general, you should begin your labels in column one with the syntax:
<label name> :
A symbol is associated with some particular value. This value can be an offset within a segment, a
constant, a string, etc. A symbolic name consists of a sequence of letters, digits, and special characters, with the
following restrictions:
1. First character must be alphabetic letter or special character like $. No numeric digit is allowed.
Only $ or ? characters are not allowed (as these two characters have meanings).
2. It cannot be reserved words.
3. The maximum length for the characters is 31.
4. It is not case-sensitive, which is different from C. It will treat the upper and lower case alphabetic
equivalently.
Mnemonic
A mnemonic is an instruction name. The mnemonic field contains an assembler instruction.
Instructions are divided into three classes: machine instructions, assembler directives and pseudo opcodes.
Machine instructions are assembler mnemonics that corresponds to the actual instructions. The assembler
directives are special instructions that provide the information to the assembler but not generate any code. All
instructions introduced in section 3.1 are assembler directives. They are only message to the assembler, nothing
else. A pseudo-opcode is a message to the assembler, but it will emit the object code bytes. For example, DB
and DW in data segment in section 3.2 are the pseudo-opcode. These instructions will emit the bytes or words
of the data specified by their operands but they are not true instructions in the assembly language.
Operand
The operand field contains the operands, or parameters, for the instruction specified in the mnemonic
field. Operands never appear on lines by themselves. The type and number of the operands depend entirely on
the specific instruction.
Comment
The comment field allows you to annotate each line of source code in your program. When the
assembler is processing a line of text with beginning of the notation ;, it completely ignores everything on the
source line following a semi-colon. You can also have a comment on the line by itself.
Procedure Definition
In the whole code segment you must define at least one procedure segment as:
<procedure name> PROC {FAR | NEAR}
:
:
;***your (main/ sub) program here***
<procedure name> ENDP
Procedure name, as function name of the subroutine in high level language, must be unique. Proc
means the procedure begins, while endp tells the assembler the procedure ends. Far refers the procedure can be
called outside, while Near refers the procedure can be called only in this procedure. As you can see, the
definition of a procedure looks like definition of a segment. One difference is that procedure name must be a
unique identifier within your program. Your code calls this procedure using this name. This topic will be further
discussed in the CALL section.
11
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
methods is the efficient way to access. We will show how the addressing modes reference with MOV command
in the following paragraphs.
Consider the 8086 MOV instruction
MOV
<destination>, <source>
The instruction MOV copies the data from the source operand to the destination operand. The only
restriction of the MOV instruction is that both operands must be the same size.
We can use the different type of the memory location or the registers in the source and destination.
However, the best choice of the source or destination is using the registers. Instructions using the registers will
be shorter and faster than accessing the memory location.
Furthermore, as we will show in the following sections, the general purpose registers will be one of the
instruction operands (or in other words, parameters).
There are two restrictions in the MOV instruction:
1. It is invalid in specifying CS as the destination operand, and
2. It is invalid that both of the operands are segment registers.
Furthermore, there are five main types of the indexing methods:
Immediate data reference & Register data reference (Direct data reference)
Immediate data reference consists of an immediate mode source and a destination location.
Data value directly move to a defined register. From the example MOV AX, 004Ch, it means that
the hexadecimal number 004C immediately move to AX (accumulator long) register.
Register data reference includes data moving from one register or memory location to another
register. From the example, MOV AX, BX, it means that the content of the BX register moved to the
AX register.
We can also represent this mode into another way. The instruction
MOV
AL, DS:[8088h]
Loads the byte at memory location 8088h (in data segment) to the AL register. Likewise, the
instruction
MOV
DS:[1234h], DL
stores the value from the DL register to the memory location 1234h.
Likewise, to access the location in the code segment 1234h you would use
MOV
AX, CS:[1234h]
Of course, you can use the name of the memory location as the source. For example,
MOV
AX, [CON]
means that the content of variable CON will be copied to AX. The CPU, as similar as above, will
resolve the [CON] as an address first.
12
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
The offsets generated by these addressing modes are the sum of the constant and the specified
register. The addressing modes involving BX, SI and DI are all use the data segment, while the BP
addressing modes referring to stack segment.
In order to remember all the above memory addressing modes, the following syntax can help you to do
this.
MOV
<destination>, <DISP | [BX | BP] | [SI | DI] >
There are totally three terms in the source field: DISP, [BX | BP] and [SI | DI]. You can choose one
term, two terms or three terms. For example, choose DISP from column one, nothing from column two and [DI]
from column three getting
MOV AL, DISP [DI]
Moreover, the generic of the move instruction takes three different assembly language forms:
MOV
<register>, <memory>
MOV
<memory>, <register>
MOV
<register>, <register>
Note that at least one of the operands is always general purpose register.
Finally, if the effective address calculation produces a value greater than FFFFh, the CPU ignores the
overflow and the result wraps around back to zero. For example, if BX contains 10h, the instruction
MOV
AL, FFFFh [BX]
will load the AL register from location DS: 0Fh, but not DS: 1000Fh.
XCHG instruction
The XCHG (exchange) instruction swaps two values. The general form is
XCHG
<operand1>, <operand2>
There are two specific forms of this instruction on the 8086 machine:
XCHG
<register>, <memory>
XCHG
<register>, <register>
Since the 8086 often provides shorter and faster versions of instructions that use the AX register, you
should try to arrange your computations so that the CPU can use the AX register as much as possible. However,
both the operands must be the same size, and the XCHG instruction does not modify any status flags in the
status register.
13
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
During the ADD operation, although there is a carry bit, it would not be added into the result.
However, the carry flags (CF) will be set to 1. When ADC operation performed, it will add three elements,
including AX contents, W21 and CF, whatever CF related to that calculation or not.
The SUB instruction is similar to ADD instruction. Note that the subtraction is not commutative.
The ADD and SUB instruction will affect the status registers. They will set the overflow flag to be 1 if
signed overflow/ underflow occurs. They will set the sign flag if the result is negative. They will set the zero
flag if the result is zero, and set the carry flag if an unsigned overflow occurs.
Since it is overflow for AL, the value would store in the whole AX register.
14
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
which takes the form:
The first MUL B2 will treat 80h as +128, whereas IMUL will treat 80h as -128 (2's complement).
After MUL executes, since 12864 = 8192 which is 2000h, therefore AX = 2000. However, when IMUL
executes, since -12864 = -8192 which is E000h, therefore AX = E000.
Division shares the same properties with multiplication. The syntax are:
DIV {source}
; AL = AX / source . AH or AX = DX:AX / sourceDX
IDIV {source}
; AL = AX / source . AH or AX = DX:AX / sourceDX
which takes the form:
DIV {<register> | <memory>}
IDIV {<register> | <memory>}
DIV handles unsigned data while IDIV handles signed division. The basic operations can be divided
into two types: byte into word or word into double word. In the byte into word operation, the dividend will be
in the AX register. The remainder will put in AH while the quotient will put in AL. In the word into double
word operation, the most significance dividend will be in the DX register while the least significance dividend
will be in the AX register. The remainder will put in DX while the quotient will put in AX.
You cannot simply divide the 8-bit value by another 8-bit value. If the denominator is an eight-bit
value, the numerator must be a 16-bit value. You can extend that 8-bit value into 16 bit and loaded it into a 16bit register (e.g., AX), and perform the division.
Furthermore, if the dividend and divisor have the same sign, DIV and IDIV generate same results.
However, if they are different in their sign, DIV generates a positive quotient while IDIV generates a negative
quotient.
We summarized the MUL and DIV operation into the following table.
Instruction
Multiplier
Multiplicand in
Product in
MUL CL
CL (byte)
AL
AX
MUL BX
BX (word)
AX
DX AX
Instruction
Divisor
Dividend in
Quotient in
Remainder in
DIV CL
CL (byte)
AX
AL
AH
DIV BX
BX (word)
DX AX
AX
DX
Table 1 Summary of MUL and DIV operation
15
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
Note that you can use any general purpose register. For example, if you use
JMP
AX
It is roughly equivalent to
MOV IP, AX
Some forms of memory addressing, unfortunately, do not intrinsically specify a size. For example,
JMP
[BX]
cannot tell us the size of the variable (for far or near jump?). To solve the ambiguity, you will need to
use a type coercion operator.
Coercion Operator
There are times when you would probably like to treat a byte variable as a word, or treat a word as a
double word (addressing). Temporarily changing the type of a label for some particular occurrence is called
coercion, as shown below:
<type> PTR <expression>
Type is any of byte, word, dword, near, far, or other types. Expression is any general expression on
that is the address of some object. The coercion operator returns an expression with the same value as
expression, but with the type specified by type. For example,
JMP
word ptr [BX]
refers to the size of the BX is a word size. For example, the following will jump to the different code
segment address with address ABC:
JMP
dword ptr CS:[ABC]
16
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
:
:
;***your (main/ sub) program here***
<procedure name> ENDP
In the procedure definition, FAR allows us to call outside the code segment (inter-segment call) while
NEAR only allows us to call inside the code segment (intra-segment call).
The CALL instructions take the same forms as the JMP instructions except there is no short
intrasegment call.
The FAR CALL instruction does the following:
1. Pushes the CS register onto the stack.
2. Pushes the 16-bit offset of the next instruction following the call onto the stack.
3. Copies the 32-bit effective address into the CS:IP register.
4. Execution continues at the first instruction of the subroutine.
The NEAR CALL instruction does the following:
1. Pushes the 16-bit offset of the next instruction following the call onto the stack.
2. Copies the 16-bit effective address into the IP register.
3. Execution continues at the first instruction of the subroutine.
The return RET instruction returns control to the caller of a subroutine. It does so by popping the
return address off the stack and transferring control to the instruction at the return address. Near call returns pop
a 16-bit return address off the stack into the IP register. A far call returns pop a 16-bit offset into the IP register
and a 16-bit segment value into the CS register.
The other form of the RET instruction is adding a displacement number after the RET. It is identical to
those RET instruction, except the CPU adds the displacement value to the stack pointer immediately after
popping the return address from the stack. This mechanism removes parameters pushed onto the stack before
returning to the caller. Lets take an example.
CODE_SEG
SEGMENT
BEGIN
PROC
FAR
:
:
CALL
A
CALL
B
:
:
BEGIN
ENDP
A
PROC
NEAR
:
:
RET
A
ENDP
CODE_SEG
ENDS
CODE_SEG1
SEGMENT
B
PROC
FAR
:
:
RET
B
ENDP
CODE_SEG1
ENDS
Figure 13 Simple procedure call
From the example, we notice that if the subroutine A to be called within the code segment, PROC
NEAR can be defined for the procedure. However, when we want to call the procedure outside the code
segment, e.g. B, PROC FAR must be defined. After finishing all the procedure and returning to the program
after CALL function, RET tells the assembler return back to the original program. Otherwise, the program
would continue to execute with unpredictable results. Note that the above program is not valid in executing the
FAR call procedure. For more details, please refer the subroutine section.
17
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
The conditional jumps test one or more bits in the status register to see if they match some particular
pattern. If the pattern matches, control transfers to the target location. If the match fails, the CPU ignores the
conditional jump and execution continues with the next instruction. Some instructions, for example, test the
conditions of the sign, carry, overflow and zero flags.
Most of the time, you will probably execute a conditional jump after the comparison. CMP allows you
to do this. To compare the content of the two data fields before executing the conditional jump instruction, a
compare instruction can be executed:
CMP
{destination}, {source}
; destination source (set flags)
which takes the form:
CMP
{<register> | <memory>}, {<register> | <memory> | <immediate>}
Note that no both memories can exist in destination and source.
The CMP instruction updates the status flags according to the result of the subtraction operation. You
can test the result of the comparison by checking the appropriate flags in the status register.
On a 8086 machine, the conditional jump instructions are all two bytes long, which takes the form:
JXX
{<address> | <label>}
where XX is the mnemonic representing the condition of branching. The first byte is a one byte opcode
followed by a one byte displacement. Although this leads to a very compact instruction, a single byte
displacement only allows a range of -128 bytes to +127 bytes.
Conditional branching instructions test the corresponding status register. If the condition is TRUE, the
program will flow to the label specified. The status register would not change according to the JXX condition.
The JXX command will be summarized in the following table.
Definition
Condition 5
Description
18
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
Use the opposite branch to skip over the instructions you want to execute if the condition is true.
Always use the opposite branch rule given earlier to select the opposite branch, otherwise you may use more
than one conditional jump to perform one jumping.
XOR is Exclusive OR, which will set the bit zero if both bits are equal (0 0 or 1 1).
19
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
C
SHR
SHL/ SAL
C
C
ROL
ROR
RCL
RCR
C
SAR
For 8088 and 8086 CPUs, the number of bits to be shifted or rotated is either 1 or in CL. If the number
of bits shifted is larger than 1, the source operand must be initialized in CL. For example, if AH = 10101101
and 3 bit right shifting is needed, the following must be followed. 7
MOV
CL, 3
SHR
AH, CL
Figure 17 Shift Left Example with constant larger than 1
7
20
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
Since shifting an integer value to the left one position is equivalent to multiplying that value by two
(2h), use the shift left instruction for multiplication by powers of two.
For example, if the following calculation is done:
810 1010 (= 8010) where 810 = 000010002
It is noticed that 810 1010 = 8 (8+2) = 8 (23+21) = 8 23+ 8 21
Therefore, when we do the following procedure,
MOV
AH, 8h
; store the value of AH = 24d
MOV
AL, AH
; store the value of AL = 24d
MOV
CL, 3
; left shifting the AH by 3
SHL
AH, CL
SHL
AL, 1
; left shifting the AL by 1
ADD
AH, AL
; Add the value to perform the multiplication
Figure 18 Multiplication and Shifting Example
The keyboard and screen interrupt is another good example. Interrupt 21h provides some service for
keyboard and screen handling, with different service number. To choose a particular operation, you load the
service number into the AH register before executing the 21h. The following table lists some typical service
numbers.
Service No.
Explanation
01h
Keyboard input with echo
02h
Display output
07h
Keyboard input without echo (no check for Ctrl-C)
*** Page 20 ***
21
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
08h
09h
4Ch
For example, to read a character from a keyboard buffer with displaying the character on the screen,
you would use the following code:
MOV AH, 01h
INT
21h
Figure 20 Input Service interrupt
The AL register will store the standard ASCII code shown on the screen. With the service number 08h,
it acts as service number 02h, except that no output will be shown on the screen. With the service number 07h,
it acts as service number 08h, except that it will ignore Ctrl-C key.
Another example is to print a character or string on the screen. In order to print the character, use the
output Service 02h. The operation would display a character read from the DL register (ASCII format). For
displaying the string, use the output Service 09h. The operation would display a string, defined in the data
segment, with the effective address at DX register. For example, if we want to print the string HELLO, the
following procedure must be follow:
MOV
AH, 09h
LEA
DX, NAME
INT
21h
:
:
DATA_SEG
SEGMENT
NAME
DB
HELLO$
DATA_SEG
ENDS
Figure 21 Output Service interrupt
LEA (load effective address) instruction is used to prepare the pointer values. It takes the form:
LEA
<destination>, <source>
which takes the form
LEA
<register>, <memory>
It loads the specified general purpose register with the effective address of the specified memory
location. The effective address is the final memory address obtained after all addressing mode computations.
For example,
LEA
AX, 3 [BX]
loads the value of BX plus 3 into the AX register.
For the string case, it will load the address of the first character (ASCII form) in the register (DX) to
enable the string operation. Furthermore, it will display characters until it finds the $ sign.
22
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
Push Direction
ss
bp
sp
Figure 23 Stack operation
Push Direction
ss
next element
to be placed
sp
top of stack
Reserve space for interrupt execution, procedure call and own use.
It implies that it will only PUSH and POP a word size data. (16 bit)
23
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
During the expansion, the assembler will expand every occurrence of the macro in the code segment. It
will replace the macro name by the macro body at the destination address, and the formal arguments inside
macro body by the supplied arguments. In this case, no run-time overhead is needed. The only thing the
assembler done is a simple substitution followed by normal assembling.
Note that the assembler does not immediately assemble the instructions between the MACRO and
ENDM directives when the assembler encounters the macro. Instead, the assembler stores the text
corresponding to the macro into a special table (called the symbol table). The assembler inserts these
instructions into your program when the assembler expands the macro. For example,
CLS
MACRO
MOV
AH, 06h
MOV
AL, 00h
MOV
BH, 07h
MOV
CX, 0000h
MOV
DH, 18h
MOV
DL, 50h
INT
10h
ENDM
Figure 25 Macro Definition of clearing Screen
How to call the macro procedure? In the code segment, use the symbol to call the macro procedure. In
the above example, if you want to call the CLS macro, just write CLS in the code segment. When you do this,
the assembler will insert the statements between the MACRO and ENDM directives into your code at the point
of the macro invocation.
If arguments are needed, formal parameters and actual parameters (argument) are defined in the macro
definition and the calling macro respectively. The assembler will substitute the actual parameters appearing as
operands for the formal parameters appearing in the macro definition. The assembler does a straight textual
substitution only. For example, if we want to print the message with different message in different cases, the
following example can be followed:
PRTMSG
MACRO
MSG ;/*** printing message ***/
MOV
AH, 09h
LEA
DX, MSG
INT
21h
ENDM
CODE_SEG
MAIN
MAIN
CODE_SEG
SEGMENT
PROC
:
:
PRTMSG
PRTMSG
:
:
ENDP
ENDS
PARA
FAR
DATA_SEG
MSG1
MSG2
DATA_SEG
SEGMENT
PARA
DB
Hello$
DB
Everybody$
ENDS
MSG1
MSG2
24
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
MAIN
CODE_SEG
MOV
LEA
INT
:
:
ENDP
ENDS
AH, 09h
DX, MSG2
21h
In some instances using macros can save a considerable amount of typing in the program. For example,
if you want to clear the screen many times, you may use a lot of code for only one purpose in case of no macro.
A large number of same statements are duplicated in the program. Writing the macro can simplify your
program, and easy to write.
Since the assembler does a textual substitution for macro parameters when expanding the macro, there
are times when a macro expansion might not produce the results you expected. For example, look at the
following statement:
MSG A * 5
As you can see, the calling to the MSG macro with text can lead to the problem. The assembler will
automatically convert a text object A passed to the macro.
If we call the macro procedure as:
MSG <A*5>
the assembler will automatically convert the text object A*5 to the macro. In order to evaluate the
value A*5 expression, the following should be done:
MSG %A*5
It will evaluate the expression A*5 and convert the resulting numeric value to a text value consisting
of the digits that represent the value before the expansion.
25
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
A:
MOV
BH, 07h
:
A
ENDM
:
LOOP
The local label definition should be defined after the macro directives. During the expansion, the
assembler will assign the different labels in the program.
Suppose that you have another macro named DISPLY that uses the service 02 in the AH register to
display a character:
DISPLY
MACRO
CHAR
MOV
DL, CHAR
MOV
AH, 02h
INT
21h
ENDM
Figure 30 Example of Display macro
Now, you can change the above macro into the following nested macro:
DISPLY
MACRO
CHAR
MOV
DL, CHAR
DOSINT
02h
ENDM
Figure 31 Example of Display macro
REPT directive
The syntax of the REPT directives is:
REPT
<expression>
<statements>
ENDM
Expression must be a numeric expression that evaluates to an unsigned constant. The repeat directive
duplicates all the statements between REPT and ENDM with the number of times indicated in the expression,
for example,
MAKEWORD
MACRO
N
REPT
N
10
26
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
DW
ENDM
ENDM
1024
When a macro MAKEWORD 3 is called, the loop will repeat 3 times, each time emitting the code of
"DW 1024" after the expansion. Note that the REPT loop executes at assembly time, not at run time. REPT is
not a mechanism for creating loops within the program, it is only used for replicating sections of code within
your program.
IRP directive
Another form of the repeat macro is the IRP macro. The IRP (Indefinite Repeat) operation will cause a
repeat of block of instruction up to the ENDM. The syntax is:
IRP
<<parameter>, <arguments>>
<statements>
ENDM
The < > brackets are required around the items in the parameter and arguments. The IRP directive
replicates the instructions between IRP and ENDM once for each item appearing in the argument. Furthermore,
for each iteration, the first symbol in the parameter is assigned the value of the successive items from the second
parameter. For example,
IRP
N, <1,2,3,4>
DB
N
ENDM
Figure 33 Indefinite Repeat Example
IRPC directive
The third form of the loop macro is the IRPC macro. It differs from the IRP macro in that it repeats a
loop the number of times specified by the length of a character string rather than by the number of the operands
present. Here is the general syntax:
IRPC
<<parameter>, <string argument>>
<statements>
ENDM
The statements in the loop repeat once for each character in the string operand. The angle brackets <
> must appear around the string, for example,
IRPC
N, <1234>
DB
N
ENDM
Figure 34 Indefinite Repeat Example
The assembler will generate a block of the code for each character in the string argument. After the
expansion, the assembler will generate DB 1, DB 2, DB 3 and DB 4. The arguments can be any number of
legal symbols, string, numeric, or arithmetic constants.
27
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
need to correct the same bug twice in two separate code sequences, so it is less likely that you will forget to
make the change in both places.
The conditional assembly directives are especially useful in the macros. They can help you produce
efficient code when a macro would normally produce sub-optimal code. It actually acts as a programming
language within a programming language.
IF Directive
The assembly language supports a number of the conditional directives. Conditional directives IF are
most useful within a macro definition. Every IF directives must have a matching ENDIF to terminate the tested
condition. One optional ELSE may provide an alternative condition. The syntax is:
IF
<condition>
<sequence of statements>
<ELSE>
;optional
<sequence of statements>
ENDIF
Omission of ENDIF causes an error message "Undetermined conditional". The assembler evaluates the
condition. If it is a non-zero value (true), the assembler will assemble the statements between the if and else
directives (or endif, if the else is not present). If the expression evaluates to zero (false) and an else section is
present, the assembler will assemble the statements between the else and the endif directive. If the else section is
not present and expression evaluates to false, the assembler will not assemble any of the code between the if and
endif directives.
The important thing to remember is that the condition has to be an expression (it can be the relational
operation, e.g., EQ, LT, etc.) that the assembler can evaluate at assembly time, i.e., it must evaluate to a
constant. For example, if you want to assemble the first set of code for A = 0, otherwise to assembler the second
set of code, you could use the following statements:
IF
A EQ 0
MOV AX, A ;<first set>
ELSE
MOV BX, A ;<second set>
ENDIF
Figure 35 Example of using IF directives
IFE Directive
The IFE directive is used exactly like the IF directive except it assembles the code after the IFE
directive only if the expression evaluates to zero (false), rather than non-zero (true), i.e. reverse case of IF
directive.
28
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
IFB, IFNB
The IFB and IFNB directives, useful mainly in macros, check to see if an operand is blank (IFB) or not
blank (IFNB), which is in the form:
IFB
<<condition>>
<sequence of statements>
<ELSE>
;optional
<sequence of statements>
ENDIF
The IFB works in an opposite manner to IFB, i.e. it would assemble the statements above that IFB does
not and vice versa. Note that < > is needed in the IFB statement.
For example, if we use IFNB (if not blank), all INT 21h requests require a service in the AH register,
whereas some requests also require a value in the DX register. The following macro, DOSINT, uses IFNB to
test for a nonblank argument for the DX.
DOSINT
MACRO
SERVICE, ADDRESS
MOV
AH, SERVICE
IFNB
<ADDRESS>
LEA
DX, ADDRESS
ENDIF
INT
21h
ENDM
Figure 36 Example of IF directives
If DOSINT 01h is called, the assembler will generate only three program lines, which is:
MOV
AH, 01h
INT
21h
Figure 37 Example of IF directives after expansion of missing parameter
If DOSINT 09h, MSG is called, the assembler will generate the following program lines:
MOV
AH, 09h
LEA
DX, MSG
INT
21h
Figure 38 Example of IF directives after the expansion
WWW.Freshersworld.com
IFIDN, IFDIF, IFIDNI, and IFDIFI
The IFIDN, IFDIF, IFIDNI and IFDIFI assembly directives take two operands and process the
associated code if the operands are identical (IFIDN), different (IFDIF), identical ignoring case (IFIDNI), or
different ignoring case (IFDIFI). The syntax is
IFXXX
<<operand1>>, <<operand2>>
<sequence of statements>
<ELSE>
;optional
<sequence of statements>
ENDIF
where XXX is the assembly code. Note that < > is required.
EXITM directive
The EXITM directive immediately terminates the expansion of a macro, exactly as ENDM. But why
EXITM? The answer is the conditional assembly. Conditional assembly can be used to conditionally execute
the EXITM directive in certain condition, such as
COUNTER
MACRO
COUNT
IF
COUNT EQ 0
:
:
EXITM
ENDIF
ADD
AX, COUNT
ENDM
*** Page 28 ***
29
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
Figure 39 Example of EXITM
30
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
CODE_SEG
MAIN
ASSUME
MAIN
CODE_SEG
DATA_SEG
A
B
DATA_SEG
STACK_SEG
STACK_SEG
; Subprogram
CODE_SEG
ADDING
ADDING
CODE_SEG
EXTRN
ADDING:FAR
SEGMENT
PARA
PROC
FAR
CS:CODE_SEG,DS:DATA_SEG,SS:STACK_SEG
MOV
AX, DATA_SEG
MOV
DS, AX
MOV
AX, A
MOV
BX, B
CALL
ADDING
MOV
AH, 4Ch
INT
21h
ENDP
ENDS
SEGMENT
DW
DW
ENDS
SEGMENT
DW
ENDS
END
PARA
5
7
SEGMENT
PROC
ASSUME
PUBLIC
ADD
RET
ENDP
ENDS
END
PARA
FAR
CS: CODE_SEG
ADDING
AX, BX
PARA STACK
1024 dup (?)
MAIN
ADDING
How can we do if common data is used in both main program and the subprograms? A common
requirement is to process data in one assembly module that is defined in another assembly module. We modify
the above example in the following one, and noted the changes is that we move the content of A and B to AX
and BX in the subprogram.
; Main program
EXTRN
ADDING1:FAR
PUBLIC
A, B
CODE_SEG
SEGMENT
PARA PUBLIC
MAIN1
PROC
FAR
ASSUME
CS:CODE_SEG,DS:DATA_SEG,SS:STACK_SEG
MOV
AX, DATA_SEG
MOV
DS, AX
CALL
ADDING1
MOV
AH, 4Ch
INT
21h
MAIN1
ENDP
CODE_SEG
ENDS
DATA_SEG
A
B
DATA_SEG
STACK_SEG
STACK_SEG
SEGMENT
DW
DW
ENDS
SEGMENT
DW
ENDS
PARA PUBLIC
5
7
PARA STACK
1024 dup (?)
*** Page 30 ***
31
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
END
MAIN1
EXTRN
SEGMENT
PROC
ASSUME
PUBLIC
MOV
MOV
ADD
RET
ENDP
ENDS
END
A: WORD, B: WORD
PARA PUBLIC
FAR
CS: CODE_SEG
ADDING1
AX, A
BX, B
AX, BX
; Subprogram:
CODE_SEG
ADDING1
ADDING1
CODE_SEG
ADDING1
Note that there are two main changes in the above example. To begin with, the main program MAIN
defines the data A and B as PUBLIC. The data segment is also defined with the PUBLIC attribute. In the code
segments, the PUBLIC attribute will cause the linker to combine the two logical code segments into one
physical code segment.
Next, the subprogram ADDING defines A and B as EXTRN, and both as WORD size. This definition
informs the assembler as to the length of the one word. The assembler can now generate to correct operation
code for the MOV instructions, but the linker will have to complete the operands.
The main program and the subprogram may define any other data items, but only those defined as
PUBLIC and EXTRN are known in common.
The reason why the ADDING subprogram can refer to the main program's data is because it does not
change the address in the DS register, which still points to the main program data segment. However, programs
are not always simple, and subprograms often have to define their own data as well as refer the data in the
calling program.
The next example shows the variation of the data definition. Both the data is defined in both data
segments.
; Main program
EXTRN
ADDING2:FAR
PUBLIC
A
CODE_SEG
SEGMENT
PARA
MAIN2
PROC
FAR
ASSUME
CS:CODE_SEG,DS:DATA_SEG,SS:STACK_SEG
MOV
AX, DATA_SEG
MOV
DS, AX
CALL
ADDING2
MOV
AH, 4Ch
INT
21h
MAIN2
ENDP
CODE_SEG
ENDS
DATA_SEG
A
DATA_SEG
STACK_SEG
STACK_SEG
SEGMENT
DW
ENDS
SEGMENT
DW
ENDS
END
PARA
5
EXTRN
SEGMENT
PROC
ASSUME
PUBLIC
A: WORD
PARA PUBLIC
FAR
CS: CODE_SEG
ADDING2
PARA STACK
1024 dup (?)
MAIN2
; Subprogram:
CODE_SEG
ADDING2
32
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
ADDING2
CODE_SEG
DATA_SEG
B
DATA_SEG
MOV
PUSH
ASSUME
MOV
MOV
MOV
ADD
POP
RET
ENDP
ENDS
AX, A
DS
DS: DATA_SEG
AX, DATA_SEG
DS, AX
BX, B
AX, BX
DS
SEGMENT
DW
ENDS
END
PARA
7
ADDING2
The main difference between this example and the above example is the definition of the data. Data A
is defined in the main program while data B is defined in the sub-program. In the subprogram, it has to get the
data A first while the DS register still contains the address of the main program data segment address. The
subprogram then pushes the DS on the stack and loads the address of its own data segment. The subprogram
now can get its own data segment.
Furthermore, you can use the PUBLIC in both the data segment. In this case, the linker combines them
and need not to push and pop the DS because the programs use the same data segment and DS address.
WWW.Freshers world.com
Passing Parameters on the Stack
Another way of making data know to a called subprogram is by passing the parameters, in which a
program passes data physically via the stack. It can deal with that procedure which pass large number of
parameters, and it will be demonstrated by the following example.
; Main program
EXTRN
ADDING3:FAR
CODE_SEG
SEGMENT
PARA PUBLIC
MAIN3
PROC
FAR
ASSUME
CS:CODE_SEG,DS:DATA_SEG,SS:STACK_SEG
MOV
AX, DATA_SEG
MOV
DS, AX
PUSH
A
PUSH
B
CALL
ADDING3
MOV
AH, 4Ch
INT
21h
MAIN3
ENDP
CODE_SEG
ENDS
DATA_SEG
A
B
DATA_SEG
STACK_SEG
STACK_SEG
; Subprogram:
CODE_SEG
ADDING3
SEGMENT
DW
DW
ENDS
SEGMENT
DW
ENDS
END
PARA
5
7
SEGMENT
PROC
ASSUME
PARA PUBLIC
FAR
CS: CODE_SEG
PARA STACK
1024 dup (?)
MAIN3
33
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
ADDING3
CODE_SEG
PUBLIC
PUSH
MOV
MOV
MOV
ADD
POP
RET
ENDP
ENDS
END
ADDING3
BP
BP, SP
AX, [BP+8]
BX, [BP+6]
AX, BX
BP
4
ADDING3
Take a look at the stack after the execution of the MOV BP, SP in the
subprogram ADDING3, and look like the right hand figure:
1. A push loaded data A (0005) onto the stack first.
2. A push loaded data B (0007) onto the stack in the main
program.
3. CALL function in the main program pushed the content of
the CS onto the stack, e.g., 1234.
4. CALL function in the main program pushed the content of
the IP onto the stack, e.g., 0035.
BP
0000
IP
3500
CS
3412
0700
0500
The called program requires use of the BP, say 0000, to access the
Figure 44 The contents of the stack
parameters in the stack. Its first action is to save the contents of the BP for the
calling program by pushing it onto the stack. The program then inserts the
contents of the SP into the BP because the BP is usable as an index register. Since the BP now also contains the
SP pointer, which points the top of the stack, now data A is in the stack at (BP+8) and data B is at (BP+6). The
routine transfers these values from the stack to the AX and BX, and performs the addition.
Before returning to the calling program, the routine pops the BP (returning the base pointer address),
which increments the SP by 2. The last instruction, RET, is a far return to the calling program that performs the
following:
1. Pops the word now at the top of the stack to the IP and increase the SP by 2.
2. Pops the word now at the top of the stack onto the CS and increase the SP by 2.
3. Because of the two passed parameters (A and B) in the stack, the RET instruction is coded
as RET 4. The 4, known as a pop value, contains the number of bytes in the passed
parameters. The RET operation also adds the pop value to the SP, correcting it so that it
points to the bottom of the stack.
In effect, because the parameters in the stack are no longer required, the operation discards the value A
and B in the stack and returns correctly to the calling program. Note that the POP and RET operation increment
the SP but no any erasing in the content of the stack.
When saving other registers onto the stack, always make sure that you save and set up BP before
pushing the other registers. If you push the other registers before setting up the BP, the offsets into the stack
will change. That means that the two statement
PUSH
BP
MOV
BP, SP
instructions should be the first two instructions in any subroutine when passing the parameters by
stack.
34
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
AX
; for dummy variable
A
; push three variables
B
C
SUMMING
AX
; Get the return result
NEAR
BP
BP, SP
AX, [BP+4]
AX, [BP+6]
AX, [BP+8]
[BP+10], AX
BP
6
The SUB
SP, 6 instruction makes room for three words on the stack. You can allocate
three local variables in these three words. You can reference these three variables by indexing off the BP
register ([bp-2], [bp-4], [bp-6]) using negative offsets. Upon reaching that statement, you can use the memory
between BP and SP as the temporary storage of the local variables.
The example uses the matching instruction:
ADD
SP, 6
at the end of the procedure to delocate the local storage. The value you add to the stack pointer must
exactly match the value you subtract when allocating this storage. If these two values dont match, the stack
pointer upon entry to the routine will not match the stack pointer upon exit, this is like pushing or popping too
many items inside the procedure.
Unlike parameters, you can allocate local variables in any order. As long as you are consistent with
your location assignments, you can allocate them in any way you choose.
35
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
subroutines, always allocate sufficient memory in your stack segment. The best example is the quick sort, which
is almost a literal translation of the C-language form. Please refer Sample Program 3.
2.
3.
4.
5.
Similar as in Assembly Language, when a C program links to the assembly program, EXTRN and
PUBLIC must be defined in the main and subprogram respectively. In the C program, the syntax
of the EXTRN is:
extern
<program function>
For example, if a function called _ADDING (which is an assembly language procedure) to
be called by a C program with parameters a and b with both integer type, the following
must be written before the main program in C:
extern
int
_ADDING (int, int);
The extern statement must be defined at the beginning of the main program.
If you are programming in C, all external labels should start with an underscore _ character in
assembly. The C compilers automatically prefix an underscore to all function and external variable
names when theyre used in C code, so you only need to attend to underscores in your assembler
code. You must be sure that all assembler references to C functions and variables begin with
underscores, and you must begin all assembler functions and variables that are made public and
referenced by C with underscores. Furthermore, you must name the code segment as _TEXT, and
all calls from C to assembly will be near procedure.
The assembler is normally insensitive to case when handling symbolic names, making no
distinction between uppercase and lowercase letters. Since C is case sensitive, its desirable to
have assembler be case sensitive, at least for those symbols that are shared between assembler and
C.
Its important that your assembler EXTRN statements that declare external C variables specify the
right size for those variables. The correspondence between C and assembler types is as follows:
Byte size in assembly:
Byte size in assembly:
unsigned char, char
Word size in assembly: unsigned short, short, unsigned int, int
C will pass parameters onto the stack. Before calling a function, C first pushes the parameters to
that function onto the stack, starting with the rightmost parameter and ending with the leftmost
parameter. The C function call:
Testing (a, b, 5);
compiles to
MOV
AX, 5
PUSH
AX
PUSH
B
PUSH
A
CALL
_Testing
Figure 47 Conversion of C function to assembly function
You can see that the rightmost parameter, 5, begin pushed first, then B, and finally A.
As far as C is concerned, C can do anything as long as they preserve the registers. However, SI
and DI are special cases, since they are used by C as register variables. If register variables are
enabled in the C module calling your assembler function, you must preserve SI and DI. It is a
good practice that you should push them on entry and pop them when exit.
7. A C callable assembler function must return a value in AX, just like other functions. In general, a
8-bit or 16-bit value is returned in AX register, while the 32-bit values are returned in DX:AX
two-word form.
The typical procedure for accessing the two passed parameters is done as the following example.
C program:
#include <stdio.h>
#include <stdlib.h>
extern int adding (int, int);
6.
36
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
int main ( )
{
int a, b;
:
:
:
ADDING (a, b);
:
:
:
}
Assembly Program:
PUBLIC
CODE_SEG
SEGMENT
_ADDING
PROC
ASSUME
PUSH
MOV
MOV
MOV
PUSH
PUSH
:
POP
POP
POP
MOV
RET
_ADDING
ENDP
CODE_SEG
ENDS
END
_ADDING
PARA PUBLIC
NEAR
CS: CODE_SEG
BP
BP, SP
A, [BP+4]
B, [BP+6]
SI
DS
:
DS
SI
BP
AX, 0
4
CODE
_ADDING
One case in which you may wish to call a C function from assembler is when you need to perform
complex calculations. This is especially true when mixed integer type and floating-point calculations are
involved. There is nothing different from calling to assembly program, but note that:
1. Define the extern function (procedure calling to C) in both C and assembly program. In the
assembly procedure, if you want to call the C function outside the procedure, the definition of the
extern will be
EXTRN
_adding: proc
where proc means the procedure.
2. Push all necessary parameters before calling C function.
3. Pop all necessary parameters after calling C function.
4. The return parameter will be in the AX register.
Direct access: the whole screen is mapped onto a piece of main memory, so screen display can be
done simply by putting appropriate values into the main memory directly. The interface of
keyboard and the system is called port which has specific address (or just a port number). Any
input from keyboard can be read from that port. Where the screen is mapped and which port the
keyboard uses may be different in different machines.
BIOS interrupt: it uses the INT instruction to transfer the control directly to BIOS.
DOS interrupt: it uses the INT instruction to transfer the control directly to DOS. As DOS is
portable to any PC machine, DOS interrupt can be used in any I/O devices.
*** Page 36 ***
37
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
To call a BIOS or DOS interrupt, an interrupt instruction will be used in the assembly program. Given
an interrupt value, the instruction INT will transfer the control to one of the 256 different interrupt handlers.
The interrupt vector table holds the address of these interrupt handlers. We will introduce different applications
of BIOS and DOS interrupt in the keyboard and screen processing.
To begin with, the system needs to know the maximum length of the input data. The purpose is to warn
the user who input too many characters. Secondly, the system must know how many characters the user inputs.
Therefore, the label NAMESTRING needs three parameters to define an input string. The first parameter
denotes the maximum length of input string, the second parameter denotes the actual number of input string,
and the third parameter declares the space for input string.
To request the input string in code segment, apply the DOS interrupt with service 0Ah in the AH. Load
the address of the parameter list into the DX and issue the INT 21h. Such interrupt will wait for the user to
enter the characters and check whether they are exceeding the maximum or not. This operation will echo the
entered characters Pressing the ENTER key (ASCII code: 0Dh) will tell the system the end of an entry. 11
All the characters are interpreted as the ASCII code (with ENTER key). Therefore, the string definition
must be DB.
where 0Dh is the enter key and 0Ah is the line-feed control.
11
Enter Key will count in the maximum length of the string. However, it will not count in the actual length of the string.
38
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
The INT 10h instruction does several video display related functions. You can use it to initialize the
video display, set the cursor size and position, read the cursor position, etc. You can select the particular
function to execute by passing a service number in the AH register.
For example,
MOV
MOV
MOV
MOV
MOV
MOV
INT
AH, 06h
AL, 00h
BH, 07h
CX, 0000h
DH, 18h
DL, 50h
10h
Figure 51 Screen clearing example
Value
0h/ 0000b
1h/ 0001b
2h/ 0010b
3h/ 0011b
4h/ 0100b
5h/ 0101b
6h/ 0110b
7h/ 0111b
8h/ 1000b
9h/ 1001b
Ah/ 1010b
Bh/ 1011b
Ch/ 1100b
Dh/ 1101b
Eh/ 1110b
Fh/ 1111b
7 6 5 4 3 2 1 0
blinking bit
BH specifies the color of the resulting screen. The most-significant bit represents blinking, the next 3
bits represents background color, while the least-significant 4 bits represents foreground color. Inserting a
different value to different parameters causes the windowing effect function. For example,
MOV
AH, 06h
MOV
AL, 05h
MOV
BH, 61h
MOV
CX, 0A1Ch
MOV
DH, 0Eh
MOV
DL, 34h
*** Page 38 ***
39
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
INT
10h
Figure 53 Windows effect example
would create a window at the center of the screen with its own parameters.
After the above execution, DH will contain the row number and DL will contain the column number of
the cursor position.
The character will be read in the AL register with the ASCII representation.
40
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
This is a 1K table containing a 256 4-byte entries. Each entry in this table contains a segmented address that
points at the interrupt service routine in memory. Generally, we will refer to interrupts by their interrupt value,
so interrupt INT 0 address is at memory location 0:0, interrupt INT 1 address is at address 0:4, etc.
When an interrupt occurs, the CPU does the following:
1. The CPU pushes the flags register onto the stack.
2. The CPU pushes a far return address (CS:IP) onto the stack, segment value first.
3. The CPU determines the interrupt number and fetches four-byte interrupt vector from the
correspondence address.
4. The CPU transfers control to the routine specified by the interrupt vector table entry.
After the completion of the steps, the interrupt service routine takes control. When the interrupt service
routine wants to return the control, it must execute an IRET (interrupt return) instruction. The interrupt return,
similar as RET instruction, pops the far return address and the flags off the stack. Note that executing a far
return is insufficient since that would leave the flags on the stack.
Furthermore, upon entry into the interrupt service routine, the CPU will disable further hardware
interrupts by clearing the interrupt flag.
The CLI instruction tells the assembler to prevent any interrupt from this point, and the STI instruction
allows any interrupt raised, and the syntax is
CLI
STI
Perhaps a better way to initialize an interrupt vector is to use the DOS Set Interrupt Vector call. Calling
DOS interrupt with AH equal to 25h provides this function. This call expects an interrupt number in the AL
*** Page 40 ***
41
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
register and the address of the interrupt service routine in DS: DX, where DS stores the segment address of the
interrupt and DX stores the address. The call to DOS that would accomplish the same thing as the code above is
MOV
AX, 2523h
MOV
DX, CS ;assume SimpleISR in code segment
MOV
DS, DX
LEA
DX, SimpleISR
INT
21h
MOV
AX, DATA_SEG ; restore data segment in DS
MOV
DS, AX
Figure 59 Example of storing the address by dos interrupt
Although this code sequence is a little more complex than putting the data directly into the interrupt
vector table, it is safer. Many programs monitor changes made to the interrupt vector table through DOS. If you
call DOS to change an interrupt vector table entry, those programs will become aware of your changes.
Generally, it is a very bad idea to patch the interrupt vector and not restore the original entry after your
program terminates. Well behaved programs always save the previous value of an interrupt vector table entry
and restore this value before termination. The following code sequences demonstrate how to do this. At the
beginning of your program, you should save the old interrupt address. The DOS interrupt with service number
35h in AH will perform this. This interrupt will save the interrupt number, defined in AL, in ES: BX as
segment: offset address. For example,
MOV
AX, 3523h
INT
21h
MOV
[OLDOFFSET], BX
MOV
[OLDSEGMENT], ES
Figure 60 Load the address of the interrupt
The above example shows how to save the interrupt address (segment: offset) of INT 10h (Video
interrupt). Defining AH = 35h, AL = 23h, the segment address will be stored in ES and the offset address will
be stored in BX after the interrupt. We will save all these address in the two variables.
Before exit the program, you should restore the interrupt vector entries, for example:
MOV
DS, CS: [OLDSEGMENT]
MOV
DX, CS: [OLDOFFSET]
MOV
AX, 2523h
INT
21h
Figure 61 Example of storing the address by dos interrupt
The above interrupt only responds to the corresponding interrupt. For example, the interrupt may
raised if Ctrl-C key is pressed (INT 23h). After your ISR has defined, that interrupt service routine only
responds to the Ctrl-C key, which is exactly the same as the original interrupt. Here is the reference of other
interrupts that can be changed to your ISR.
Interrupt No.
Interrupt raised when......
00h
Divide overflow error
09h
Keyboard input
08h/ 1Ch
Every 1/18.2 sec (0.055sec, 5/91sec)
23h
Ctrl-C key is pressed
70h
Every 940ms
Table 5 Interrupt service code
42
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
ISR processing. If youve saved away the address of the original ISR in the word variable OLDOFFSET, you
can jump directly to the original ISR rather than calling it. In such cases, you should put the necessary variables
directly in the code segment, as shown below:
OLDOFFSET
DW
?
NEWISR
PROC
NEAR
:
:
:
JMP
CS: [OLDOFFSET]
NEWISR
ENDP
Figure 62 Example of chaining the ISRs
This code will pass along your original ISR. The OLDOFFSET variable must be defined in the code
segment if you use this technique to transfer the control to the original ISR.
Reentrancy problem
A minor problem develops with developing ISRs, what happens if you enable interrupts while in an
ISR and a second interrupt from the same device comes along? This would interrupt the ISR and then reenter
the ISR from the beginning. Many applications do not behave properly under these conditions. The easiest way
to prevent such an occurrence is to turn off the interrupts while executing code in a critical section, i.e. using
CLI instruction.
Another problem is the DOS interrupt problem. The internal data structure of DOS is designed so that
is is non-reenterable. It is because the DOS is for a single user, and single program system. It is not possible to
active the DOS interrupt when it has activated. Therefore, you can only include the INT 21h in the ISR only if
we know that INT 21h has not been called. Generally, it is suggested that you should not to call INT 21h in the
ISR.
Section 8. Examples
Example 1
Question: Write a program to satisfy the following requirement:
1. Read until 10 small alphabetic letter entered.
2. Convert the 10 small letter to capital letter and output these letters.
Algorithm:
1. Display the input message and set the counter SI.
2. Read the characters
3. Check whether it is small alphabetic letter.
4. If it is correct, change that letter to capital letter by adding -20h to its ASCII. Save the ASCII in
the array MSG [SI] 12 .
5. Check whether the loop ends (10). If the loop is not finished, or the input is incorrect, repeat step 2
until it is finished.
6. Display the capital letter list.
Program:
;***
;***
CODE_SEG
BEGIN
START:
;***
;***
READ_CH:
;***
;***
12
***
***
SEGMENT
PROC FAR
ASSUME CS:CODE_SEG,DS:DATA_SEG,SS:STACK_SEG
MOV AX,DATA_SEG
MOV DS,AX
DISPLAY THE MESSAGE 1
***
MOV AH,09h
LEA DX,MESSAGE1
INT 21h
READ THE CHARACTERS
***
MOV AH,01h
INT 21h
JUMP IF THE CHARACTERS < 'a'
***
CMP AL,61h
JL READ_CH
CORRECT IF THE CHARACTERS < 'z'
***
CMP AL,7Bh
In assembly program, to implement the array, use [MSG+SI] (as MSG [SI] in C). It will act as a list.
43
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
JL CORRECT
JMP READ_CH
;***
CHANGE THE SAMLL LETTER TO CAPITAL LETTER
***
CORRECT:
ADD AL,-20h
;***
CHECK THE CHARACTERS READ
***
MOV [MSG+SI],AL
ADD SI,1
CMP SI,10
JZ WRITE_MSG
JMP READ_CH
;***
ECHO THE STRING READ
***
WRITE_MSG: MOV AH,09h
LEA DX,MESSAGE2
INT 21h
LEA DX,MSG
INT 21h
;***
END OF PROGRAM
***
END_SEG:
MOV AH,4Ch
INT 21h
BEGIN
ENDP
CODE_SEG
ENDS
;***
DATA SEGMENT
***
DATA_SEG
SEGMENT
MESSAGE1
DB "Enter the 10 characters :$"
MESSAGE2
DB " ;Corresponding CORRECT characters in capital letter :$"
MSG
DB 10 DUP(?)
END_MSG
DB '$'
DATA_SEG
ENDS
;***
STACK SEGMENT
***
STACK_SEG SEGMENT
STACK
DW
10
DUP
(?)
STACK_SEG ENDS
END BEGIN
Figure 63 Sample Program 1
Example 2
Question: Write an assembly program to do the following:
1. Read from the keyboard a positive decimal integer of at most 4 digits (0-9999). Convert it to
decimal integer.
2. Using stack, display the integer as string.
Algorithm:
1. Read the characters. Check whether the user enters the return input (ASCII for return key is 0Dh)
2.
3.
4.
5.
6.
7.
Program:
;***
BEGIN OF THE PROGRAM
***
;*** PART(I): CHANGE CHARACTERS TO DECIMAL INTEGERS ***
;***
DEFINE THE VARIABLES
***
CODE_SEG
SEGMENT
BEGIN
PROC FAR
ASSUME CS:CODE_SEG,DS:DATA_SEG,SS:STACK_SEG
START:
MOV AX,DATA_SEG
MOV DS,AX
;***
DISPLAY THE MESSAGE 1
***
MOV AH,09h
LEA DX,MESSAGE1
INT 21h
;***
READ THE CHARACTERS
***
READ_CH:
MOV AH,01h
INT 21h
;***
CHECK THE "RETURN" INPUT
***
CMP AL,0Dh
JZ
PARTII
44
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
;***
***
CMP
JL
***
***
***
***
***
***
***
***
***
***
***
Example 3
Question: Write an assembly program to do the quick sort.
Algorithm: Please refer any reference on recursive calling (C programming textbook, P. 245)
Program for C Version: (Copy from C programming textbook, P. 245)
#include<stdio.h>
#define SWAP(x,y) {int z=(x);(x)=(y);(y)=(z);}
main()
{
45
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
int a[100], n;
:
:
rquick(a,0,n-1);
:
:
}
void rquick(int a[], int lo, int hi)
{
int low, high, pivot;
low=lo;
high=hi;
if (low<high)
{
pivot=a[high];
do
{
while (low<high && a[low]<=pivot)
low++;
while (low<high && a[high]>=pivot)
high--;
if (low<high)
SWAP(a[low],a[high]);
} while (low<high)
SWAP(a[low],a[hi]);
rquick(a,lo.low-1);
rquick(a,low+1,hi);
}
}
Figure 65 Quick Sort program for C Version
WWW.F r e s h e r s w o r l d.com
Program for Assembly Version:
Points to note:
1. Include the main program in the program
2. Only two elements, lo & hi, are pushed into the stack. It is not necessary to push the address of the array
since the array is defined within the data segment.
3. Only number 0 to 9 can be printed on the screen. For the number greater than 9, the program still work, but
no correct output will be shown. Please read the content inside the data segment after sorting, if you use the
number larger than 9.
;***
CODE_SEG
BEGIN
START:
;***
;***
;***
PRINTING:
;***
END_SEG:
BEGIN
;***
SORT
46
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
MOV
BP, SP
SUB
SP, 6
;*** INDEX: LOW = [BP-2], HIGH = [BP-4], PIVOT = [BP-6] (local var)
;
LO = [BP+6], HI = [BP+4]
***
;***
LOW=LO
***
MOV
AX, [BP+6]
MOV
[BP-2], AX
;***
HIGH=HI
***
MOV
BX, [BP+4]
MOV
[BP-4], BX
;***
IF (LOW<HIGH)
***
CMP
AX, BX
JGE
ELOOP1
;***
COMPUTE ADDRESS OF A[LOW], PUT IN BX
***
LEA
BX, A
ADD
BX, [BP-2]
ADD
BX, [BP-2]
;***
COMPUTE ADDRESS OF A[HIGH], PUT IN SI
***
LEA
SI, A
ADD
SI, [BP-4]
ADD
SI, [BP-4]
;***
PIVOT = A[HIGH]
***
MOV
AX, [SI]
MOV
[BP-6], AX
;***
WHILE (LOW<HIGH.....
***
WHILE1:
MOV
AX, [BP-4]
CMP
[BP-2], AX
JGE
WHILE2
;***
&& A[LOW]<=PIVOT
***
MOV
AX, [BP-6]
CMP
[BX], AX
JG
WHILE2
JMP
NEXTP
ELOOP1:
JMP
ELOOP
;***
LOW++
***
NEXTP:
MOV
AX, [BP-2]
ADD
AX, 1
MOV
[BP-2],AX
ADD
BX, 2
JMP
WHILE1
;***
WHILE (HIGH>LOW.....
***
WHILE2:
MOV
AX, [BP-4]
CMP
[BP-2], AX
JGE
NLOOP
;***
&& A[HIGH]>=PIVOT
***
MOV
AX, [BP-6]
CMP
[SI], AX
JL
NLOOP
;***
HIGH-***
MOV
AX, [BP-4]
SUB
AX, 1
MOV
[BP-4], AX
SUB
SI, 2
JMP
WHILE2
;***
IF LOW<HIGH
***
NLOOP:
MOV
AX, [BP-4]
CMP
[BP-2], AX
JGE
CHECKING
;***
SWAP(A[LOW],A[HIGH])
***
PUSH AX
MOV
AX, [BX]
XCHG AX, [SI]
MOV
[BX], AX
POP
AX
;***
WHILE (LOW<HIGH)
***
CHECKING: MOV
AX, [BP-4]
CMP
[BP-2], AX
JL
WHILE1
;***
COMPUTE ADDRESS OF A[HI], PUT IN CX
***
LEA
CX, A
ADD
CX, [BP+4]
ADD
CX, [BP+4]
;***
SWAP(A[LOW],A[HI])
***
MOV
AX, [BX]
PUSH SI
MOV
SI,CX
XCHG AX, [SI]
POP
SI
MOV
[BX], AX
;***
call Recursive 1
***
MOV
AX, [BP-2]
47
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
DEC
PUSH
PUSH
CALL
;***
MOV
INC
PUSH
PUSH
CALL
;***
ELOOP:
SORT
CODE_SEG
;***
STACK_SEG
STACK_SEG
;***
DATA_SEG
A
DATA_SEG
ADD
POP
RET
ENDP
ENDS
AX
[BP+6]
AX
SORT
call Recursive 2
AX, [BP-2]
AX
AX
[BP+4]
SORT
EXIT and RET
SP, 6
BP
4
STACK SEGMENT
SEGMENT STACK 'STACK'
DW 1024 DUP(?)
ENDS
DATA SEGMENT
SEGMENT PARA 'DATA'
DW 5,2,3,4,1
ENDS
END BEGIN
***
***
***
***
Example 4
Question: Write a program which displays another message when interrupt raised.
Algorithm: 1. Store the old ISR address, and define new ones.
2. Display the endless message.
3. Define the new ISR. Execute the ISR by pressing Ctrl_C key.
4. Accept "Y" to terminate the endless message.
5. Restore the old ISR.
Program:
;**********
MACRO DEFINITION
PRINT
MACRO MSG
MOV
AH, 09h
LEA
DX, MSG
INT
21h
ENDM
;**********
BEGIN OF THE PROGRAM
;**********
DEFINE THE VARIABLES
CODE_SEG
SEGMENT
PARA
'CODE'
MAIN
PROC
FAR
ASSUME CS:CODE_SEG,DS:DATA_SEG,SS:STACK_SEG
OLD_SEGMENT
DW
?
OLD_OFFSET
DW
?
MOV
AX,DATA_SEG
MOV
DS,AX
;**********
STORE THE ISR
MOV
AH, 35h
MOV
AL, 23h
INT
21h
MOV
[OLD_SEGMENT], ES
MOV
[OLD_OFFSET], BX
;**********
SET UP THE ISR
PUSH
DS
MOV
AX, CS
MOV
DS, AX
LEA
DX, CTL_C
MOV
AL, 23h
MOV
AH, 25h
INT
21h
POP
DS
;**********
PRINT MESSAGE
ABC:
PRINT MSG1
JMP
ABC
;**********
RESTORE THE ISR
MOV
AH, 25h
MOV
AL, 23h
MOV
DX, CS:[OLD_SEGMENT]
MOV
DS, CS:[OLD_OFFSET]
INT
21h
;**********
END OF PROGRAM
END_SEG:
MOV AH,4Ch
**********
**********
**********
**********
**********
**********
**********
**********
48
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
INT 21h
MAIN
ENDP
;**********
ISR
CTL_C
PROC
FAR
PRINT MSG2
MOV
AH, 01h
INT
21h
CMP
AL, 59h
JE
END_SEG
IRET
CTL_C
ENDP
CODE_SEG
ENDS
;**********
STACK SEGMENT
STACK_SEG SEGMENT STACK 'STACK'
DB 1024 DUP(?)
STACK_SEG ENDS
;**********
DATA SEGMENT
DATA_SEG
SEGMENT
PARA 'DATA'
MSG1
DB 0Dh,0Ah,"HELLO TO EVERYBODY!$"
MSG2
DB "QUIT NOW (Y/N)?$"
DATA_SEG
ENDS
END MAIN
**********
**********
**********
49
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
(<element>)
Code Segment:
Label Definition:
<label name> :
Procedure Definition:
<procedure name> PROC {FAR | NEAR}
:
:
;***your (main/ sub) program here***
<procedure name> ENDP
Data Movement:
50
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
MOV
MOV
XCHG
LEA
Arithmetic Operation:
ADD {destination} , {source}
SUB {destination} , {source}
ADC {destination} , {source}
SBB {destination} , {source}
MUL {source}
IMUL {source}
DIV {source}
IDIV {<register> | <memory>}
NEG {<memory> | <register>}
INC {<memory> | <register>}
DEC {<memory> | <register>}
Program Control Flow:
JMP {<address> | <label> | <register>}
<type> PTR <expression>
CALL
<label>
RET
<immediate>
CMP
{destination}, {source}
JXX
{<address> | <label>}
LOOP
<label>
Logic Operation:
AND {destination}, {source}
OR {destination}, {source}
XOR {destination}, {source}
NOT {destination}
<expression> <relational operator> <expression>
Rotation and Shifting:
SHL
SAL
SAR
ROL
ROR
ROR
RCR
Interrupts:
*** Page 50 ***
51
Freshersworld.com
8086 Assembly Language Tutorial
www.Freshersworld.com.com
<size of stack>
dup
(<initial value>)
Stack Manipulation:
PUSH
POP
{<register> | <memory>}
{<register> | <memory>}
Macro Definition:
<Macro name>
MACRO
(arg1,arg2,....)
:::::
;***your macro here***
ENDM
LOCAL
(label_1,label_2,....)
Directives:
REPT
ENDM
IRP
ENDM
IRPC
ENDM
IFXX
<ELSE>
<expression>
<statements>
<<parameter>, <arguments>>
<statements>
<<parameter>, <string argument>>
<statements>
<condition>
<sequence of statements>
;optional
<sequence of statements>
ENDIF
Calling Sequences:
EXTRN <subprogram name> : type
PUBLIC <subprogram name>
***** END of Assembly Programming *****
Provided By Freshersworld.com
*** Page 51 ***
1
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
0000 (4 BITS)
The nibble is four bits or half a byte. Note that it has a maximum
value of 15 (1111 = 15). This is the basis for the hexadecimal (base
16) number system which is used as it is far easier to understand.
Hexadecimal numbers go from 1 to F and are followed by a h to
state that the are in hex. i.e. Fh = 15 decimal. Hexadecimal numbers
that begin with a letter are prefixed with a 0 (zero).
1 BYTE: 00000000 ( 2 NIBBLES ) : ( 8 BITS )
A byte is 8 bits or 2 nibbles. A
(255 decimal). Because a byte is
representation is two hex digits
that size of the 8-bit registers
1
A word is two bytes that are stuck together. A word has a maximum
value of FFFFh (65,536). Since a word is four nibbles, it is
represented by four hex digits. This is the size of the 16-bit
registers.
Registers
Registers are a place in the CPU where a number can be stored and
manipulated. There are three sizes of registers: 8-bit, 16-bit and
2
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
AL
01110001
3
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
address.
SEGMENT
0010010000010000---OFFSET
----0100100000100010
20-bit Address 00101000100100100010
====== DS ======
====== SI ======
Notice that DS and SI overlap. This is how DS:SI is used to make a
20 bit address. The segment is in DS and the offset is in SI. The
standard notation for a Segment/Offset pair is: SEGMENT:OFFSET
Segment registers are: CS, DS, ES, SS. On the 386+ there are also FS
and GS.
Offset registers are: BX, DI, SI, BP, SP, IP. In 386+ protected
mode1, ANY general register (not a segment register) can be used as
an Offset register. (Except IP, which you can't manipulate
directly).
If you are now thinking that assembly must be really hard and you
don't understand segments and offsets at all then don't worry. I
didn't understand them at first but I struggled on and found out
that they were not so hard to use in practice.
THE STACK
-----------As there are only six registers that are used for most operations,
you're probably wondering how do you get around that. It's easy.
There is something called a stack which is an area of memory which
you can save and restore values to.
This is an area of memory that is like a stack of plates. The last
one you put on is the first one that you take off. This is sometimes
refered to as Last On First Off (LOFO) or First In First Out (LIFO).
If another piece of data is put on the stack it grows downwards.
As you can see the stack starts at a high address and grows
downwards. You have to make sure that you don't put too much data in
the stack or it will overflow.
ax,10
bx,20
cx,30
dx,40
;put
;put
;put
;put
10
20
30
40
into
into
into
into
ax
bx
cx
dx
4
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
Syntax:
push data
POP
Puts the piece of data from the top of the stack into a
specified register or variable.
Syntax:
pop register or variable
This example of code demonstrates how to use the push and pop
instructions
push cx
push ax
pop cx
pop ax
;put
;put
;put
;put
cx on
ax on
value
value
the stack
the stack
from stack into cx
from stack into ax
Syntax:
MOV destination, source
for example:
mov ax,10
mov bx,cx
mov dx,Number
INT
5
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
Syntax:
INT interrupt number
For example:
int 21h
int 10h
Most interrupts have more than one function, this means that you
have to pass a number to the function you want. This is usually put
in AH. To print a message on the screen all you need to do is this:
mov ah,9
int 21h
;subroutine number 9
;call the interrupt
But first you have to specify what to print. This function needs
DS:DX to be a far pointer to where the string is. The string has to
be terminated with a dollar sign ($). This would be easy if DS could
be manipulated directly, to get round this we have to use AX.
This example shows how it works:
mov
mov
mov
mov
int
dx,OFFSET Message
ax,SEG Message
ds,ax
ah,9
21h
The words OFFSET and SEG tell the compiler that you want the
segment or the offset of the message put in the register not the
contents of the message. Now we know how to set up the code to
display the message we need to declare the message. In the data
segment1 we declare the message like this:
Message DB "Hello World!$"
Notice that the string is terminated with an dollar sign. What does
'DB' mean? DB is short for declare byte and the message is an array
of bytes (an ASCII character takes up one byte). Data can be
declared in a number of sizes: bytes (DB), words (DW) and double
words (DD). You don't have to worry about double words at the moment
as you need a 32-bit register, such as EAX, to fit them in.
Here are some examples of declaring data:
Number1 db ?
Number2 dw ?
The question mark (?) on the end means that the data isn't
initialised i.e. it has no value in to start with. That could as
easily be written as:
Number1
Number2
db 0
dw 1
6
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
mov
mov
mov
mov
al,Number1
ax,Number1
bx,Number2
bl,Number2
;ok
;error
;ok
;error
All you have to remember is that you can only put bytes into 8-bit
registers and words into 16-bit registers.
;message to be display
.code
mov dx,OFFSET Message
mov ax,SEG Message
mov ds,ax
mov ah,9
int 21h
mov ax,4c00h
int 21h
END start
;offset of Message is in DX
;segment of Message is in AX
;DS:DX points to string
;function 9 - display string
;call dos service
;return to dos DOS
;end here
COMPILATION INSTRUCTIONS
These are some instructions to compile and link programs. If you
have a compiler other than TASM or A86 then see your instruction
manual.
Turbo Assembler:
tasm file.asm
tlink file [/t]
The /t switch makes a .COM file. This will only work if the memory
model is declared as tiny in the source file.
A86:
a86 file.asm
This will compile your program to a .COM file. It doesn't matter
what the memory model is.
7
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
Syntax:
ADD operand1,operand2
This adds operand2 to operand1. The answer is stored in operand1.
Immediate data cannot be used as operand1 but can be used as
operand2.
SUB
Syntax:
SUB operand1,operand2
This subtracts operand2 from operand1. Immediate data cannot be used
as operand1 but can be used as operand2.
MUL
IMUL
Syntax:
MUL register or variable
IMUL register or variable
This multiples AL or AX by the register or variable given. AL is
multiplied if a byte sized operand is given and the result is stored
in AX. If the operand is word sized AX is multiplied and the result
is placed in DX:AX.
On a 386, 486 or Pentium the EAX register can be used and the answer
is stored in EDX:EAX.
DIV
IDIV
Syntax:
DIV register or variable
IDIV register or variable
This works in the same way as MUL and IMUL by dividing the number in
AX by the register or variable given. The answer is stored in two
places. AL stores the answer and the remainder is in AH. If the
operand is a 16 bit register than the number in DX:AX is
divided by the operand and the answer is stored in AX and remainder
in DX.
MAKING THINGS EASIER
--------------------The way we entered the address of the message we wanted to print was
a bit cumbersome. It took three lines and it isn't the easiest thing
to remember
8
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
All we need to worry about for now is the ascii value which is in AL.
Note: XOR performs a Boolean Exclusive OR. It is commonly used to
erase a register or variable.
PRINTING A CHARACTER
---------------------The problem is that we have the key that has been pressed in ah. How
do we display it? We can't use function 9h because for that we need
to have already defined the string which has to end with a dollar
sign. This is what we do instead:
;after calling function 00h of interrupt 16h
mov dl,al
mov ah,02h
int 21h
If you want to save the value of AH then push AX before and pop it
afterwards.
CONTROL FLOW
----------------
9
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
Syntax:
CMP register or variable, value
jxx destination
An example of this is:
cmp al,'Y'
je ItsYES
10
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
notdone:
This solves the problem but you may want to think about reordering
your code or using procedures if this happens often.
Now we are going to look at a program which demonstrates input,
output and control flow.
Listing 2: PROGFLOW.ASM
;a program to demonstrate program flow and input/output
.model tiny
.code
org 100h
start:
mov dx,OFFSET Message
mov ah,9
int 21h
mov
mov
int
jmp
dx,OFFSET Prompt
ah,9
21h
First_Time
Prompt_Again:
mov dx,OFFSET Another
mov ah,9
int 21h
First_Time:
mov dx,OFFSET Again
mov ah,9
int 21h
xor ah,ah
int 16h
mov bl,al
;function 00h of
;interrupt 16h gets a character
;save to bl
mov dl,al
mov ah,02h
int 21h
;move al to dl
;function 02h - display character
;call DOS service
cmp bl,'Y'
je Prompt_Again
cmp bl,'y'
je Prompt_Again
;is
;if
;is
;if
TheEnd:
mov
mov
int
mov
int
dx,OFFSET GoodBye
ah,9
21h
ah,4Ch
21h
.DATA
CR equ 13
LF equ 10
;enter
;line-feed
al=Y?
yes then display it again
al=y?
yes then display it again
11
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
Message DB
Prompt DB
Again
DB
Another DB
GoodBye DB
end start
INTRODUCTION TO PROCEDURES
-------------------------------In assembly a procedure is the equivalent to a function in C or
Pascal. A procedure provides a easy way to encapsulate some
calculation which can then be used without worrying how it works.
With procedures that are properly designed you can ignore how a
job is done.
This is how a procedure is defined:
PROC AProcedure
.
.
;some code to do something
.
RET
;if this is not here then your computer will crash
ENDP AProcedure
It is equally easy to run a procedure all you need to do is this:
call AProcedure
This next program is an example of how to use a procedure. It is
like the first example we looked at, all it does is print "Hello
World!" on the screen.
Listing 3: SIMPPROC.ASM
;This is a simple program to demonstrate procedures. It should
;print Hello World! on the screen when ran.
.model tiny
.code
org 100h
Start:
call Display_Hi
mov ax,4C00h
int 21h
Display_Hi PROC
mov dx,OFFSET HI
;put offset of message into DX
mov ah,9
;function 9 - display string
int 21h
;call DOS service
ret
Display_Hi ENDP
HI
DB "Hello World!$" ;define a message
12
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
end Start
call PrintChar
mov ax,4C00h
int 21h
;terminate program
xor bh,bh
mov ah,2
int 10h
pop
xor
mov
mov
int
;restore bx
;display page - 0
;function 09h write char & attrib
;display it once
;call bios service
bx
bh,bh
ah,9
cx,1
10h
pop cx
ret
PrintChar ENDP
end Start
;restore registers
;return to where it was called
13
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
call PrintChar
mov ax,4C00h
int 21h
;terminate program
bh,bh
ah,2
dh,Row
dl,Col
10h
mov
mov
xor
mov
mov
int
al,Char
bl,Colour
bh,bh
ah,9
cx,1
10h
pop bx cx ax
ret
PrintChar ENDP
Row
Col
Colour
Char
db
db
db
db
end Start
?
?
?
?
;display page - 0
;function 09h write char & attrib
;display it once
;call bios service
;restore registers
;return to where it was called
14
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
push dx ax bx
call PrintString
pop bx ax dx
mov ax,4C00h
int 21h
;terminate program
;save bp
;put sp into bp
;save registers to be destroyed
xor
mov
mov
int
bh,bh
ah,2
dx,[bp+8]
10h
mov
mov
xor
mov
mov
int
ax,[bp+6]
bx,[bp+4]
bh,bh
ah,9
cx,1
10h
;character
;attribute
;display page - 0
;function 09h write char & attrib
;display it once
;call bios service
pop cx
pop bp
ret
PrintString ENDP
;restore registers
;return to where it was called
end Start
To get a parameter from the stack all you need to do is work out
where it is. The last parameter is at BP+2 and then the next and
BP+4.
WHAT ARE MEMORY MODELS?
---------------------------------------------------------------------
15
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
Tiny
This means that there is only one segment for both code and data.
This type of program can be a .COM file.
Small
This means that by default all code is place in one segment and all
data declared in the data segment is also placed in one segment.
This means that all procedures and variables are addressed as NEAR
by pointing at offsets only.
Compact
This means that by default all elements of code are placed in one
segment but each element of data can be placed in its own physical
segment. This means that data elements are addressed by pointing at
both at the segment and offset addresses. Code elements (procedures)
are NEAR and variables are FAR.
Medium
This is the opposite to compact. Data elements are NEAR and
procedures are FAR.
Large
This means that both procedures and variables are FAR. You have to
point at both the segment and offset addresses.
Flat
This isn't used much as it is for 32 bit unsegmented memory space.
For this you need a DOS extender. This is what you would have to use
if you were writing a program to interface with a C/C++ program that
used a DOS extender such as DOS4GW or PharLap.
16
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
;
endm
These two examples are for macros that take away the boring job of
pushing and popping certain registers:
SaveRegs macro
pop ax
pop bx
pop cx
pop dx
endm
RestoreRegs macro
pop dx
pop cx
pop bx
pop ax
endm
Note that the registers are popped in the reverse order to they were
pushed. To use a macro in you program you just use the name of the
macro as an ordinary instruction:
SaveRegs
;some other instructions
RestoreRegs
This example shows how you can use a macro to save typing in. This
macro simply prints out a message to the screen.
OutMsg macro SomeText
local PrintMe,SkipData
jmp SkipData
PrintMe db SomeText,'$'
SkipData:
push ax dx ds cs
pop ds
mov dx,OFFSET cs:PrintMe
mov ah,9
int 21h
pop ds dx ax
endm
endm
The only problems with macros is that if you overuse them it leads
to you program getting bigger and bigger and that you have problems
with multiple definition of labels and variables. The correct way to
solve this problem is to use the LOCAL directive for declaring names
inside macros.
Syntax:
LOCAL name
Where name is the name of a local variable or label.
17
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
18
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
CF = 1 error has occured
AX = error code
01h missing file sharing software
02h file not found
03h path not found or file does not exist
04h no handle available
05h access denied
0Ch access mode not permitted
What does ASCIIZ mean? An ASCIIZ string like a ASCII string with a
zero on the end instead of a dollar sign.
Important: Remember to save the file handle it is needed for later.
How to save the file handle
It is important to save the file handle because this is needed to do
anything with the file. Well how is this done? There are two methods
we could use: copy the file handle into another register and don't
use that register or copy it to a variable in memory.
The disadvantages with the first method is that you will have to
remember not to use the register you saved it in and it wastes a
register that can be used for something more useful. We are going to
use the second. This is how it is done:
FileHandle DW 0
.
.
.
mov FileHandle,ax
=
=
=
=
0 function is successful
destroyed
1 function not successful
error code - 06h file not opened or unauthorised handle.
Important: Don't call this function with a zero handle because that
will close the standard input (the keyboard) and you won't be able
to enter anything.
Function 3Fh: read file/device
Reads bytes from a file or device to a buffer.
INPUT:
AH = 3Fh
BX = handle
CX = number of bytes to be read
DS:DX = segment:offset of a buffer
19
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
OUTPUT:
CF = 0 function is successful
AX = number of bytes read
CF = 1 an error has occurred
05h access denied
06h illegal handle or file not opened
If CF = 0 and AX = 0 then the file pointer was already at the end of
the file and no more can be read. If CF = 0 and AX is smaller than
CX then only part was read because the end of the file was reached
or an error occurred.
This function can also be used to get input from the keyboard. Use a
handle of 0, and it stops reading after the first carriage return,
or once a specified number of characters have been read. This is a
good and easy method to use to only let the user enter a certain
amount of characters.
Listing 7: READFILE.ASM
;a program to demonstrate creating a file and then writing to
;it
.model small
.stack
.code
mov ax,@data
mov ds,ax
;address of buffer in dx
;handle in bx
;amount of bytes to be read
;function 3Fh - read from file
;call dos service
;jump if carry flag set - error!
mov bx,Handle
mov ah,3Eh
int 21h
mov cx,100
mov si,OFFSET Buffer
xor bh,bh
mov ah,0Eh
;length of string
;DS:SI - address of string
;video page - 0
;function 0Eh - write character
NextChar:
lodsb
int 10h
loop NextChar
20
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
mov ax,4C00h
int 21h
ErrorOpening:
mov dx,offset OpenError
mov ah,09h
int 21h
mov ax,4C01h
int 21h
ErrorReading:
mov dx,offset ReadError
mov ah,09h
int 21h
mov ax,4C02h
int 21h
;terminate program
;display an error
;using function 09h
;call DOS service
;end program with an errorlevel =1
;display an error
;using function 09h
;call DOS service
;end program with an errorlevel =2
.data
Handle
FileName
DW ?
DB "C:\test.txt",0
OpenError
ReadError
Buffer
END
21
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
Size in bytes
0
21
22
24
26
30
21
1
2
2
4
13
Meaning
Reserved
File attributes
Time last modified
Date last modified
Size of file (in bytes)
File name (ASCIIZ)
DB "C:\file.txt",0
mov dx,OFFSET File
mov cx,3Fh
mov ah,4Eh
int 21h
jc NoFile
22
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
mov ah,09h
int 21h
mov bx,Handle
mov ah,3Eh
int 21h
ReturnToDOS:
mov ax,4C00h
int 21h
;terminate program
WriteError:
mov dx,offset WriteMessage ;display an error message
jmp EndError
OpenError:
mov dx,offset OpenMessage
jmp EndError
CreateError:
mov dx,offset CreateMessage
EndError:
mov ah,09h
int 21h
mov ax,4C01h
int 21h
.data
CR
LF
equ
equ
13
10
23
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
StartMessage
DB "This program creates a file called NEW.TXT"
DB ,"on the C drive.$"
EndMessage
DB CR,LF,"File create OK, look at file to"
DB ,"be sure.$"
WriteMessage DB "An error has occurred (WRITING)$"
OpenMessage
DB "An error has occurred (OPENING)$"
CreateMessage DB "An error has occurred (CREATING)$"
WriteMe
FileName
Handle
DB "C:\new.txt",0
DW ?
END
This is an example of how to delete a file after checking it exists:
Listing 9: DELFILE.ASM
;a demonstration of how to delete a file. The file new.txt on
;c: is deleted (this file is created by create.exe). We also
;check if the file exits before trying to delete it
.model small
.stack
.data
CR
LF
equ 13
equ 10
File
db "C:\new.txt",0
jmp EndOk
EndOk:
mov dx,OFFSET Deleted
jmp Endit
ErrorDeleting:
;display message
24
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
mov dx,OFFSET ErrDel
jmp Endit
FileDontExist:
mov dx,OFFSET NoFile
;display message
;display message
EndIt:
mov ah,9
int 21h
mov ax,4C00h
int 21h
end
USING THE FINDFIRST AND FINDNEXT FUNCTIONS
--------------------------------------------Listing 10: DIRC.ASM
;this program demonstrates how to look for files. It prints
;out the names of all the files in the c:\drive and names of
;the sub-directories
.model small
.stack
.data
FileName db "c:\*.*",0
;file name
DTA
db 128 dup(?)
;buffer to store the DTA
ErrorMsg db "An Error has occurred - exiting.$"
.code
mov ax,@data
mov ds,a
mov es,ax
mov cx,3Fh
mov dx,OFFSET FileName
mov ah,4Eh
int 21h
jc error
LoopCycle:
mov dx,OFFSET FileName
mov ah,4Fh
int 21h
jc exit
mov
mov
xor
mov
cx,13
si,OFFSET DTA+30
bh,bh
ah,0Eh
NextChar:
lodsb
25
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
int 10h
loop NextChar
mov
mov
xor
rep
di,OFFSET DTA+30
cx,13
al,al
stosb
jmp LoopCycle
error:
mov
mov
int
exit:
mov
int
;continue searching
dx,OFFSET ErrorMsg
ah,9
21h
ax,4C00h
21h
;exit to DOS
end
STRING INSTRUCTIONS
------------------------In assembly there are some very useful instructions for dealing with
strings. Here is a list of the instructions and the syntax for using
them:
MOV*
Syntax:
movsb
movsw
movsd
CMPS*
;move byte
;move word
;move double word
Compare string: compares byte, word or double word at
DS:SI to ES:DI
Syntax:
cmpsb
cmpsw
cmpsd
;compare byte
;compare word
;compare double word
;search for AL
;search for AX
;search for EAX
Note: This instruction is usually used with the REPZ or REPNZ prefix.
REP
26
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
Syntax:
rep StringInstruction
STOS*
Syntax:
stosb
stosw
stosd
LODS* Move byte, word or double word from DS:SI to AL, AX or EAX
Syntax:
lodsb
lodsw
lodsd
mov ah,9
mov dx,OFFSET Message1
int 21h
cld
mov
mov
mov
rep
si,OFFSET String1
di,OFFSET String2
cx,18
movsb
mov ah,9
mov dx,OFFSET Message2
int 21h
;display String1
;call DOS service
;display String2
;call DOS service
27
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
mov si,OFFSET Diff1
mov di,OFFSET Diff2
mov cx,39
repz cmpsb
jnz Not_Equal
mov ah,9
mov dx,OFFSET Message4
int 21h
jmp Next_Operation
Not_Equal:
mov ah,9
mov dx,OFFSET Message5
int 21h
Next_Operation:
mov di,OFFSET SearchString ;make es:di point to string
mov cx,36
;length of string
mov al,'H'
;character to search for
repne scasb
;find first match
jnz Not_Found
mov ah,9
mov dx,OFFSET Message6
int 21h
jmp Lodsb_Example
Not_Found:
mov ah,9
mov dx,OFFSET Message7
int 21h
Lodsb_Example:
mov ah,9
mov dx,OFFSET NewLine
int 21h
mov cx,17
;length of string
mov si,OFFSET Message
;DS:SI - address of string
xor bh,bh
;video page - 0
mov ah,0Eh
;function 0Eh - write character
NextChar:
lodsb
;AL = next character in string
int 10h
;call BIOS service
loop NextChar
mov ax,4C00h
int 21h
.data
CR equ 13
LF equ 10
String1 db "This is a string!$"
String2 db 18 dup(0)
;return to DOS
28
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
Diff1
Diff2
Equal1
Equal2
SearchString db "1293ijdkfjiu938uHello983fjkfjsi98934$"
Message db "This is a message"
Message1
Message2
Message3
Message4
Message5
Message6
Message7
db
db
db
db
db
db
db
NewLine
db CR,LF,"$"
end
HOW TO FIND OUT THE DOS VERSION
---------------------------------In many programs it is necessary to find out what the DOS version
is. This could be because you are using a DOS function that needs
the revision to be over a certain level.
Firstly this method simply finds out what the version is.
mov
int
ah,30h
21h
This function returns the major version number in AL and the minor
version number in AH. For example if it was version 4.01, AL would
be 4 and AH would be 01. The problem is that if on DOS 5 and higher
SETVER can change the version that is returned. The way to get round
this is to use this method.
mov
mov
int
ah,33h
al,06h
21h
This will only work on DOS version 5 and above so you need to check
using the former method. This will return the actual version of DOS
even if SETVER has changed the version. This returns the major
version in BL and the minor version in BH.
MULTIPLE PUSHES AND POPS
---------------------------You can push and pop more than one register on a line in TASM and
A86. This makes your code easier to understand.
push ax bx cx dx
pop dx cx bx ax
;save registers
;restore registers
29
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
= SP
ax
cx
dx
bx
temp
bp
si
di
30
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
.
Loop Label:
;save value of ax
;save value of bx
;save value of cx
mov ax,10
mov bx,20
mov cx,3
;first parameter is 10
;second parameter is 20
;third parameter is 3
Call ChangeNumbers
;call procedure
pop cx
pop bx
pop ax
;restore cx
;restore bx
;restore dx
mov ax,4C00h
int 21h
;exit to dos
ChangeNumbers PROC
add ax,bx
mul cx
mov dx,ax
ret
ChangeNumbers ENDP
;adds number in bx to ax
;multiply ax by cx
;return answer in dx
end start
Now compile it to a .COM file and then type:
31
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
td name of file
Turbo Debugger then loads. You can see the instructions that make up
your programs, for example the first few lines of this program is
shown as:
cs:0000 50
cs:0001 53
cs:0002 51
push
push
push
ax
bx
cx
Size Window
Next Instruction
Run
Step Backwards
The numbers that are moved into the registers are different that the
ones that in the source code because they are represented in their
hex form (base 16) as this is the easiest base to convert to and
from binary and that it is easier to understand than binary also.
At the left of this display there is a box showing the contents of
the registers. At this time all the main registers are empty. Now
press F7 this means that the first line of the program is run. As
the first line pushed the AX register into the stack, you can see
that the stack pointer (SP) has changed. Press F7 until the line
which contains mov ax,000A is highlighted. Now press it again. Now
if you look at the box which contains the contents of the registers
you can see that AX contains A. Press it again and BX now contains
14, press it again and CX contains 3. Now if you press F7 again you
can see that AX now contains 1E which is A+14. Press it again and
now AX contains 5A 1E multiplied by 3. Press F7 again and you will
see that DX now also contains 5A. Press it three more times and you
can see that CX, BX and AX are all set back to their original values
of zero.
;cursor col
;cursor row
;move cursor to the right place
;video page 0
;call bios service
;DS:DX points to message
;function 9 - display string
;call dos service
32
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
mov ax,4C00h
int 21h
Text
;exit to dos
This next example demonstrates how to write to the screen using the
file function 40h of interrupt 21h.
Listing 13: TEXT2.ASM
end start
.model small
.stack
.code
mov ax,@data
mov ds,ax
mov
mov
mov
mov
int
ah,40h
bx,1
cx,17
dx,OFFSET Text
21h
mov ax,4C00h
int 21h
.data
Text
end
The next program shows how to set up and call function 13h of
interrupt 10h - write string. This has the advantages of being able
to write a string anywhere on the screen in a specified colour but
it is hard to set up.
Listing 14: TEXT3.ASM
.model small
.stack
.code
mov ax,@data
mov es,ax
mov bp,OFFSET Text
mov
mov
xor
mov
mov
mov
mov
int
ah,13h
al,01h
bh,bh
bl,5
cx,17
dh,5
dl,5
10h
mov ax,4C00h
int 21h
.data
Text
end
33
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
DB "This is some text"
The next program demonstrates how to write to the screen using rep
stosw to put the writing in video memory.
Listing 15: TEXT4.ASM
.model small
.stack
.code
mov ax,0B800h
mov es,ax
xor di,di
mov ah,4
mov al,"G"
mov cx,4000
cld
rep stosw
mov ax,4C00h
int 21h
end
mov
mov
mov
xor
;attribute - cyan
;length of string to print
;DX:SI points to string
ah,3
cx,17
si,OFFSET Text
di,di
Wr_Char:
lodsb
mov es:[di],al
inc di
mov es:[di],ah
inc di
loop Wr_Char
mov ax,4C00h
int 21h
.data
Text
end
34
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
DB "This is some text"
call Check_Mode_13h
jc Error
mov ah,9
;function 9 - display string
mov dx,OFFSET Supported ;DS:DX points to message
int 21h
;call DOS service
jmp To_DOS
;exit to DOS
Error:
mov ah,9
;function 9 - display string
mov dx,OFFSET NoSupport ;DS:DX points to message
int 21h
;call DOS service
To_DOS:
mov ax,4C00h
int 21h
Check_Mode_13h PROC
mov ax,1A00h
int 10h
cmp al,1Ah
;exit to DOS
35
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
je Mode_13h_OK
stc
Mode_13h_OK:
ret
Check_Mode_13h ENDP
end
Just use this to check if mode 13h is supported at the beginning of
your program to make sure that you can go into that mode.
ax,13h
10h
Once we are in mode 13h and have finished what we are doing we need
to we need to set it to the video mode that it was in previously.
This is done in two stages. Firstly we need to save the video mode
and then reset it to that mode.
VideoMode
....
mov
int
mov
db ?
ah,0Fh
10h
VideoMode,al
al,VideoMode
ah,ah
10h
ax,4C00h
21h
Now that we can get into mode 13h lets do something. Firstly lets
put some pixels on the screen.
Function 0Ch: Write Graphics Pixel
This makes a colour dot on the screen at the specified graphics
coordinates.
INPUT:
AH
AL
CX
DX
=
=
=
=
0Ch
Color of the dot
Screen column (x coordinate)
Screen row (y coordinate)
OUTPUT:
Nothing except pixel on screen.
Note: This function performs exclusive OR (XOR) with the new colour
value and the current context of the pixel of bit 7 of AL is set.
36
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
;mode = 13h
;call bios service
mov
mov
mov
mov
int
ah,0Ch
al,4
cx,160
dx,100
10h
;function 0Ch
;color 4 - red
;x position = 160
;y position = 100
;call BIOS service
inc
int
inc
int
dec
int
dx
10h
cx
10h
dx
10h
;plot
;call
;plot
;call
;plot
;call
xor
int
mov
int
ax,ax
16h
ax,3
10h
mov ax,4C00h
int 21h
pixel downwards
BIOS service
pixel to right
BIOS service
pixel up
BIOS service
;exit to DOS
end start
SOME OPTIMIZATIONS
--------------------------------------------------------------------This method isn't too fast and we could make it a lot faster. How?
By writing direct to video memory. This is done quite easily.
The VGA segment is 0A000h. To work out where each pixel goes you use
this simple formula to get the offset.
Offset = X + ( Y x 320 )
All we do is to put a number at this location and there is now a
pixel on the screen. The number is what colour it is.
There are two instructions that we can use to put a pixel on the
screen, firstly we could use stosb to put the value in AL to ES:DI
or we can use a new form of the MOV instruction like this:
mov es:[di], color
37
Freshersworld.com
Guide to 80x86 Assembly
www.Freshersworld.com
Which should we use? When we are going to write pixels to the screen
we need to do so as fast as it is possible.
Instruction
Pentium
486
386
286
86
STOSB
MOV AL to SEG:OFF
3
1
5
1
4
4
3
3
11
10
If you use the MOV method you may need to increment DI (which STOSB
does).
[ put pixel instruction]
If we had a program which used sprites which need to be continuously
draw, erased and then redraw you will have problems with flicker. To
avoid this you can use a 'double buffer'. This is another part of
memory which you write to and then copy all the information onto the
screen.
Provided by
www.Freshersworld.com
First Job .. ! Dream Job .! Freshersworld.com
5. Display the ASCII characters set on the screen using DOS int10h
SourceCode
6. Accept names from kryboard and display them on the screen using Int21h
SourceCode
7. Using BIOS software interrrupts for video services, write a program to draw a
rectangle on the screen given the diagonal co-ordinates
SourceCode
1. Sort an array of signed integers and search for the presence of an item in the sorted
array using binary search
SourceCode
.MODEL SMALL
.STACK 64
DATA
SEGMENT
KEY
DB
NUM
DB
ARRAY
DB
DB
DB
DB
DB
04H
05H
05H
04H
03H
02H
01H
MID
MSG1
MSG2
MSG3
MSG4
DATA
DB
00H
DB 'PRESENT$'
DB 'ABSENT$'
DB 'SORTED LIST > $'
DB 'KEY > $'
ENDS
CODE
SEGMENT
ASSUME CS:CODE,DS:DATA
CALL CLS
MOV DX,0000H
CALL CURSOR
MOV AX,DATA
MOV DS,AX
;Bubble Sort
MOV DL,NUM
;counter1
DEC DL
JZ LOUT1
MOV CL,DL
;counter2
LEA BX,ARRAY
;pointer to first number
MOV AL,[BX]
CMP AL,[BX+1]
JS LESS
;ARRAY(I)<ARRAY(I+1)
XCHG AL,[BX+1];
MOV [BX],AL
INC BX
DEC CL
JNZ LIN2
JMP LIN1
;Display
LEA DX,MSG3
MOV AH,09H
INT 21H
START:
LIN1:
LIN2:
LESS:
LOUT1:
DISP1:
LEA BX,ARRAY
MOV CH,00H
MOV CL,NUM
MOV AL,[BX]
MOV AH,AL
PUSH BX
PUSH CX
CALL SHOW
POP CX
POP BX
INC BX
LOOP DISP1
MOV DX,0200H
CALL CURSOR
LEA DX,MSG4
MOV AH,09H
INT 21H
MOV AL,KEY
MOV AH,AL
CALL SHOW
MOV CX,01H
MOV DH,00H
MOV DL,NUM
LOOP1:
UHALF:
LHALF:
FOUND:
CMP DX,CX
JC NFOUND
MOV AX,CX
ADD AX,DX
SHR AX,1
MOV MID,AL
LEA BX,ARRAY
ADD BX,AX
DEC BX
MOV AL,[BX]
CMP AL,KEY
JE FOUND
JC LHALF
MOV DH,00H
MOV DL,MID
DEC DX
JMP LOOP1
MOV CH,00H
MOV CL,MID
INC CX
JMP LOOP1
LEA DX,MSG1
MOV AH,09H
INT 21H
JMP HALT
NFOUND: LEA
MOV
INT
HALT:
MOV
INT
CLS:
DX,MSG2
AH,09H
21H
AX,4C00H
21H
;CLEARS SCREEN
MOV AX,0600H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
RET
;Binary Search
;lower
;upper
;SET CURSOR
CURSOR: MOV AH,02H
MOV BH,00H
INT 10H
RET
SHOW:
MOV
AND
MOV
SHR
ADD
MOV
MOV
INT
MOV
MOV
INT
MOV
MOV
INT
RET
BX,AX
BX,0F00FH
CL,04H
BH,CL
BX,3030H
AH,02H
DL,BH
21H
AH,02H
DL,BL
21H
AH,02H
DL,' '
21H
CODE
ENDS
END START
.MODEL SMALL
.STACK 64
DATA
MSG
MSG1
MSG2
STRING
MAXLEN
STRLEN
STRFLD
DATA
SEGMENT
DB 'ENTER STRING TO BE CHECKED FOR PALINDROME > $'
DB 'YES ,A PALINDROME $'
DB 'NOT A PALINDROME $'
LABEL BYTE
DB 20
DB ?
DB 20 DUP(' ')
ENDS
CODE
SEGMENT
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
START:
CALL CLS
CALL CURSOR
CALL READ
CALL CLS
CALL CURSOR
LEA BX,STRFLD
MOV CH,00H
MOV CL,STRLEN
CMP CX,02H
JC PAL
MOV DX,BX
ADD DX,CX
DEC DX
SHR CX,1
AGAIN:
MOV AL,[BX]
XCHG BX,DX
CMP AL,[BX]
JNE NOTPAL
XCHG BX,DX
INC BX
DEC DX
LOOP AGAIN
PAL:
MOV
LEA
INT
JMP
AH,09H
DX,MSG1
21H
HALT
;clear screen
;set cursor at (0,0)
CLS:
MOV AX,4C00H
INT 21H
;terminate program
;CLEARS SCREEN
MOV AX,0600H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
RET
;SET CURSOR
CURSOR: MOV DX,0000H
MOV AH,02H
MOV BH,00H
INT 10H
RET
READ:
MOV AH,09H
LEA DX,MSG
INT 21H
MOV AH,0AH
LEA DX,STRING
INT 21H
RET
WRITE:
MOV AH,09H
LEA DX,STRFLD
INT 21H
RET
CODE
ENDS
END START
;display message
SEGMENT
DB 'ENTER A DIGIT > $'
DB 00H
DB '!=(hexadecimal) $'
DB 'INVALID INPUT or OVERFLOW $'
ENDS
CODE
SEGMENT
ASSUME CS:CODE,DS:DATA
CALL CLS
;clears screen
MOV DX,0000H
CALL CURSOR
;set cursor at (0,0) for number
MOV AX,DATA
MOV DS,AX
CALL INPUT
CALL CLS
MOV DX,0000H
CALL CURSOR
START:
CMP
JC
CMP
JNC
SUB
NUM,30H
INVALID
NUM,39H
INVALID
NUM,30H
MOV CL,NUM
MOV CH,00H
MOV AX,0001H
CALL FACT
PUSH AX
MOV AL,NUM
CALL PCHAR
MOV DX,0001H
CALL CURSOR
LEA DX,MSG2
MOV AH,09H
INT 21H
POP AX
PUSH AX
AND AX,0F000H
MOV CL,0CH
SHR AX,CL
CALL PCHAR
MOV DX,0012H
CALL CURSOR
POP AX
PUSH AX
AND AX,0F00H
MOV AL,AH
CALL PCHAR
MOV DX,0013H
CALL CURSOR
;CX=NUM
;AX=1 (AX used to hold factorial value)
;print number
;first digit
;print first digit
;set cursor at (18,0) for digit2
;second digit
;print second digit
;set cursor at (19,0) for digit3
POP AX
PUSH AX
AND AX,00F0H
MOV CL,04H
SHR AX,CL
CALL PCHAR
MOV DX,0014H
CALL CURSOR
POP AX
AND AX,000FH
CALL PCHAR
JMP HALT
INVALID:LEA
MOV
INT
HALT:
MOV
INT
CLS:
DX,MSG3
AH,09H
21H
AX,4C00H
21H
;third digit
;print third digit
;set cursor at (20,0) for digit4
;fourth digit
;print fourth digit
;terminate digit
;CLEARS SCREEN
MOV AX,0600H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
RET
LEA DX,MSG1
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
MOV NUM,AL
RET
FACT:
EXIT:
PCHAR:
L1:
CMP CX,02H
JC EXIT
PUSH CX
DEC CX
CALL FACT
POP CX
MUL CX
RET
;PRINTS CHARACTER AT CURRENT CURSOR POSITION
ADD AL,30H
CMP AL,3AH
JC L1
ADD AL,07H
MOV AH,09H
MOV BX,0007H
MOV CX,01H
INT 10H
RET
CODE
ENDS
END START
5. Display the ASCII characters set on the screen using DOS int10h
SourceCode
.MODEL SMALL
.STACK 64
DATA
NUM
DATA
SEGMENT
DB 00H
ENDS
CODE
SEGMENT
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
;initialize Data Segment register
MOV DS,AX
CALL CLS
;clear screen
MOV CX,0100H
;counter=256(number of ascii characters)
MOV DX,0000H
;cursor at top-left corner
PUSH CX
PUSH DX
CALL CURSOR
;cursor set for d1
MOV AL,NUM
AND AL,0F0H
MOV CL,04H
SHR AL,CL
;higher nibble of ascii index
ADD AL,30H
CMP AL,3AH
JC L1
ADD AL,07H
;ascii equivalent of higher nibble
CALL PCHAR
;print higher nibble
POP DX
INC DL
PUSH DX
CALL CURSOR
;cursor set for d2
MOV AL,NUM
AND AL,0FH
;lower nibble of ascii index
ADD AL,30H
CMP AL,3AH
JC L2
ADD AL,07H
;ascii equivalent of lower nibble
CALL PCHAR
;print lower nibble
POP DX
ADD DL,02H
PUSH DX
CALL CURSOR
;cursor set for ascii character
MOV AL,NUM
CALL PCHAR
;print ascii character
POP DX
POP CX
ADD DL,02H
CMP DL,50H
JC L3
MOV DL,00H
;new line
INC DH
INC NUM
;NUM holds next ascii character
LOOP AGAIN
MOV AX,4C00H
;terminate program
INT 21H
START:
AGAIN:
L1:
L2:
L3:
CLS:
;CLEARS SCREEN
MOV AX,0600H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
RET
PCHAR:
CODE
6. Accept names from kryboard and display them on the screen using Int21h
SourceCode
.MODEL SMALL
.STACK 64
DATA
NUM
DATA
SEGMENT
DB 00H
ENDS
CODE
SEGMENT
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
;initialize Data Segment register
MOV DS,AX
CALL CLS
;clear screen
MOV CX,0100H
;counter=256(number of ascii characters)
MOV DX,0000H
;cursor at top-left corner
PUSH CX
PUSH DX
CALL CURSOR
;cursor set for d1
MOV AL,NUM
AND AL,0F0H
MOV CL,04H
SHR AL,CL
;higher nibble of ascii index
ADD AL,30H
CMP AL,3AH
JC L1
ADD AL,07H
;ascii equivalent of higher nibble
CALL PCHAR
;print higher nibble
POP DX
INC DL
PUSH DX
CALL CURSOR
;cursor set for d2
MOV AL,NUM
AND AL,0FH
;lower nibble of ascii index
ADD AL,30H
CMP AL,3AH
JC L2
ADD AL,07H
;ascii equivalent of lower nibble
CALL PCHAR
;print lower nibble
POP DX
ADD DL,02H
PUSH DX
CALL CURSOR
;cursor set for ascii character
MOV AL,NUM
CALL PCHAR
;print ascii character
POP DX
POP CX
ADD DL,02H
CMP DL,50H
JC L3
MOV DL,00H
;new line
INC DH
INC NUM
;NUM holds next ascii character
LOOP AGAIN
MOV AX,4C00H
;terminate program
INT 21H
START:
AGAIN:
L1:
L2:
L3:
CLS:
;CLEARS SCREEN
MOV AX,0600H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
RET
PCHAR:
CODE
7. Using BIOS software interrrupts for video services, write a program to draw a
rectangle on the screen given the diagonal co-ordinates
SourceCode
.MODEL SMALL
.STACK 64
DATA
SEGMENT
MSG
DB 'ENTER(xleft,ytop,xright,ybottom) OF RECTANGLE > $'
TEN
DB 0AH
XL
DW 00H
YT
DW 00H
XR
DW 00H
YB
DW 00H
POINTS LABEL
BYTE
MAXPLEN
DB 20
PLEN
DB ?
POINTSFLD DB 20 DUP(' ')
DATA
ENDS
CODE
START:
SEGMENT
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
CALL CLS
CALL CURSOR
CALL INPUT
CALL CONVERT
MOV AH,0FH
INT 10H
PUSH AX
CALL SETMODE
CALL DRAW
CALL GETCH
POP AX
MOV AH,00H
INT 10H
MOV AX,4C00H
INT 21H
CLS:
;CLEARS SCREEN
MOV AX,0600H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
RET
;SET CURSOR
CURSOR: MOV DX,0000H
MOV AH,02H
MOV BH,00H
INT 10H
RET
INPUT:
SETMODE:MOV
MOV
INT
MOV
MOV
MOV
INT
AH,00H
AL,04H
10H
AH,0BH
BH,07
BL,02
10H
RET
DRAW:
DROW:
L1:
DCOL:
L2:
GETCH:
CODE
;DRAWS RECTANGLE
MOV CX,XL
MOV DX,YT
CALL DROW
MOV CX,XL
MOV DX,YB
CALL DROW
MOV CX,XL
MOV DX,YT
CALL DCOL
MOV CX,XR
MOV DX,YT
CALL DCOL
RET
;DRAWS HORIZONTAL EDGE OF RECTANGLE
MOV AH,0CH
MOV AL,01H
INT 10H
INC CX
CMP CX,XR
JNE L1
RET
;DRAWS VERTICAL EDGE OF RECTANGLE
MOV AH,0CH
MOV AL,01H
INT 10H
INC DX
CMP DX,YB
JNE L2
RET
;GET CHARACTER FROM KEYBOARD
MOV AH,10H
INT 16H
RET
ENDS
END START