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
Ans.E is 4
3.One of Mr. Horton,his wife,their son,and Mr. Horton's mother is a doctor and
another is a lawyer.
a)If the doctor is younger than the lawyer, then the doctor and the lawyer are
not blood relatives.
b)If the doctor is a woman, then the doctor and the lawyer are blood relatives.
c)If the lawyer is a man, then the doctor is a man.
Whose occupation you know?
Ans.q
6.Mr. and Mrs. Aye and Mr. and Mrs. Bee competed in a chess tournament.Of the
three games played:
a)In only the first game werethe two players married to each other.
b)The men won two games and the women won one game.
c)The Ayes won more games than the Bees.
d)Anyone who lost game did not play the subsequent game.
Who did not lose a game?
7.Three piles of chips--pile I consists one chip, pile II consists of chips, and pile
III consists of three chips--are to be used in game played by Anita and
Brinda.The game requires:
a)That each player in turn take only one chip or all chips from just one pile.
b)That the player who has to take the last chip loses.
c)That Anita now have her turn.
From which pile should Anita draw in order to win?
Ans.Pile II
Ans.Binoy's family--El.
9.In a class composed of x girls and y boys what part of the class is composed of
girls
A.y/(x + y)
B.x/xy
C.x/(x + y)
D.y/xy
Ans.C
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
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
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
A.1/4
B.1/2
C.1
D.2
Ans.C
(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
C. M/(D-3)
D. 3D/(M2-3M)
Ans. D
19. A company contracts to paint 3 houses. Mr.Brown can paint a house in 6 days
while Mr.Black would take 8 days and Mr.Blue 12 days. After 8 days Mr.Brown
goes on vacation and Mr. Black begins to work for a period of 6 days. How many
days will it take Mr.Blue to complete the contract?
A. 7
B. 8
C. 11
D. 12
Ans.C
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
A.-5
B. 4
C. 2
D. 8
Ans. D
22. There are 5 red shoes, 4 green shoes. If one draw randomly a shoe what is
the probability of getting a red shoe
23. What is the selling price of a car? If the cost of the car is Rs.60 and a profit
of 10% over selling price is earned
Ans: Rs 66/-
24. 1/3 of girls , 1/2 of boys go to canteen .What factor and total number of
classmates go to canteen.
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.
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.
Ans : 15%
34. A worker is paid Rs.20/- for a full days work. He works 1,1/3,2/3,1/8.3/4
days in a week. What is the total amount paid for that worker ?
Ans : 57.50
35. If the value of x lies between 0 & 1 which of the following is the largest?
(a) x
(b) x2
(c) -x
(d) 1/x
Ans : (d)
36. If the total distance of a journey is 120 km .If one goes by 60 kmph and
comes back at 40kmph what is the average speed during the journey?
Ans: 48kmph
37. A school has 30% students from Maharashtra .Out of these 20% are Bombey
students. Find the total percentage of Bombay?
Ans: 6%
38. An equilateral triangle of sides 3 inch each is given. How many equilateral
triangles of side 1 inch can be formed from it?
Ans: 9
Ans : 9B
40. Each side of a rectangle is increased by 100% .By what percentage does the
area increase?
Ans : 300%
41. Perimeter of the back wheel = 9 feet, front wheel = 7 feet on a certain
distance, the front wheel gets 10 revolutions more than the back wheel .What is
the distance?
42. Perimeter of front wheel =30, back wheel = 20. If front wheel revolves 240
times. How many revolutions will the back wheel take?
43. 20% of a 6 litre solution and 60% of 4 litre solution are mixed. What
percentage of the mixture of solution
Ans: 36%
44City A's population is 68000, decreasing at a rate of 80 people per year. City B
having population 42000 is increasing at a rate of 120 people per year. In how
many years both the cities will have same population?
45Two cars are 15 kms apart. One is turning at a speed of 50kmph and the other
at 40kmph . How much time will it take for the two cars to meet?
46A person wants to buy 3 paise and 5 paise stamps costing exactly one rupee. If
he buys which of the following number of stamps he won't able to buy 3 paise
stamps.
Ans: 9
47There are 12 boys and 15 girls, How many different dancing groups can be
formed with 2 boys and 3 girls.
(a) 22/62
(b) 15/46
(c) 2/3
(d) 1
Ans: (b)
49There are two circles, one circle is inscribed and another circle is circumscribed
over a square. What is the ratio of area of inner to outer circle?
Ans: 1 : 2
50Three types of tea the a,b,c costs Rs. 95/kg,100/kg and70/kg respectively.
How many kgs of each should be blended to produce 100 kg of mixture worth
Rs.90/kg,
given that the quntities of band c are equal
a)70,15,15
b)50,25,25
c)60,20,20
d)40,30,30
Ans. (b)
(a) 30
(b) 33
(c) 36
(d) none of these.
Ans. (d)
(a) 13 km/hr
(b) 26 km/hr
(c) 34 km/hr
(d) none of these
Ans. A
53. Find the value of ( 0.75 * 0.75 * 0.75 - 0.001 ) / ( 0.75 * 0.75 - 0.075 +
0.01)
(a) 0.845
(b) 1.908
(c) 2.312
(d) 0.001
Ans. A
54. A can have a piece of work done in 8 days, B can work three times faster
than the A, C can work five times faster than A. How many days will they take to
do the work together ?
(a) 3 days
(b) 8/9 days
(c) 4 days
(d) can't say
Ans. B
55. A car travels a certain distance taking 7 hrs in forward journey, during the
return journey increased speed 12km/hr takes the times 5 hrs.What is the
distance travelled
Ans. B
(a) 6
(b) 8
(c) 7
(d) data insufficient
Ans. C
58. A man buys 12 lts of liquid which contains 20% of the liquid and the rest is
water. He then mixes it with 10 lts of another mixture with 30% of liquid.What is
the % of water in the new mixture?
59. If a man buys 1 lt of milk for Rs.12 and mixes it with 20% water and sells it
for Rs.15, then what is the percentage of gain?
60. Pipe A can fill a tank in 30 mins and Pipe B can fill it in 28 mins.If 3/4th of the
tank is filled by Pipe B alone and both are opened, how much time is required by
both the pipes to fill the tank completely ?
61. If on an item a company gives 25% discount, they earn 25% profit. If they
now give 10% discount then what is the profit percentage.
(a) 40%
(b) 55%
(c) 35%
(d) 30%
Ans. D
62. A certain number of men can finish a piece of work in 10 days. If however
there were 10 men less it will take 10 days more for the work to be finished. How
many men were there originally?
Ans. A
63. In simple interest what sum amounts of Rs.1120/- in 4 years and Rs.1200/-
in 5 years ?
Ans. C
(a) 6
(b) 8
(c) 10
(d) 12
Ans A
65. Two trains move in the same direction at 50 kmph and 32 kmph respectively.
A man in the slower train
observes the 15 seconds elapse before the faster train completely passes by him.
What is the length of faster train ?
(a) 100m
(b) 75m
(c) 120m
(d) 50m
Ans B
66. How many mashes are there in 1 squrare meter of wire gauge if each mesh
is 8mm long and 5mm wide ?
(a) 2500
(b) 25000
(c) 250
(d) 250000
Ans B
67. x% of y is y% of ?
(a) x/y
(b) 2y
(c) x
(d) can't be determined
Ans. C
68. The price of sugar increases by 20%, by what % should a housewife reduce
the consumption of sugar so that expenditure on sugar can be same as before ?
(a) 15%
(b) 16.66%
(c) 12%
(d) 9%
Ans B
69. A man spends half of his salary on household expenses, 1/4th for rent, 1/5th
for travel expenses, the man deposits the rest in a bank. If his monthly deposits
in the bank amount 50, what is his monthly salary ?
(a) Rs.500
(b) Rs.1500
(c) Rs.1000
(d) Rs. 900
Ans C
71. The ratio of the number of boys and girls in a school is 3:2 Out of these 10%
the boys and 25% of girls are scholarship holders. % of students who are not
scholarship holders.?
72. 15 men take 21 days of 8 hrs. each to do a piece of work. How many days of
6 hrs. each would it take for 21 women if 3 women do as much work as 2 men?
(a) 30
(b) 20
(c) 19
(d) 29
Ans. A
73. A cylinder is 6 cms in diameter and 6 cms in height. If spheres of the same
size are made from the material obtained, what is the diameter of each sphere?
(a) 5 cms
(b) 2 cms
(c) 3 cms
(d) 4 cms
Ans C
74. A rectangular plank (2)1/2 meters wide can be placed so that it is on either
side of the diagonal of a square shown below.(Figure is not available)What is the
area of the plank?
Ans :7*(2)1/2
75. The difference b/w the compound interest payble half yearly and the simple
interest on a
certain sum lent out at 10% p.a for 1 year is Rs 25. What is the sum?
(a) Rs. 15000
(b) Rs. 12000
(c) Rs. 10000
(d) none of these
Ans C
76. What is the smallest number by which 2880 must be divided in order to make
it into a
perfect square ?
(a) 3
(b) 4
(c) 5
(d) 6
Ans. C
77. A father is 30 years older than his son however he will be only thrice as old
as the son after 5 years
what is father's present age ?
(a) 40 yrs
(b) 30 yrs
(c) 50 yrs
(d) none of these
Ans. A
78. An article sold at a profit of 20% if both the cost price and selling price would
be Rs.20/- the profit would be 10% more. What is the cost price of that article?
29. If an item costs Rs.3 in '99 and Rs.203 in '00.What is the % increase in price?
(a) 200/3 %
(b) 200/6 %
(c) 100%
(d) none of these
Ans. A
80. 5 men or 8 women do equal amount of work in a day. a job requires 3 men
and 5 women to finish the job in 10 days how many woman are required to finish
the job in 14 days.
a) 10
b) 7
c) 6
d) 12
Ans 7
81. A simple interest amount of rs 5000 for six month is rs 200. what is the anual
rate of interest?
a) 10%
b) 6%
c) 8%
d) 9%
Ans 8%
82. In objective test a correct ans score 4 marks and on a wrong ans 2 marks are
---. a student score 480 marks from 150 question. how many ans were
correct?
a) 120
b) 130
c) 110
d) 150
Ans130.
83. An artical sold at amount of 50% the net sale price is rs 425 .what is the list
price of the artical?
a) 500
b) 488
c) 480
d) 510
Ans 500
84. A man leaves office daily at 7pm A driver with car comes from his home to
pick him from office and bring back home
One day he gets free at 5:30 and instead of waiting for driver he starts
walking towards home.
In the way he meets the car and returns home on car He reaches home 20
minutes earlier than usual.
In how much time does the man reach home usually??
85. A works thrice as much as B. If A takes 60 days less than B to do a work then
find the number of days it would take to complete the work if both work
together?
Ans. 22½days
86. How many 1's are there in the binary form of 8*1024 + 3*64 + 3
Ans. 4
Ans. 16
89. If there are 1024*1280 pixels on a screen and each pixel can have around 16
million colors
Find the memory required for this?
Ans. 4MB
90. On a particular day A and B decide that they would either speak the truth or
will lie.
C asks A whether he is speaking truth or lying?
He answers and B listens to what he said. C then asks B what A has said B
says "A says that he is a liar"
What is B speaking ?
(a) Truth
(b) Lie
(c) Truth when A lies
(d) Cannot be determined
Ans. (b)
91. What is the angle between the two hands of a clock when time is 8:30
Ans. 75(approx)
92. A student is ranked 13th from right and 8th from left. How many students are
there in totality ?
93. A man walks east and turns right and then from there to his left and then
45degrees to
his right.In which direction did he go
94. A student gets 70% in one subject, 80% in the other. To get an overall of
75% how much should get in third subject.
95. A man shows his friend a woman sitting in a park and says that she the
daughter of my grandmother's only son.
What is the relation between the two
Ans. Daughter
96. How many squares with sides 1/2 inch long are needed to cover a rectangle
that is 4 ft long and 6 ft wide
(a) 24
(b) 96
(c) 3456
(d) 13824
(e) 14266
(a) 8/27
(b) 4/9
(c) 2/3
(d) 75%
(e) 4/3
Ans. (b)
(a) 30%
(b) 32%
(c) 34%
(d) 35%
(e) 36
Ans. (b)
99. The petrol tank of an automobile can hold g liters.If a liters was removed
when the tank was full, what part of the full tank was removed?
(a)g-a
(b)g/a
(c) a/g
(d) (g-a)/a
(e) (g-a)/g
Ans. (c)
(a)150%
(b)175%
(c)200%
(d)250%
Ans. (b)
Aptitude Questions
1.If 2x-y=4 then 6x-3y=?
(a)15
(b)12
(c)18
(d)10
Ans. (b)
(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
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)
(a) 12
(b) 20
(c) 8
(d) none of these
Ans. (c)
Ans. (b)
Ans. (a)
9. Mr. Shah decided to walk down the escalator of a tube station. He found that
if he walks down 26 steps, he requires 30 seconds to reach the bottom. However,
if he steps down 34 stairs he would only require 18 seconds to get to the bottom.
If the time is measured from the moment the top step begins to descend to the
time he steps off the last step at the bottom, find out the height of the stair way
in steps?
Ans.46 steps.
10. The average age of 10 members of a committee is the same as it was 4 years
ago, because an old member has been replaced by a young member. Find how
much younger is the new member ?
Ans.40 years.
Ans. AE = 10.
13. In the given figure, PA and PB are tangents to the circle at A and B
respectively and the chord BC is parallel to tangent PA. If AC = 6 cm, and
length of the tangent AP is 9 cm, then what is the length of the chord BC?
Ans. BC = 4 cm.
15 Three cards are drawn at random from an ordinary pack of cards. Find the
probability that they will consist of a king, a queen and an ace.
Ans. 64/2210.
16. A number of cats got together and decided to kill between them 999919
mice. Every cat killed an equal number of mice. Each cat killed more mice than
there were cats. How many cats do you think there were ?
Ans. 991.
17. If Log2 x - 5 Log x + 6 = 0, then what would the value / values of x be?
Ans. x = e2 or e3.
18. The square of a two digit number is divided by half the number. After 36 is
added to the quotient, this sum is then divided by 2. The digits of the resulting
number are the same as those in the original number, but they are in reverse
order. The ten's place of the original number is equal to twice the difference
between its digits. What is the number?
Ans. 46
19.Can you tender a one rupee note in such a manner that there shall be total
50 coins but none of them would be 2 paise coins.?
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.
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?
23. A wizard named Nepo says "I am only three times my son's age. My father
is 40 years more than twice my age. Together the three of us are a mere 1240
years old." How old is Nepo?
24. One dog tells the other that there are two dogs in front of me. The other one
also shouts that he too had two behind him. How many are they?
Ans. Three.
25. A man ate 100 bananas in five days, each day eating 6 more than the
previous day. How many bananas did he eat on the first day?
Ans. Eight.
26. If it takes five minutes to boil one egg, how long will it take to boil four eggs?
27. The minute hand of a clock overtakes the hour hand at intervals of 64
minutes of correct time. How much a day does the clock gain or lose?
28. Solve for x and y: 1/x - 1/y = 1/3, 1/x2 + 1/y2 = 5/9.
29. Daal is now being sold at Rs. 20 a kg. During last month its rate was Rs. 16
per kg. By how much percent should a family reduce its consumption so as to
keep the expenditure fixed?
Ans. 20 %.
Ans. 10.
31. Can you find out what day of the week was January 12, 1979?
Ans. Friday.
32. A garrison of 3300 men has provisions for 32 days, when given at a rate of
850 grams per head. At the end of 7 days a reinforcement arrives and it was
found that now the provisions will last 8 days less, when given at the rate of 825
grams per head. How, many more men can it feed?
33. From 5 different green balls, four different blue balls and three different red
balls, how many combinations of balls can be chosen taking at least one green
and one blue ball?
Ans. 3720.
34. Three pipes, A, B, & C are attached to a tank. A & B can fill it in 20 & 30
minutes respectively while C can empty it in 15 minutes. If A, B & C are kept
open successively for 1 minute each, how soon will the tank be filled?
35. A person walking 5/6 of his usual rate is 40 minutes late. What is his usual
time? Ans. 3 hours 20 minutes.
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.
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 ?
Ans. (a)
4. In choosing between the use of the bridge and the tunnel the chief factor(s)
would be:
I. Traffic and road conditions
II. Number of passengers in the car
III. Location of one's homes in the center or outskirts of one of the cities
IV. Desire to save $0.25
(a) I only
(b) II only
(c) II and III only
(d) III and IV only
(e) I and II only
Ans. (a)
Ans. (a)
Ans. (a)
(c) 12
(d) 14
(e) 16
Ans. (a)
4. A - F = ?
(a) 1
(b) 2
(c) 3
(d) 4
(e) Cannot be determined
Ans. (a)
Ans. (a)
6. The greatest possible value of C is how much greater than the smallest
possible value of D?
(a) 2
(b) 3
(c) 4
(d) 5
(e) 6
Ans. (a)
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
(d) If any P is an H it is a G
(e) If any P is a G it is a J
Ans. (a)
2. Which of the following can be logically deduced from the conditions stated?
Ans. (a)
Ans. (a)
(a) I only
(b) II only
(c) III only
(d) II and III only
(e) Neither I, II nor III
Ans. (a)
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
be true
(a) Some of the staff members within that office are justice party members
(b) Some of the staff members within that office are democratic party members
(c) Two of the deputies within the other offices are justice party members
(d) Two of the deputies within the other offices are conservative party members
(e) Some of the staff members within the other offices are justice party
members.
Ans. (a)
2. When the democratic party holds presidency, the staff of the prime minister's
deputies are composed
I. One-fourth of democratic party members
II. One-half of justice party members and one-fourth of conservative party
members
III. One-half of conservative party members and one-fourth of justice party
members.
(a) I only
(b) I and II only
(c) II or III but not both
(d) I and II or I and III
(e) None of these
Ans. (a)
(a) More than half of the staff within a given office belonging to a single party
(b) Half of the staff within a given office belonging to a single party
(c) Any person having a member of the same party as his or her immediate
superior
(d) Half the total number of staff members in all three offices belonging to a
single party
(e) Half the staff members in a given office belonging to parties different from the
party of the top office holder in that office.
Ans. (a)
4. The office of the Army Chief passes from Conservative to Justice party. Which
of the following must be fired.
(a) The democratic deputy and all staff members belonging to Justice party
(b) Justice party deputy and all his or hers staff members
(c) Justice party deputy and half of his Conservative staff members in the chief of
staff office
(d) The Conservative deputy and all of his or her staff members belonging to
Conservative party
(e) No deputies and all staff members belonging to conservative parties.
Ans. (a)
(a) I only
(b) II only
(c) I or II but not both
(d) I, II and III
(e) None
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
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
C.3
D.4
Ans.A
3.If C is sent to the new office,which member of the staff cannot go with C
A.B
B.D
C.F
D.G
Ans.B
4.Under the guidelines developed,which of the following must go to the new office
A.B
B.D
C.E
D.G
Ans.A
I.C cannot go
II.A cannot go
III.H must also go
A.I only
B.II only
C.I and II only
D.I and III only
Ans.D
VI.Because of travel difficulties it was agreed that C will appear for only 1
interview.
1.At the first interview the following candidates appear A,B,D.Which of the
follwing combinations can be called for the interview to be held next week.
A.BCD
B.CDE
C.ABE
D.ABC
Ans.B
A.ABC;BDE
B.ABD;ABE
C.ADE;ABC
D.BDE;ACD
Ans.C
3.If A ,B and D appear for the interview and D is called for additional interview
the following week,which 2 candidates may be asked to appear with D?
I. A
II B
III.C
IV.E
A.I and II
B.I and III only
C.II and III only
D.III and IV only
Ans.D
4.Which of the following correctly state(s) the procedure followed by the search
committee
I.After the second interview all applicants have appeared at least once
II.The committee sees each applicant a second time
III.If a third session,it is possible for all applicants to appear at least twice
A.I only
B.II only
C.III only
D.Both I and II
Ans.A
43. A certain city is served by subway lines A,B and C and numbers 1 2 and 3
When it snows , morning service on B is delayed
When it rains or snows , service on A, 2 and 3 are delayed both in the morning
and afternoon
When temp. falls below 30 degrees farenheit afternoon service is cancelled in
either the A line or the 3 line,
but not both.
When the temperature rises over 90 degrees farenheit, the afternoon service is
cancelled in either the line C or the
3 line but not both.
When the service on the A line is delayed or cancelled, service on the C line which
connects the A line, is delayed.
When service on the 3 line is cancelled, service on the B line which connects the
3 line is delayed.
Q1. On Jan 10th, with the temperature at 15 degree farenheit, it snows all day.
On how many lines will service be
affected, including both morning and afternoon.
(A) 2
(B) 3
(C) 4
(D) 5
Ans. D
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.
Ans. B
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
(A) I only
(B) III only
(C) I, II and III
(D) I and II only
Ans. D
Ans. A
Q3. Which of the following is not permitted under the rules as stated.
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)
Ans. D
45. There are six steps that lead from the first to the second floor. No two people
can be on the same step
Mr. A is two steps below Mr. C
Mr. B is a step next to Mr. D
Only one step is vacant ( No one standing on that step )
Denote the first step by step 1 and second step by step 2 etc.
Ans: (d)
2. If Mr. E was on the third step & Mr. B was on a higher step than Mr. E which
step must be vacant
(a) step 1
(b) step 2
(c) step 4
(d) step 5
(e) step 6
Ans: (a)
Ans: (c)
4. If there were two steps between the step that A was standing and the step
that B was standing on, and A was on a higher step than D , A must be on step
(a) 2
(b) 3
(c) 4
(d) 5
(e) 6
Ans: (c)
(a) i only
(b) ii only
(c) iii only
(d) both i and iii
Ans: (c)
Ans: (e)
Ans: (d)
(d) B
(e) A
Ans: (a)
4. If the end of the race, swimmer D is disqualified by the Judges then swimmer
B finishes in which place
(a) 1
(b) 2
(c) 3
(d) 4
(e) 5
Ans: (b)
47. Five houses lettered A,B,C,D, & E are built in a row next to each other. The
houses are lined up in the order A,B,C,D, & E. Each of the five houses has a
colored chimney. The roof and chimney of each housemust be painted as follows.
i. The roof must be painted either green,red ,or yellow.
ii. The chimney must be painted either white, black, or red.
iii. No house may have the same color chimney as the color of roof.
iv. No house may use any of the same colors that the every next house uses.
v. House E has a green roof.
vi. House B has a red roof and a black chimney
Ans: (c)
Ans: (b)
Ans: (a)
(a) I only
(b) II only
(c) III only
(d) I & II only
(e) I&II&III
Ans: (e)
Ans: (b)
Ans: (e)
Ans: (e)
Verbal
1. Depreciation: deflation, depression, devaluation, fall, slump
7. Detrimental: harmful
Ans. (a)
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
Ans. (a)
80. glossary:words ::
(a) catalogue:dates
(b) atlas:maps
(c) almanac:synonyms
(d) thesaurus:rhymes
(e) lexicon:numbers
Ans. (a)
(a) roost:hen
(b) bray:donkey
(c) waddle:goose
(d) swoop:hawk
(e) chirp:sparrow
Ans. (a)
82. celerity:snail ::
(a) indolence:sloth
(b) cunning:weasel
(c) curiosity:cat
(d) humility:peacock
(e) obstinacy:mule
Ans. (a)
83. wood:sand ::
(a) coal:burn
(b) brick:lay
(c) oil:polish
(d) metal:burnish
(e) stone:quarry
Ans. (a)
84. carpenter:saw ::
(a) stenographer:typist
(b) painter:brush
(c) lawyer:brief
(d) runner:sneakers
(e) seamstress:scissors
Ans. (a)
85. horns:bull ::
(a) mane:lion
(b) wattles:turkey
(c) antlers:stag
(d) hooves:horse
(e) wings:eagle
Ans. (a)
86. gullible:duped ::
(a) credible:cheated
(b) careful:cautioned
(c) malleable:moulded
(d) myopic:mislead
(e) articulate:silenced
Ans. (a)
87. marathon:stamina ::
(a) relay:independence
(b) hurdle:perseverance
(c) sprint:celerity
(d) job:weariness
(e) ramble:directness
Ans. (a)
88. Skin:man ::
(a) hide:animal
(b) jump:start
(c) peel:potato
(d) eat:food
(e) wool:cloth
Ans. (a)
89. Bamboo:Shoot ::
(a) Bean:Sprout
(b) Peas:Pod
(c) Potato:Eye
(d) Carrot:Root
(e) Leaf:Stem
Ans. (a)
90. Deflect:Missile ::
(a) Siege:Castle
(b) Distract:Attraction
(c) Protect:Honour
(d) Drop:Catch
(e) Score:Goal
Ans. (a)
91. Editor:magazine ::
(a) captain:ship
(b) actor:movie
(c) director:film
(d) player:team
(e) jockey:horse
Ans. (a)
(a) Fault:earthquate
(b) crack:wall
(c) tunnel:dig
(d) water:swim
(e) floor:polish
Ans. (a)
93. Disregarded
(a) heed
(b) hopeful
(c) evade
(d) dense
Ans. (a)
94. Obviate
(a) becloud
(b) necessitate
(c) rationalize
(d) execute
Ans. (b)
95. Superficial
(a) profound
(b) exaggerated
(c) subjective
(d) spirited
Ans. (a)
A
Aptitude Questions
Solve the following and check with the answers given at the end.
men to another project. How much longer will it take to complete the work?
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.
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
team. For a team of four, all players must be able to play with each other
under the following restrictions:
b should not play with m,
c should not play with p, and
a should not play with o.
Which of the following statements must be false?
1. b and p cannot be selected together
2. c and o cannot be selected together
3. c and n cannot be selected together.
10-12. The following figure depicts three views of a cube. Based on this,
answer questions 10-12.
6 5 4
1 22 3 6
2 2 3
10. The number on the face opposite to the face carrying 1 is _______ .
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.
(3) The science fiction novel is by Burchfield and is not published by Blueja.
(4)The Gothic romance is by Hopper.
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. Ashland is north of East Liverpool and west of Coshocton.
2. Bowling green is north of Ashland and west of Fredericktown.
3. Dover is south and east of Ashland.
4. East Liverpool is north of Fredericktown and east of Dover.
5. Fredericktown is north of Dover and west of Ashland.
24. Which of the following must be both north and east of Fredericktown?
(a) Ashland (b) Coshocton (c) East Liverpool
I a only II b only III c only IV a & b Va&c
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. Which of the numbered statements gives information that can be deduced
from one or more of the other statements?
(A) 1 (B) 2 (C) 3 (D) 4 (E) 6
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. If every alternative letter starting from B of the English alphabet is written in
small letter, rest all are written in capital letters, how the month “ September”
be written.
(1) SeptEMbEr (2) SEpTeMBEr (3) SeptembeR
(4) SepteMber (5) None of the above.
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 _______.
31. It takes Mr. Karthik y hours to complete typing a manuscript. After 2 hours,
he was called away. What fractional part of the assignment was left
incomplete?
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 = 1 / 20
One man’s one day work = 1 / ( 20 * 75)
Now:
No. Of workers = 50
One day work = 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
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 day’s work = 2 / (7 * 90)
One hour’s work = 2 / (7 * 90 * 8)
One man’s work = 2 / (7 * 90 * 8 * 75)
We get x = 225
Since we have 75 men already, it is enough to add only 150 men.
7. 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.
X = 2*y -----------------(1)
In the second sale, he lost Rs. 10. (i.e.) The loss is greater than the profit by
Rs. 10.
9. 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=c–1=d+3=e–6
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 C’s orchard is 11 and that of D’s 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
Answer:
Novel Name Author Publisher
Spy thriller Rathko Heron
Murder mystery Gorky Piegon
Gothic romance Burchfield Blueja
Science fiction Hopper Sparrow
Explanation:
Given
Novel Name Author Publisher
Spy thriller Rathko Heron
Murder mystery Gorky Piegon
Gothic romance Burchfield Blueja
Science fiction Hopper Sparrow
19. 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
Ahmed
23 - 27.Answer:
Fakis Chandra
28. Answer: Fakis
Explanation: 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)
33. 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 Gauri
Finally 24 24 24
Before Gauri’s transaction 12 12 48
Before Arvind’s transaction 6 42 24
Before Sudhir’ s transaction 39 21 12
35. 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
Answer : a) 336
Explanation : The series is 1.2.3, 2.3.4, 3.4.5, 4.5.6, 5.6.7, ..... ( '.' means
product)
2. 1, 5, 13, 25
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
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
Exercise 2.2
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
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.
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?
7. What is the sum of all numbers between 100 and 1000 which are divisible by 14 ?
Answer : 35392
Explanation : The number closest to 100 which is greater than 100 and
divisible by 14 is 112, which is the first term of the series which has to be summed.
The number closest to 1000 which is less than 1000 and divisible by 14
is 994, which is the last term of the series.
112 + 126 + .... + 994 = 14(8+9+ ... + 71) = 35392
8. If s(a) denotes square root of a, find the value of s(12+s(12+s(12+ ...... upto
infinity.
Answer : 4
Explanation : Let x = s(12+s(12+s(12+.....
We can write x = s(12+x). i.e., x^2 = 12 + x. Solving this quadratic equation,
we get x = -3 or x=4. Sum cannot be -ve and hence sum = 4.
9. A cylindrical container has a radius of eight inches with a height of three inches.
Compute how many inches should be added to either the radius or height to give the
same increase in volume?
Answer : 16/3 inches
Explanation : Let x be the amount of increase. The volume will increase by
the same amount if the radius increased or the height is increased.
So, the effect on increasing height is equal to the effect on increasing the
radius.
i.e., (22/7)*8*8*(3+x) = (22/7)*(8+x)*(8+x)*3
Solving the quadratic equation we get the x = 0 or 16/3. The possible increase
would be by 16/3 inches.
10. With just six weights and a balance scale, you can weigh any unit number of kgs
from 1 to 364. What could be the six weights?
Answer : 1, 3, 9, 27, 81, 243 (All powers of 3)
11. Diophantus passed one sixth of his life in childhood, one twelfth in youth, and one
seventh more as a bachelor; five years after his marriage a son was born who died
four years before his father at half his final age. How old is Diophantus?
Answer : 84 years
Explanation : x/6 + x/12 + x/7 + 5 + x/2 + 4 = x
12 . If time at this moment is 9 P.M., what will be the time 23999999992 hours later?
Answer : 1 P.M.
13. How big will an angle of one and a half degree look through a glass that
magnifies things three times?
Answer : 1 1/2 degrees
Explanation : The magnifying glass cannot increase the magnitude of an
angle.
14. Divide 45 into four parts such that when 2 is added to the first part, 2 is subtracted
from the second part, 2 is multiplied by the third part and the fourth part is divided by
two, all result in the same number.
Answer: 8, 12, 5, 20
Explanation: a + b + c + d =45; a+2 = b-2 = 2c = d/2; a=b-4; c = (b-2)/2;
d = 2(b-2); b-4 + b + (b-2)/2 + 2(b-2) = 45;
16. Which of the following can act as interpreter if Mr. C & Mr. D wish to converse
a) only Mr. A b) Only Mr. B c) Mr. A & Mr. B d) Any of the other three
Exercise 3
Try the following.
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?
4. In a group of five people, what is the probability of finding two persons with
the same month of birth?
5. A father and his son go out for a 'walk-and-run' every morning around a track
formed by an equilateral triangle. The father's walking speed is 2 mph and his
running speed is 5 mph. The son's walking and running speeds are twice that
of his father. Both start together from one apex of the triangle, the son going
clockwise and the father anti-clockwise. Initially the father runs and the son
walks for a certain period of time. Thereafter, as soon as the father starts
walking, the son starts running. Both complete the course in 45 minutes. For
how long does the father run? Where do the two cross each other?
6. The Director of Medical Services was on his annual visit to the ENT Hospital.
While going through the out patients' records he came across the following
data for a particular day : " Ear consultations 45; Nose 50; Throat 70; Ear and
Nose 30; Nose and Throat 20; Ear and Throat 30; Ear, Nose and Throat 10;
Total patients 100." Then he came to the conclusion that the records were
bogus. Was he right?
7. Amongst Ram, Sham and Gobind are a doctor, a lawyer and a police officer.
They are married to Radha, Gita and Sita (not in order). Each of the wives
have a profession. Gobind's wife is an artist. Ram is not married to Gita. The
lawyer's wife is a teacher. Radha is married to the police officer. Sita is an
expert cook. Who's who?
10. Which of the following groups of three can sit together on a bench?
(a) Freddy, Jonathan and Marta (b) Freddy, Jonathan and Vicky
(c) Freddy, Sarah and Vicky (d) Hillary, Lupe and Sarah
(e) Lupe, Marta and Roberto
11. If Freddy sits immediately beside Vicky, which of the following cannot be
true ?
a. Jonathan sits immediately beside Sarah
b. Lupe sits immediately beside Vicky
c. Hillary sits in the front passenger seat
d. Freddy sits on the same bench as Hillary
e. Hillary sits on the same bench as Roberto
12. If Sarah sits on a bench that is behind where Jonathan is sitting, which of the
following must be true ?
a. Hillary sits in a seat or on a bench that is in front of where Marta is
sitting
b. Lupe sits in a seat or on a bench that is in front of where Freddy is
sitting
c. Freddy sits on the same bench as Hillary
d. Lupe sits on the same bench as Sarah
e. Marta sits on the same bench as Vicky
13. Make six squares of the same size using twelve match-sticks. (Hint : You will
need an adhesive to arrange the required figure)
14. A farmer has two rectangular fields. The larger field has twice the length and
4 times the width of the smaller field. If the smaller field has area K, then the
are of the larger field is greater than the area of the smaller field by what
amount?
(a) 6K (b) 8K (c) 12K (d) 7K
15. Nine equal circles are enclosed in a square whose area is 36sq units. Find the
area of each circle.
16. There are 9 cards. Arrange them in a 3*3 matrix. Cards are of 4 colors. They
are red, yellow, blue, green. Conditions for arrangement: one red card must be
in first row or second row. 2 green cards should be in 3rd column. Yellow
cards must be in the 3 corners only. Two blue cards must be in the 2nd row.
At least one green card in each row.
18. A speaks truth 70% of the time; B speaks truth 80% of the time. What is the
probability that both are contradicting each other?
19. In a family 7 children don't eat spinach, 6 don't eat carrot, 5 don't eat beans, 4
don't eat spinach & carrots, 3 don't eat carrot & beans, 2 don't eat beans &
spinach. One doesn't eat all 3. Find the no. of children.
20. Anna, Bena, Catherina and Diana are at their monthly business meeting. Their
occupations are author, biologist, chemist and doctor, but not necessarily in
that order. Diana just told the neighbour, who is a biologist that Catherina was
on her way with doughnuts. Anna is sitting across from the doctor and next to
the chemist. The doctor was thinking that Bena was a good name for parent's
to choose, but didn't say anything. What is each person's occupation?
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).
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");
else
printf("I hate U");
}
Answer:
I hate U
Explanation:
For floating point numbers (float, double, long double) the values
cannot be predicted exactly. Depending on the number of bytes, the precession with
of the value represented varies. Float takes 4 bytes and long double takes 10 bytes.
So float stores 0.9 with less precision than long double.
Rule of Thumb:
Never compare or at-least be cautious when using floating point
numbers with relational operators (== , >, <, <=, >=,!= ) .
4. main()
{
static int var = 5;
printf("%d ",var--);
if(var)
main();
}
Answer:
54321
Explanation:
When static storage class is given, it is initialized once. The change in
the value of a static variable is retained even between the function calls. Main is also
treated like any other ordinary function, which can be called recursively.
5. main()
{
int c[ ]={2.8,3.4,4,6.7,5};
int j,*p=c,*q=c;
for(j=0;j<5;j++) {
printf(" %d ",*c);
++q; }
for(j=0;j<5;j++){
printf(" %d ",*p);
++p; }
}
Answer:
2222223465
Explanation:
Initially pointer c is assigned to both p and q. In the first loop, since
only q is incremented and not c , the value 2 will be printed 5 times. In second loop p
itself is incremented. So the values 2 3 4 6 5 will be printed.
6. main()
{
extern int i;
i=20;
printf("%d",i);
}
Answer:
Linker Error : Undefined symbol '_i'
Explanation:
extern storage class in the following declaration,
extern int i;
specifies to the compiler that the memory for i is allocated in some other program and
that address will be given to the current program at the time of linking. But linker
finds that no other variable of name i is available in any other program with memory
space allocated for it. Hence a linker error has occurred .
7. main()
{
int i=-1,j=-1,k=0,l=2,m;
m=i++&&j++&&k++||l++;
printf("%d %d %d %d %d",i,j,k,l,m);
}
Answer:
00131
Explanation :
Logical operations always give a result of 1 or 0 . And also the logical
AND (&&) operator has higher priority over the logical OR (||) operator. So the
expression ‘i++ && j++ && k++’ is executed first. The result of this expression is 0
(-1 && -1 && 0 = 0). Now the expression is 0 || 2 which evaluates to 1 (because OR
operator always gives 1 except for ‘0 || 0’ combination- for which it gives 0). So the
value of m is 1. The values of other variables are also incremented by 1.
8. main()
{
char *p;
printf("%d %d ",sizeof(*p),sizeof(p));
}
Answer:
12
Explanation:
The sizeof() operator gives the number of bytes taken by its operand. P
is a character pointer, which needs one byte for storing its value (a character). Hence
sizeof(*p) gives a value of 1. Since it needs two bytes to store the address of the
character pointer sizeof(p) gives 2.
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
return types to be integers, (which is the default type). When it sees the actual
function display, the arguments and type contradicts with what it has assumed
previously. Hence a compile time error occurs.
12. main()
{
int c=- -2;
printf("c=%d",c);
}
Answer:
c=2;
Explanation:
Here unary minus (or negation) operator is used twice. Same maths
rules applies, ie. minus * minus= plus.
Note:
However you cannot give like --2. Because -- operator can only be
applied to variables as a decrement operator (eg., i--). 2 is a constant and not a
variable.
14. main()
{
int i=10;
i=!i>14;
Printf ("i=%d",i);
}
Answer:
i=0
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>
main()
{
char s[]={'a','b','c','\n','c','\0'};
char *p,*str,*str1;
p=&s[3];
str=p;
str1=s;
printf("%d",++*p + ++*str1-32);
}
Answer:
77
Explanation:
p is pointing to character '\n'. str1 is pointing to character 'a' ++*p. "p is
pointing to '\n' and that is incremented by one." the ASCII value of '\n' is 10, which is
then incremented to 11. The value of ++*p is 11. ++*str1, str1 is pointing to 'a' that is
incremented by 1 and it becomes 'b'. ASCII value of 'b' is 98.
Now performing (11 + 98 – 32), we get 77("M");
So we get the output 77 :: "M" (Ascii is 77).
16. #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:
SomeGarbageValue---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, it will print first element of 3D array.
17. #include<stdio.h>
main()
{
struct xx
{
int x=3;
char name[]="hello";
};
struct xx *s;
printf("%d",s->x);
printf("%s",s->name);
}
Answer:
Compiler Error
Explanation:
You should not initialize variables in declaration
18. #include<stdio.h>
main()
{
struct xx
{
int x;
struct yy
{
char s;
struct xx *p;
};
struct yy *q;
};
}
Answer:
Compiler Error
Explanation:
The structure yy is nested within structure xx. Hence, the elements are
of yy are to be accessed through the instance of structure xx, which needs an instance
of yy to be known. If the instance is created after defining the structure the compiler
will not know about the instance relative to xx. Hence for nested structure yy you
have to declare member.
19. main()
{
printf("\nab");
printf("\bsi");
printf("\rha");
}
Answer:
hai
Explanation:
\n - newline
\b - backspace
\r - linefeed
20. main()
{
int i=5;
printf("%d%d%d%d%d%d",i++,i--,++i,--i,i);
}
Answer:
45545
Explanation:
The arguments in a function call are pushed into the stack from left to
right. The evaluation is by popping out from the stack. and the evaluation is from
right to left, hence the result.
22. main()
{
char *p="hai friends",*p1;
p1=p;
while(*p!='\0') ++*p++;
printf("%s %s",p,p1);
}
Answer:
ibj!gsjfoet
Explanation:
++*p++ will be parse in the given order
¾ *p that is value at the location currently pointed by p will be taken
¾ ++*p the retrieved value will be incremented
¾ when ; is encountered the location will be incremented that is p++ will be
executed
Hence, in the while loop initial value pointed by p is ‘h’, which is changed to ‘i’ by
executing ++*p and pointer moves to point, ‘a’ which is similarly changed to ‘b’ and
so on. Similarly blank space is converted to ‘!’. Thus, we obtain value in p becomes
“ibj!gsjfoet” and since p reaches ‘\0’ and p1 points to p thus p1doesnot print anything.
{
#define a 50
printf("%d",a);
}
Answer:
50
Explanation:
The preprocessor directives can be redefined anywhere in the program.
So the most recently assigned value will be taken.
25. main()
{
printf("%p",main);
}
Answer:
Some address will be printed.
Explanation:
Function names are just addresses (just like array names are
addresses).
main() is also a function. So the address of function main will be printed. %p in printf
specifies that the argument is an address. They are printed as hexadecimal numbers.
27) main()
{
clrscr();
}
clrscr();
Answer:
No output/error
Explanation:
The first clrscr() occurs inside a function. So it becomes a function
call. In the second clrscr(); is a function declaration (because it is not
inside any function).
printf("%d..%d..%d",BLACK,BLUE,GREEN);
return(1);
}
Answer:
0..1..2
Explanation:
enum assigns numbers starting from 0, if not explicitly defined.
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
31) 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;
t=names[3];
names[3]=names[4];
names[4]=t;
for (i=0;i<=4;i++)
printf("%s",names[i]);
}
Answer:
Compiler error: Lvalue required in function main
Explanation:
Array names are pointer constants. So it cannot be modified.
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.
Explanation:
The case statement can have only constant expressions (this implies
that we cannot use variable names directly so an error).
Note:
Enumerated types can be used in case statements.
37) 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.
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;
p=&s[3];
str=p;
str1=s;
printf("%d",++*p + ++*str1-32);
}
Answer:
M
Explanation:
p is pointing to character '\n'.str1 is pointing to character 'a' ++*p
meAnswer:"p is pointing to '\n' and that is incremented by one." the
ASCII value of '\n' is 10. then it is incremented to 11. the value of
++*p is 11. ++*str1 meAnswer:"str1 is pointing to 'a' that is
incremented by 1 and it becomes 'b'. ASCII value of 'b' is 98. both 11
and 98 is added and result is subtracted from 32.
i.e. (11+98-32)=77("M");
41) #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;
};
}
Answer:
Compiler Error
Explanation:
in the end of nested structure yy a member have to be declared.
43) 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()
{
show();
}
void show()
{
printf("I'm the greatest");
}
Answer:
Compier error: Type mismatch in redeclaration of show.
Explanation:
When the compiler sees the function show it doesn't know anything
about it. So the default return type (ie, int) is assumed. But when
compiler sees the actual definition of show mismatch occurs since it is
declared as void. Hence the error.
The solutions are as follows:
1. declare void show() in main() .
2. define show() before main().
3. declare extern void show() before the use of show().
47) 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( )
{
int a[ ] = {10,20,30,40,50},j,*p;
for(j=0; j<5; j++)
{
printf(“%d” ,*a);
a++;
}
p = a;
for(j=0; j<5; j++)
{
printf(“%d ” ,*p);
p++;
}
}
Answer:
Compiler error: lvalue required.
Explanation:
Error is in line with statement a++. The operand must be an lvalue and
may be of any of scalar type for the any operator, array name only
when subscripted is an lvalue. Simply array name is a non-modifiable
lvalue.
49) 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
p
100 102 104 106 108
1000 1002 1004 1006 1008
ptr
1000
2000
After execution of the instruction ptr++ value in ptr becomes 1002, if
scaling factor for integer is 2 bytes. Now ptr – p is value in ptr –
starting location of array p, (1002 – 1000) / (scaling factor) = 1, *ptr –
a = value at address pointed by ptr – starting value of array a, 1002 has
a value 102 so the value is (102 – 100)/(scaling factor) = 1, **ptr is
the value stored in the location pointed by the pointer of ptr = value
pointed by value pointed by 1002 = value pointed by 102 = 1. Hence
the output of the firs printf is 1, 1, 1.
After execution of *ptr++ increments value of the value in ptr by
scaling factor, so it becomes1004. Hence, the outputs for the second
printf are ptr – p = 2, *ptr – a = 2, **ptr = 2.
After execution of *++ptr increments value of the value in ptr by
scaling factor, so it becomes1004. Hence, the outputs for the third
printf are ptr – p = 3, *ptr – a = 3, **ptr = 3.
After execution of ++*ptr value in ptr remains the same, the value
pointed by the value is incremented by the scaling factor. So the value
in array p at location 1006 changes from 106 10 108,. Hence, the
outputs for the fourth printf are ptr – p = 1006 – 1000 = 3, *ptr – a =
108 – 100 = 4, **ptr = 4.
50) 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
M T V I R T U A L \0
This is the final value stored .
The first printf prints the values at the position q, q+1 and q+2 = M T
V
The second printf prints three strings starting from locations q, q+1,
q+2
i.e MTVIRTUAL, TVIRTUAL and VIRTUAL.
51) 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
statement the expression is evaluated *++p causes gets value s+1 then
the pre decrement is executed and we get s+1 – 1 = s . the indirection
operator now gets the value from the array of s and adds 3 to the
starting address. The string is printed starting from this position. Thus,
the output is ‘ck’.
53) 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.
54) 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:
asserts are used during debugging to make sure that certain conditions
are satisfied. If assertion fails, the program will terminate reporting the
same. After debugging use,
#undef NDEBUG
and this will disable all the assertions from the source code. Assertion
is a good debugging tool to make use of.
55) 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).
Answer :
a: The SEEK_SET sets the file position marker to the starting of the
file.
b: The SEEK_CUR sets the file position marker to the current position
of the file.
58) 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.
60) 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.
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.
65) main()
{
int k=1;
printf("%d==1 is ""%s",k,k==1?"TRUE":"FALSE");
}
Answer:
1==1 is TRUE
Explanation:
When two strings are placed together (or separated by white-space)
they are concatenated (this is called as "stringization" operation). So
the string is as if it is given as "%d==1 is %s". The conditional
operator( ?: ) evaluates to "TRUE".
66) 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.
extern int i;
{
int i=20;
{
const volatile unsigned i=30;
printf("%d",i);
}
printf("%d",i);
}
printf("%d",i);
}
Answer:
30,20,10
Explanation:
'{' introduces new block and thus new scope. In the innermost block i
is declared as,
const volatile unsigned
which is a valid declaration. i is assumed of type int. So printf prints
30. In the next block, i has value 20 and so printf prints 20. In the
outermost block, i is declared as extern, so no storage space is
allocated for it. After compilation is over the linker resolves it to
global variable i (since it is the only variable visible there). So it prints
i's value as 10.
69) 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);
}
Answer:
i = -1, -i = 1
Explanation:
-i is executed and this execution doesn't affect the value of i. In printf
first you just print the value of i. After that the value of the expression
-i = -(-1) is printed.
71) #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);
}
Answer:
hello 5
Explanation:
if you declare i as register compiler will treat it as ordinary integer and
it will take integer value. i value may be stored either in register or in
memory.
74) main()
{
int i=5,j=6,z;
printf("%d",i+++j);
}
Answer:
11
Explanation:
the expression i+++j is treated as (i++ + j)
};
struct point origin,*pp;
main()
{
pp=&origin;
printf("origin is(%d%d)\n",(*pp).x,(*pp).y);
printf("origin is (%d%d)\n",pp->x,pp->y);
}
Answer:
origin is(0,0)
origin is(0,0)
Explanation:
pp is a pointer to structure. we can access the elements of the structure
either with arrow mark or with indirection operator.
Note:
Since structure point is globally declared x & y are initialized as
zeroes
78) 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:
0001...0002...0004
Explanation:
++ operator when applied to pointers increments address according to
their corresponding data-types.
80) 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.
printf("%d",*ptr);
}
Answer:
garbage value
Explanation:
ptr pointer is pointing to out of the array range of one_d.
83) # 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:
86) 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
2--2
Explanation:
Let us assume some x= scanf("%d",&i)-t the values during execution
will be,
t i x
4 0 -4
3 1 -2
2 2 0
89) 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
Explanation:
The argument of the function is a pointer to a pointer.
92) What are the following notations of defining functions known as?
i. int abc(int a,float b)
{
/* some code */
}
ii. int abc(a,b)
int a; float b;
{
/* some code*/
}
Answer:
i. ANSI C notation
ii. Kernighan & Ritche notation
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.
95) 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'.
{
int k=ret(sizeof(float));
printf("\n here value is %d",++k);
}
int ret(int ret)
{
ret += 2.5;
return(ret);
}
Answer:
Here value is 7
Explanation:
The int ret(int ret), ie., the function name and the argument name can
be the same.
Firstly, the function ret() is called in which the sizeof(float) ie., 4 is
passed, after the first expression the value in ret will be 6, as ret is integer
hence the value stored in ret will have implicit type conversion from float to
int. The ret is returned in main() it is printed after and preincrement.
char a[]="\0";
if(printf("%s\n",a))
printf("Ok here \n");
else
printf("Forget it\n");
}
Answer:
Ok here
Explanation:
Printf will return how many characters does it print. Hence
printing a null character returns 1 which makes the if statement
true, thus "Ok here" is printed.
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;
if(x=y%2) z=2;
a=2;
printf("%d %d ",z,x);
}
Answer:
Garbage-value 0
Explanation:
The value of y%2 is 0. This value is assigned to x. The condition
reduces to if (x) or in other words if(0) and so z goes uninitialized.
Thumb Rule: Check all control paths to write bug free code.
106) 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 !
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.
109) 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
main()
{
signed char i=0;
for(;i>=0;i++) ;
printf("%d\n",i);
}
Answer
-128
Explanation
Notice the semicolon at the end of the for loop. THe initial
value of the i is set to 0. The inner loop executes to increment
the value from 0 to 127 (the positive range of char) and then it
rotates to the negative value of -128. The condition in the for
loop fails and so comes out of the for loop. It prints the current
value of i that is -128.
113) main()
{
unsigned char i=0;
for(;i>=0;i++) ;
printf("%d\n",i);
}
Answer
infinite loop
Explanation
The difference between the previous question and this one is that the
char is declared to be unsigned. So the i++ can never yield negative value and
i>=0 never becomes false so that it can come out of the for loop.
114) main()
{
char i=0;
for(;i>=0;i++) ;
printf("%d\n",i);
}
Answer:
Behavior is implementation dependent.
Explanation:
The detail if the char is signed/unsigned by default is
implementation dependent. If the implementation treats the char to be
signed by default the program will print –128 and terminate. On the
other hand if it considers char to be unsigned by default, it goes to
infinite loop.
Rule:
You can write programs that have implementation dependent
behavior. But dont write programs that depend on such behavior.
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;
This can be used only after . (dot) or -> (arrow) operator preceded by the
variable name as in :
g1.error =1;
printf("%d",g1.error);
typedef struct error{int warning, error, exception;}error;
This can be used to define variables without using the preceding struct
keyword as in:
error g1;
Since the compiler can perfectly distinguish between these three usages, it is
perfectly legal and valid.
Note
This code is given here to just explain the concept behind. In real
programming don’t use such overloading of names. It reduces the readability
of the code. Possible doesn’t mean that we should use it!
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.
main()
{
int thing = 0;
printf("%d %d\n", some ,thing);
}
Answer
00
Explanation
This code is to show that preprocessor expressions are not the
same as the ordinary expressions. If a name is not known the
preprocessor treats it to be equal to zero.
main()
{
int arr2D[3][3];
printf("%d\n", ((arr2D==* arr2D)&&(* arr2D == arr2D[0])) );
}
Answer
1
Explanation
This is due to the close relation between the arrays and
pointers. N dimensional arrays are made up of (N-1)
dimensional arrays.
arr2D is made up of a 3 single arrays that contains 3 integers
each .
arr2D
arr2D[1]
arr2D[2]
arr2D[3]
Answer
You can answer this if you know how values are represented in
memory
Explanation
~ (tilde operator or bit-wise negation operator) operates on 0 to
produce all ones to fill the space for an integer. –1 is
represented in unsigned value as all 1’s and so both are equal.
123) 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”;
char c;
c = ++*p++;
printf(“%c”,c);
}
Answer:
b
Explanation:
There is no difference between the expression ++*(p++) and
++*p++. Parenthesis just works as a visual clue for the reader
to see which expression is first evaluated.
126)
int aaa() {printf(“Hi”);}
int bbb(){printf(“hello”);}
iny ccc(){printf(“bye”);}
main()
{
int ( * ptr[3]) ();
ptr[0] = aaa;
ptr[1] = bbb;
ptr[2] =ccc;
ptr[2]();
}
Answer:
bye
Explanation:
int (* ptr[3])() says that ptr is an array of pointers to functions that
takes no arguments and returns the type int. By the assignment ptr[0] =
aaa; it means that the first function pointer in the array is initialized
with the address of the function aaa. Similarly, the other two array
elements also get initialized with the addresses of the functions bbb
and ccc. Since ptr[2] contains the address of the function ccc, the call
to the function ptr[2]() is same as calling ccc(). So it results in printing
"bye".
127)
main()
{
int i=5;
printf(“%d”,i=++i ==6);
}
Answer:
1
Explanation:
128) 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.
Answer::
abc is a ptr to a function which takes 2 parameters .(a). an integer
variable.(b). a ptrto a funtion which returns void. the return type of
the function is void.
Explanation:
Apply the clock-wise rule to find the result.
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”);
}
Answer:
“Strings are not equal”
“Strings are not equal”
….
Explanation:
If a string constant is initialized explicitly with characters, ‘\0’ is not
appended automatically to the string. Since str1 doesn’t have null
termination, it treats whatever the values that are in the following
positions as part of the string until it randomly reaches a ‘\0’. So str1
and str2 are not the same, hence the result.
132) 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.
32767
Explanation:
Since i is static it is initialized to 0. Inside the while loop the
conditional operator evaluates to false, executing i--. This continues till
the integer value rotates to positive value (32767). The while condition
becomes false and hence, comes out of the while loop, printing the i
value.
135) 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;
Answer:
1. 'const' applies to char * rather than 'a' ( pointer to a constant char )
*a='F' : illegal
a="Hi" : legal
3. Same as 1.
137) 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 expression’s 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 expression’s 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
Rule to Remember:
& (address of ) operator cannot be applied on register variables.
140) 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.
143) 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.
Explanation:
Arrays cannot be passed to functions as arguments and only the
pointers can be passed. So the argument is equivalent to int * array
(this is one of the very few places where [] and * usage are equivalent).
The return statement becomes, sizeof(int *)/ sizeof(int) that happens to
be equal in this case.
146) 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 1 1 1
2 4 2 4
3 7 3 7
4 2 4 2
5 5 5 5
6 8 6 8
7 3 7 3
8 6 8 6
9 9 9 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:
148) 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.
150) 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.
153) main()
{
struct student
{
char name[30];
struct date dob;
}stud;
struct date
{
int day,month,year;
};
scanf("%s%d%d%d", stud.rollno, &student.dob.day,
&student.dob.month, &student.dob.year);
}
Answer:
Compiler Error: Undefined structure date
Explanation:
Inside the struct definition of ‘student’ the member of type struct date
is given. The compiler doesn’t 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.day,
&student.dob.month, &student.dob.year);
}
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) There were 10 records stored in “somefile.dat” but the following program
printed 11 names. What went wrong?
void main()
{
struct student
{
char name[30], rollno[6];
}stud;
FILE *fp = fopen(“somefile.dat”,”r”);
while(!feof(fp))
{
fread(&stud, sizeof(stud), 1 , fp);
puts(stud.name);
}
}
Explanation:
fread reads 10 records and prints the names successfully. It will
return EOF only when fread tries to read another record and
fails reading EOF (and returning EOF). So it prints the last
record again. After this only the condition feof(fp) becomes
false, hence comes out of the while loop.
assert macro should be used for debugging and finding out bugs. The
check s != NULL is for error/exception handling and for that assert
shouldn’t be used. A plain if and the corresponding remedy statement
has to be given.
void main()
{
int i = 10;
if(i==0)
assert(i < 100);
else
printf("This statement becomes else for if in assert macro");
}
Answer:
No output
Explanation:
The else part in which the printf is there becomes the else for if in the assert
macro. Hence nothing is printed.
Note:
However this problem of “matching with nearest else” cannot be
solved by the usual method of placing the if statement inside a block
like this,
#define assert(cond) { \
if(!(cond)) \
(fprintf(stderr, "assertion failed: %s, file %s, line %d \n",#cond,\
__FILE__,__LINE__), abort()) \
}
}aType
Answer:
No
Explanation:
The typename aType is not known at the point of declaring the
structure (forward references are not made for typedefs).
Answer :
sizeof (void *) = 2
sizeof (int *) = 2
sizeof (double *) = 2
sizeof(struct unknown *) = 2
Explanation:
The pointer to any type is of same size.
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()
{
int a=10,*j;
void *k;
j=k=&a;
j++;
k++;
printf("\n %u %u ",j,k);
}
Answer:
Compiler error: Cannot increment a void pointer
Explanation:
Void pointers are generic pointers and they can be used only when the
type is not known and as an intermediate address storage type. No
pointer arithmetic can be done on it and you cannot apply indirection
operator (*) on void pointers.
176) main()
{
extern int i;
{ int i=20;
{
const volatile unsigned i=30; printf("%d",i);
}
printf("%d",i);
}
printf("%d",i);
}
int i;
The program suffers no problem and gives the output correctly because the
character constants are stored in code/data area and not allocated in stack, so this
doesn’t lead to dangling pointers.
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
#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);
}
• 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. 1000000
2. Overflow
3. Error
4. None
Ans: 4
1. char *(*(*a[N])())();
3. Use the cdecl program, which turns English into C and vice
versa:
10. A structure pointer is defined of the type time . With 3 fields min,sec hours
having pointers to intergers.
Write the way to initialize the 2nd element to 10.
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);
}
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 ");
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.
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);
}
19.
void main()
{
char *s[]={ "dharma","hewlett-packard","siemens","ibm"};
char **p;
p=s;
printf("%s",++*p);
printf("%s",*p++);
printf("%s",++*p);
}
main()
{int i=0;
for(i=0;i<20;i++)
{switch(i)
case 0:i+=5;
case 1:i+=2;
case 5:i+=5;
default i+=4;
break;}
printf("%d,",i);
}
}
a) 0,5,9,13,17
b) 5,9,13,17
c) 12,17,22
d) 16,21
e) Syntax error
Ans. (d)
main()
{char c=-64;
int i=-32
unsigned int u =-16;
if(c>i)
{printf("pass1,");
if(c<u)
printf("pass2");
else
printf("Fail2");
}
else
printf("Fail1);
if(i<u)
printf("pass2");
else
printf("Fail2")
}
a) Pass1,Pass2
b) Pass1,Fail2
c) Fail1,Pass2
d) Fail1,Fail2
e) None of these
Ans. (c)
void main()
{
int i;
char a[]="String";
char *p="New Sring";
char *Temp;
Temp=a;
a=malloc(strlen(p) + 1);
strcpy(a,p); //Line number:9//
p = malloc(strlen(Temp) + 1);
strcpy(p,Temp);
printf("(%s, %s)",a,p);
free(p);
free(a);
} //Line number 15//
Ans. (b)
23. In the following code segment what will be the result of the function,
value of x , value of y
{unsigned int x=-1;
int y;
y = ~0;
if(x == y)
printf("same");
else
printf("not same");
}
a) same, MAXINT, -1
b) not same, MAXINT, -MAXINT
c) same , MAXUNIT, -1
d) same, MAXUNIT, MAXUNIT
e) not same, MAXINT, MAXUNIT
Ans. (a)
char *gxxx()
{static char xxx[1024];
return xxx;
}
main()
{char *g="string";
strcpy(gxxx(),g);
g = gxxx();
strcpy(g,"oldstring");
printf("The string is : %s",gxxx());
}
Ans. (b)
main()
{
char *p1="Name";
char *p2;
p2=(char *)malloc(20);
while(*p2++=*p1++);
printf("%s\n",p2);
}
main()
{
int x=20,y=35;
x = y++ + x++;
y = ++y + ++x;
printf("%d %d\n",x,y);
}
Ans. 57 94
main()
{
int x=5;
printf("%d %d %d\n",x,x<<2,x>>2);
}
Ans. 5 20 1
Ans. 10 5
main()
{
char *ptr = "Ramco Systems";
(*ptr)++;
printf("%s\n",ptr);
ptr++;
printf("%s\n",ptr);
}
#include<stdio.h>
main()
{
char s1[]="Ramco";
char s2[]="Systems";
s1=s2;
printf("%s",s1);
}
#include<stdio.h>
main()
{
char *p1;
char *p2;
p1=(char *) malloc(25);
p2=(char *) malloc(25);
strcpy(p1,"Ramco");
strcpy(p2,"Systems");
strcat(p1,p2);
printf("%s",p1);
}
Ans. RamcoSystems
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
# define TRUE 0
some code
while(TRUE)
{
some code
}
Ans. Wrong
int i;
i=1;
i=i+2*i++;
printf(%d,i);
Ans. 4
fp1=fopen("one","w")
fp2=fopen("one","w")
fputc('A',fp1)
fputc('B',fp2)
fclose(fp1)
fclose(fp2)
}
38. #include<malloc.h>
char *f()
{char *s=malloc(8);
strcpy(s,"goodbye");
}
main()
{
char *f();
printf("%c",*f()='A'); }
Ans. 10 5 0
40.
void main()
{
int i=7;
printf("%d",i++*i++);
}
Ans: 56
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
up with ptr that has been freed.The solution is to pass the Sample object by
reference to SomeFunc:
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;}
};
int main()
{
base BaseArr[5];
SomeFunc(BaseArr,5);
deri DeriArr[5];
SomeFunc(DeriArr,5);
}
Answer:
00000
01010
Explanation:
The function SomeFunc expects two arguments.The first one is a pointer to an
array of base class objects and the second one is the sizeof the array.The first call of
someFunc calls it with an array of bae objects, so it works correctly and prints the
bval of all the objects. When Somefunc is called the second time the argument passed
is the pointeer to an array of derived class objects and not the array of base class
objects. But that is what the function expects to be sent. So the derived class pointer is
promoted to base class pointer and the address is sent to the function. SomeFunc()
knows nothing about this and just treats the pointer as an array of base class objects.
So when arr++ is met, the size of base class object is taken into consideration and is
incremented by sizeof(int) bytes for bval (the deri class objects have bval and dval as
members and so is of size >= sizeof(int)+sizeof(int) ).
4) class base
{
public:
void baseFun(){ cout<<"from base"<<endl;}
};
class deri:public base
{
public:
void baseFun(){ cout<< "from derived"<<endl;}
};
void SomeFunc(base *baseObj)
{
baseObj->baseFun();
}
int main()
{
base baseObject;
SomeFunc(&baseObject);
deri deriObject;
SomeFunc(&deriObject);
}
Answer:
from base
from base
Explanation:
As we have seen in the previous case, SomeFunc expects a pointer to a base
class. Since a pointer to a derived class object is passed, it treats the argument only as
a base class pointer and the corresponding base function is called.
5) class base
{
public:
virtual void baseFun(){ cout<<"from base"<<endl;}
};
class deri:public base
{
public:
void baseFun(){ cout<< "from derived"<<endl;}
};
void SomeFunc(base *baseObj)
{
baseObj->baseFun();
}
int main()
{
base baseObject;
SomeFunc(&baseObject);
deri deriObject;
SomeFunc(&deriObject);
}
Answer:
from base
from derived
Explanation:
Remember that baseFunc is a virtual function. That means that it supports run-
time polymorphism. So the function corresponding to the derived class object is
called.
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.
*/
{
cout<<ptr[0];
}
void main()
{
int a[size] = {1,2,3,4,5};
int *b = new int(size);
print(a);
print(b);
}
/*
Answer:
Compiler Error : function 'void print(int *)' already has a body
Explanation:
Arrays cannot be passed to functions, only pointers (for arrays, base
addresses)
can be passed. So the arguments int *ptr and int prt[size] have no difference
as function arguments. In other words, both the functoins have the same signature and
so cannot be overloaded.
*/
class some{
public:
~some()
{
cout<<"some's destructor"<<endl;
}
};
void main()
{
some s;
s.~some();
}
/*
Answer:
some's destructor
some's destructor
Explanation:
#include <iostream.h>
class fig2d
{
int dim1;
int dim2;
public:
fig2d() { dim1=5; dim2=6;}
void main()
{
fig2d obj1;
// fig3d obj2;
Answer :
56
Explanation:
In this program, the << operator is overloaded with ostream as argument.
This enables the 'cout' to be present at the right-hand-side. Normally, 'cout'
is implemented as global function, but it doesn't mean that 'cout' is not possible
to be overloaded as member function.
Overloading << as virtual member function becomes handy when the class in
which
it is overloaded is inherited, and this becomes available to be overrided. This is as
opposed
to global friend functions, where friend's are not inherited.
*/
class opOverload{
public:
bool operator==(opOverload temp);
};
void main(){
opOverload a1, a2;
a1= =a2;
}
Answer :
Runtime Error: Stack Overflow
Explanation :
Just like normal functions, operator functions can be called recursively. This
program just illustrates that point, by calling the operator == function recursively,
leading to an infinite loop.
class complex{
double re;
double im;
public:
complex() : re(1),im(0.5) {}
bool operator==(complex &rhs);
operator int(){}
};
int main(){
complex c1;
cout<< c1;
}
Explanation:
The programmer wishes to print the complex object using output
re-direction operator,which he has not defined for his lass.But the compiler instead of
giving an error sees the conversion function
and converts the user defined object to standard object and prints
some garbage value.
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:
5,5
Explanation:
Though no operator= function taking complex, double is defined, the double
on the rhs is converted into a temporary object using the single argument constructor
taking double and assigned to the lvalue.
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
3) Each C++ object possesses the 4 member fns,(which can be declared by the
programmer explicitly or by the implementation if they are not available). What
are those 4 functions?
7) Which is the only operator in C++ which can be overloaded but NOT inherited.
1. What is a modifier?
Answer:
A modifier, also called a modifying function is a member function that changes
the value of at least one data member. In other words, an operation that modifies the
state of an object. Modifiers are also known as ‘mutators’.
2. What is an accessor?
Answer:
An accessor is a class operation that does not modify the state of an object. The
accessor functions need to be declared as const operations
5. Define namespace.
Answer:
It is a feature in c++ to minimize name collisions in the global name space.
This namespace keyword assigns a distinct name to a library that allows other
libraries to use the same identifier names without creating any name collisions.
Furthermore, the compiler uses the namespace signature for differentiating the
definitions.
¾ forward iterators,
¾ bidirectional iterators,
¾ random access.
An iterator is an entity that gives access to the contents of a container object
without violating encapsulation constraints. Access to the contents is granted on a
one-at-a-time basis in order. The order can be storage order (as in lists and queues) or
some arbitrary order (as in array indices) or according to some ordering relation (as in
an ordered binary tree). The iterator is a construct, which provides an interface that,
when called, yields either the next element in the container, or some value denoting
the fact that there are no more elements to examine. Iterators hide the details of access
to and update of the elements of a container class.
The simplest and safest iterators are those that permit read-only access to the
contents of a container class. The following code fragment shows how an iterator
might appear in code:
cont_iter:=new cont_iterator();
x:=cont_iter.next();
while x/=none do
...
s(x);
...
x:=cont_iter.next();
end;
In this example, cont_iter is the name of the iterator. It is created on the first line
by instantiation of cont_iterator class, an iterator class defined to iterate over some
container class, cont. Succesive elements from the container are carried to x. The loop
terminates when x is bound to some empty value. (Here, none)In the middle of the
loop, there is s(x) an operation on x, the current element from the container. The next
element of the container is obtained at the bottom of the loop.
Post-condition:
A post-condition is a condition that must be true on exit from a member
function if the precondition was valid on entry to that function. A class is
implemented correctly if post-conditions are never false.
For example, after pushing an element on the stack, we know that isempty()
must necessarily hold. This is a post-condition of the push operation.
19. What are the conditions that have to be met for a condition to be an invariant of
the class?
Answer:
¾ The condition should hold at the end of every constructor.
¾ The condition should hold at the end of every mutator(non-const) operation.
Answer:
Objects that stand for other objects are called proxy objects or surrogates.
Example:
template<class T>
class Array2D
{
public:
class Array1D
{
public:
T& operator[] (int index);
const T& operator[] (int index) const;
...
};
Array1D operator[] (int index);
const Array1D operator[] (int index) const;
...
};
Here data[3] yields an Array1D object and the operator [] invocation on that
object yields the float in position(3,6) of the original two dimensional array. Clients
of the Array2D class need not be aware of the presence of the Array1D class. Objects
of this latter class stand for one-dimensional array objects that, conceptually, do not
exist for clients of Array2D. Such clients program as if they were using real, live,
two-dimensional arrays. Each Array1D object stands for a one-dimensional array that
is absent from a conceptual model used by the clients of Array2D. In the above
example, Array1D is a proxy class. Its instances stand for one-dimensional arrays
that, conceptually, do not exist.
Answer:
¾ Smalltalk,
¾ Java,
¾ Eiffel,
¾ Sather.
Answer:
sizeof . .* .-> :: ?:
A node class is a class that has added new services or functionality beyond the
services inherited from its base class.
independent of, or orthogonal to each other. Orthogonal in the sense means that two
classes operate in different dimensions and do not interfere with each other in any
way. The same derived class may inherit such classes with no difficulty.
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.
function.
class Action
{
public:
virtual int do_it( int )=0;
virtual ~Action( );
}
Given this, we can write code say a member that can store actions for later
execution without using pointers to functions, without knowing anything about the
objects involved, and without even knowing the name of the operation it invokes. For
example:
A user of the Action class will be completely isolated from any knowledge of
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.
Deep copy involves using the contents of one object to create another instance
of the same class. In a deep copy, the two objects may contain ht same information
but the target object will have its own buffers and resources. the destruction of either
object will not affect the remaining object. The overloaded assignment operator
would create a deep copy of objects.
Shallow copy involves copying the contents of one object into another
instance of the same class thus creating a mirror image. Owing to straight copying of
references and pointers, the two objects will share the same externally contained
contents of the other object to be unpredictable.
Explanation:
Using a copy constructor we simply copy the data values member by member.
This method of copying is called shallow copy. If the object is a simple class,
comprised of built in types and no pointers this would be acceptable. This function
would use the values and the objects and its behavior would not be altered with a
shallow copy, only the addresses of pointers that are members are copied and not the
value the address is pointing to. The data values of the object would then be
inadvertently altered by the function. When the function goes out of scope, the copy
of the object with all its data is popped off the stack.
If the object has any pointers a deep copy needs to be executed. With the deep
copy of an object, memory is allocated for the object in free store and the elements
pointed to are copied. A deep copy is used for objects that are returned from a
function.
X& operator *( );
const X& operator*( ) const;
X* operator->() const;
As base copy functions don't know anything about the derived only the base
part of the derived is copied. This is commonly referred to as slicing. One reason to
pass objects of classes in a hierarchy is to avoid slicing. Other reasons are to preserve
polymorphic behavior and to gain efficiency.
function in your program a unique name. In C++, all programs have at-least a few
functions with the same name. Name mangling is a concession to the fact that
Example:
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
};
Unambiguous access of either ival members is achieved through name mangling.
mangling to provide each with a unique name. Here the compiler generates the
same name for the two overloaded instances(Their argument lists make their
instances unique).
exactly one definition of every object, function or class used in a C++ program.
of another object, or it can return a copy of itself. The latter process is called cloning.
43. Will the inline function be compiled as the inline function always? Justify.
Answer:
An inline function is a request and not a command. Hence it won't be
compiled as an inline function always.
Explanation:
Inline-expansion could fail if the inline function contains loops, the address of
an inline function is used, or an inline function is called in a complex expression. The
rules for inlining are compiler dependent.
44. Define a way other than using the keyword inline to make a function inline.
Answer:
The function must be defined inside the class.
Sometimes you have some raw memory that's already been allocated, and you need to
construct an object in the memory you have. Operator new's special version
class Widget
{
public :
Widget(int widgetsize);
...
Widget* Construct_widget_int_buffer(void *buffer,int widgetsize)
{
return new(buffer) Widget(widgetsize);
}
};
This function returns a pointer to a Widget object that's constructed within the
buffer passed to the function. Such a function might be useful for applications using
OOAD
Diagram:
client server
(Active) (Passive)
exist in the problem domain. e.g. for modeling element is class notation, object
notation etc.
Relationships are used to represent the interaction between the modeling
elements.
The following are the Relationships.
¾ Aggregation: Its' the relationship between two classes which are related in the
fashion that master and slave. The master takes full rights than the slave. Since
the slave works under the master. It is represented as line with diamond in the
master area.
ex:
car contains wheels, etc.
car
car 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
15. Whether unified method and unified modeling language are same or different?
16. Who were the three famous amigos and what was their contribution to the object
community?
The Three amigos namely,
¾ James Rumbaugh (OMT): A veteran in analysis who came up with an idea about
the objects and their Relationships (in particular Associations).
¾ Grady Booch: A veteran in design who came up with an idea about partitioning of
systems into subsystems.
¾ Ivar Jacobson (Objectory): The father of USECASES, who described about the
user and system interaction.
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:
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,
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
methods.
1.The Java interpreter is used for the execution of the source code.
True
False
Ans: a.
2) On successful compilation a file with the class extension is created.
a) True
b) False
Ans: a.
3) The Java source code can be created in a Notepad editor.
a) True
b) False
Ans: a.
4) The Java Program is enclosed in a class definition.
a) True
b) False
Ans: a.
5) What declarations are required for every Java application?
Ans: A class and the main( ) method declarations.
6) What are the two parts in executing a Java program and their purposes?
Ans: Two parts in executing a Java program are:
Java Compiler and Java Interpreter.
The Java Compiler is used for compilation and the Java Interpreter is used for execution of the
application.
7) What are the three OOPs principles and define them?
Ans : Encapsulation, Inheritance and Polymorphism are the three OOPs
Principles.
Encapsulation:
Is the Mechanism that binds together code and the data it manipulates, and keeps both safe from
outside interference and misuse.
Inheritance:
Is the process by which one object acquires the properties of another object.
Polymorphism:
Is a feature that allows one interface to be used for a general class of actions.
Ans : void
13) What is the argument type of program’s main( ) method?
Ans : string array.
14) Which characters are as first characters of an identifier?
Ans : A – Z, a – z, _ ,$
15) What are different comments?
Ans : 1) // -- single line comment
2) /* --
*/ multiple line comment
3) /** --
*/ documentation
16) What is the difference between constructor method and method?
Ans : Constructor will be automatically invoked when an object is created. Whereas method has to be
call explicitly.
17) What is the use of bin and lib in JDK?
Ans : Bin contains all tools such as javac, applet viewer, awt tool etc., whereas Lib
contains all packages and variables.
a)True
b)False
Ans: a.
11) What is a string?
Ans: A combination of characters is called as string.
12) Strings are instances of the class String.
a)True
b)False
Ans: a.
13) When a string literal is used in the program, Java automatically creates instances of the string class.
a)True
b)False
Ans: a.
14) Which operator is to create and concatenate string?
Ans: Addition operator(+).
15) Which of the following declare an array of string objects?
String[ ] s;
String [ ]s:
String[ s]:
String s[ ]:
Ans : a, b and d
16) What is the value of a[3] as the result of the following array declaration?
1
2
3
4
Ans : d
17) Which of the following are primitive types?
byte
String
integer
Float
Ans : a.
18) What is the range of the char type?
0 to 216
0 to 215
0 to 216-1
0 to 215-1
Ans. d
19) What are primitive data types?
Ans : byte, short, int, long
float, double
boolean
char
20) What are default values of different primitive types?
Ans : int - 0
short - 0
byte - 0
long - 0 l
float - 0.0 f
double - 0.0 d
boolean - false
char - null
21) Converting of primitive types to objects can be explicitly.
a)True
b)False
Ans: b.
22) How do we change the values of the elements of the array?
Ans : The array subscript expression can be used to change the values of the elements of the array.
23) What is final varaible?
Ans : If a variable is declared as final variable, then you can not change its value. It becomes constant.
24) What is static variable?
Ans : Static variables are shared by all instances of a class.
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.
13) What is the difference between prefix and postfix of -- and ++ operators?
Ans : The prefix form returns the increment or decrement operation and returns the value of the
increment or decrement operation.
The postfix form returns the current value of all of the expression and then
performs the increment or decrement operation on that value.
14) What is the result of expression 5.45 + "3,2"?
The double value 8.6
The string ""8.6"
The long value 8.
The String "5.453.2"
Ans : d
15) What are the values of x and y ?
x = 5; y = ++x;
Ans : x = 6; y = 6
16) What are the values of x and z?
x = 5; z = x++;
Ans : x = 6; z = 5
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?
Ans: The break keyword halts the execution of the current loop and forces control out of the loop.
The continue is similar to break, except that instead of halting the execution of the loop, it starts the
next iteration.
8) The for loop repeats a set of statements a certain number of times until a condition is matched.
a)True
b)False
Ans: a.
9) Can a for statement loop indefintely?
Ans : Yes.
10) What is the difference between while statement and a do statement/
Ans : A while statement checks at the beginning of a loop to see whether the next loop iteration should
occur.
A do statement checks at the end of a loop to see whether the next iteration of a loop should occur. The
do statement will always execute the body of a loop at least once.
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
a. true
b.false
Ans: a.
37) When an object is referenced, does this mean that it has been identified by the finalizer method for
garbage collection?
a.yes
b.no
Ans: b.
38) Because finalize () belongs to the java.lang.Object class, it is present in all ___.
a.objects
b.classes
c.methods
Ans: b.
39) Identify the true statements about finalization.
a.A class may have only one finalize method
b.Finalizers are mostly used with simple classes
c.Finalizer overloading is not allowed
Ans: a,c.
40) When you write finalize() method for your class, you are overriding a finalizer
inherited from a super class.
a.true
b.false
Ans: a.
41) Java memory management mechanism garbage collects objects which are no longer referenced
a true
b.false
Ans: a.
42) are objects referenced by a variable candidates for garbage collection when the variable goes out of
scope?
a yes
b. no
Ans: a.
43) Java's garbage collector runs as a ___ priority thread waiting for __priority threads to relinquish the
processor.
a.high
b.low
Ans: a,b.
44) The garbage collector will run immediately when the system is out of memory
a.true
b.false
Ans: a.
45) You can explicitly drop a object reference by setting the value of a variable whose data type is a
reference type to ___
Ans: null
46) When might your program wish to run the garbage collecter?
a. before it enters a compute-intense section of code
b. before it enters a memory-intense section of code
c. before objects are finalized
d. when it knows there will be some idle time
Ans: a,b,d
47) For externalizable objects the class is solely responsible for the external format of its contents
a.true
b.false
Ans: a
48) When an object is stored, are all of the objects that are reachable from that object stored as well?
a.true
b.false
Ans: a
49) The default__ of objects protects private and trancient data, and supports the __ of the classes
a.evolution
b.encoding
Ans: b,a.
50) Which are keywords in Java?
a) NULL
b) sizeof
c) friend
d) extends
e) synchronized
Ans : d and e
51) When must the main class and the file name coincide?
Ans :When class is declared public.
52) What are different modifiers?
Ans : public, private, protected, default, static, trancient, volatile, final, abstract.
53) What are access modifiers?
Ans : public, private, protected, default.
54) What is meant by "Passing by value" and " Passing by reference"?
Ans : objects – pass by referrence
Methods - pass by value
55) Is a class a subclass of itself?
Ans : A class is a subclass itself.
Ans : public.
7) Can we define a variable in an interface ?and what type it should be ?
Ans : Yes we can define a variable in an interface. They are implicitly final and static.
8) What is difference between interface and an abstract class?
Ans : All the methods declared inside an Interface are abstract. Where as abstract class must have at
least one abstract method and others may be concrete or abstract.
In Interface we need not use the keyword abstract for the methods.
9) By default, all program import the java.lang package.
True/False
Ans : True
10) Java compiler stores the .class files in the path specified in CLASSPATH
environmental variable.
True/False
Ans : False
11) User-defined package can also be imported just like the standard packages.
True/False
Ans : True
12) When a program does not want to handle exception, the ______class is used.
Ans : Throws
13) The main subclass of the Exception class is _______ class.
Ans : RuntimeException
14) Only subclasses of ______class may be caught or thrown.
Ans : Throwable
15) Any user-defined exception class is a subclass of the _____ class.
Ans : Exception
16) The catch clause of the user-defined exception class should ______ its
Base class catch clause.
Ans : Exception
17) A _______ is used to separate the hierarchy of the class while declaring an
Import statement.
Ans : Package
18) All standard classes of Java are included within a package called _____.
Ans : java.lang
19) All the classes in a package can be simultaneously imported using ____.
Ans : *
20) Can you define a variable inside an Interface. If no, why? If yes, how?
Ans.: YES. final and static
21) How many concrete classes can you have inside an interface?
Ans.: None
22) Can you extend an interface?
Ans.: Yes
23) Is it necessary to implement all the methods of an interface while implementing the interface?
Ans.: No
24) If you do not implement all the methods of an interface while implementing , what specifier should
you use for the class ?
Ans.: abstract
25) How do you achieve multiple inheritance in Java?
Ans: Using interfaces.
26) How to declare an interface example?
Ans : access class classname implements interface.
27) Can you achieve multiple interface through interface?
a)True
b) false
Ans : a.
28) Can variables be declared in an interface ? If so, what are the modifiers?
Ans : Yes. final and static are the modifiers can be declared in an interface.
29) What are the possible access modifiers when implementing interface methods?
Ans : public.
30) Can anonymous classes be implemented an interface?
Ans : Yes.
31) Interfaces can’t be extended.
a)True
b)False
Ans : b.
32) Name interfaces without a method?
Ans : Serializable, Cloneble & Remote.
33) Is it possible to use few methods of an interface in a class ? If so, how?
Ans : Yes. Declare the class as abstract.
Exception Handling
1) What is the difference between ‘throw’ and ‘throws’ ?And it’s 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 :
9) The finally block is executed when an exception is thrown, even if no catch matches it.
True/False
Ans : True
10) The subclass exception should precede the base class exception when used within the catch clause.
True/False
Ans : True
11) Exceptions can be caught or rethrown to a calling method.
True/False
Ans : True
12) The statements following the throw keyword in a program are not executed.
True/False
Ans : True
13) The toString ( ) method in the user-defined exception class is overridden.
True/False
Ans : True
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
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
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?
Ans : Wrapper classes are classes that allow primitive types to be accessed as objects.
Which of the following is not a wrapper class?
String
Integer
Boolean
Character
Ans : a.
What is the output of the following program?
public class Question {
public static void main(String args[]) {
String s1 = "abc";
String s2 = "def";
String s3 = s1.concat(s2.toUpperCase( ) );
System.out.println(s1+s2+s3);
}
}
abcdefabcdef
abcabcDEFDEF
abcdefabcDEF
None of the above
ANS : c.
Which of the following methods are methods of the String class?
delete( )
append( )
reverse( )
replace( )
Ans : d.
Which of the following methods cause the String object referenced by s to be changed?
s.concat( )
s.toUpperCase( )
s.replace( )
s.valueOf( )
Ans : a and b.
String is a wrapper class?
True
False
Ans : b.
17) If you run the code below, what gets printed out?
String s=new String("Bicycle");
int iBegin=1;
char iEnd=3;
System.out.println(s.substring(iBegin,iEnd));
Bic
ic
c) icy
d) error: no method matching substring(int,char)
Ans : b.
18) Given the following declarations
String s1=new String("Hello")
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 object’s 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
Runtime
Ans : a.
Which of the following are true?
The Class class is the superclass of the Object class.
The Object class is final.
The Class class can be used to load other classes.
The ClassLoader class can be used to load other classes.
Ans : c and d.
Which of the following methods are methods of the Math class?
absolute( )
log( )
cosine( )
sine( )
Ans : b.
Which of the following are true about the Error and Exception classes?
Both classes extend Throwable.
The Error class is final and the Exception class is not.
The Exception class is final and the Error is not.
Both classes implement Throwable.
Ans : a.
Which of the following are true?
The Void class extends the Class class.
The Float class extends the Double class.
The System class extends the Runtime class.
The Integer class extends the Number class.
Ans : d.
System.out.println(ten + nine);
int i=1;
System.out.println(i + ten);
19 followed by 20
19 followed by 11
Error: Can't convert java lang Integer
d) 10 followed by 1
Ans : c.
Ans : An I/O filter is an object that reads from one stream and writes to another, usually altering the
data in some way as it is passed from one stream to another.
What is the purpose of the File class?
Ans : The File class is used to create objects that provide access to the files and directories of a local
file system.
What interface must an object implement before it can be written to a stream as an object?
Ans : An object must implement the Serializable or Externalizable interface before it can be written to
a stream as an object.
What is the difference between the File and RandomAccessFile classes?
Ans : The File class encapsulates the files and directories of the local file system. The
RandomAccessFile class provides the methods needed to directly access data contained in any part of a
file.
What class allows you to read objects directly from a stream?
Ans : The ObjectInputStream class supports the reading of objects from input streams.
What value does read( ) return when it has reached the end of a file?
Ans : The read( ) method returns – 1 when it has reached the end of a file.
What value does readLine( ) return when it has reached the end of a file?
Ans : The readLine( ) method returns null when it has reached the end of a file.
How many bits are used to represent Unicode, ASCII, UTF-16 and UTF-8 characters?
Ans : Unicode requires 16-bits and ASCII requires 8-bits. Although the ASCII character set uses only
1-bits, it is usually represented as 8-bits. UTF-8 represents characters using 8, 16 and 18-bit patterns.
UTF-16 uses 16-bit and larger bit patterns.
Which of the following are true?
The InputStream and OutputStream classes are byte-oriented.
The ObjectInputStream and ObjectOutputStream do not support serialized object input and output.
The Reader and Writer classes are character-oriented.
The Reader and Writer classes are the preferred solution to serialized object output.
Ans : a and c.
Which of the following are true about I/O filters?
Filters are supported on input, but not on output.
Filters are supported by the InputStream/OutputStream class hierarchy, but not by the Reader/Writer
class hierarchy.
Filters read from one stream and write to another.
A filter may alter data that is read from one stream and written to another.
Ans : c and d.
Which of the following are true?
Any Unicode character is represented using 16-bits.
7-bits are needed to represent any ASCII character.
UTF-8 characters are represented using only 8-bits.
UTF-16 characters are represented using only 16-bits.
Ans : a and b.
Which of the following are true?
The Serializable interface is used to identify objects that may be written to an output stream.
The Externalizable interface is implemented by classes that control the way in which their objects are
serialized.
The Serializable interface extends the Externalizable interface.
The Externalizable interface extends the Serializable interface.
Ans : a, b and d.
Which of the following are true about the File class?
A File object can be used to change the current working directory.
A File object can be used to access the files in the current directory.
When a File object is created, a corresponding directory or file is created in the local file system.
File objects are used to access files and directories on the local file system.
File objects can be garbage collected.
When a File object is garbage collected, the corresponding file or directory is deleted.
Ans : b, d and e.
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.
A component subclass that has executed enableEvents( ) to enable processing of a certain kind of event
cannot also use an adapter as a listener for the same kind of event.
True
False
Ans : b.
What is the highest-level event class of the event-delegation model?
Ans : The java.util.eventObject class is the highest-level class in the event-delegation hierarchy.
What interface is extended by AWT event listeners?
Ans : All AWT event listeners extend the java.util.EventListener interface.
What class is the top of the AWT event hierarchy?
Ans : The java.awt.AWTEvent class is the highest-level class in the AWT event class hierarchy.
What event results from the clicking of a button?
Ans : The ActionEvent event is generated as the result of the clicking of a button.
What is the relationship between an event-listener interface and an event-adapter class?
Ans : An event-listener interface defines the methods that must be implemented by an event
handler for a particular kind of event.
An event adapter provides a default implementation of an event-listener interface.
In which package are most of the AWT events that support the event-delegation model defined?
Ans : Most of the AWT–related events of the event-delegation model are defined in the
java.awt.event package. The AWTEvent class is defined in the java.awt package.
What is the advantage of the event-delegation model over the earlier event-inheritance model?
Ans : The event-delegation has two advantages over the event-inheritance model. They are :
It enables event handling by objects other than the ones that generate the events. This
allows a clean separation between a component’s design and its use.
It performs much better in applications where many events are generated. This
performance improvement is due to the fact that the event-delegation model does not
have to repeatedly process unhandled events, as is the case of the event-inheritance
model.
What is the purpose of the enableEvents( ) method?
Ans :The enableEvents( ) method is used to enable an event for a particular object.
Which of the following are true?
The event-inheritance model has replaced the event-delegation model.
The event-inheritance model is more efficient than the event-delegation model.
The event-delegation model uses event listeners to define the methods of event-handling classes.
The event-delegation model uses the handleEvent( ) method to support event handling.
Ans : c.
Which of the following is the highest class in the event-delegation model?
java.util.EventListener
java.util.EventObject
java.awt.AWTEvent
java.awt.event.AWTEvent
Ans : b.
When two or more objects are added as listeners for the same event, which listener is first invoked to
handle the event?
The first object that was added as listener.
The last object that was added as listener.
There is no way to determine which listener will be invoked first.
It is impossible to have more than one listener for a given event.
Ans : c.
Which of the following components generate action events?
Buttons
Labels
Check boxes
Windows
Ans : a.
Which of the following are true?
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 don’t have the concept of Constructors in Applets.
How do we read number information from my applet’s parameters, given that Applet’s getParameter()
method returns a string?
Ans : Use the parseInt() method in the Integer Class, the Float(String) constructor in the
Yellow
Cyan
Black
Ans : d.
What does the following code draw?
g.setColor(Color.black);
g.drawLine(10, 10, 10, 50);
g.setColor(Color.RED);
g.drawRect(100, 100, 150, 150);
A red vertical line that is 40 pixels long and a red square with sides of 150 pixels
A black vertical line that is 40 pixels long and a red square with sides of 150 pixels
A black vertical line that is 50 pixels long and a red square with sides of 150 pixels
A red vertical line that is 50 pixels long and a red square with sides of 150 pixels
A black vertical line that is 40 pixels long and a red square with sides of 100 pixel
Ans : b.
Which of the statements below are true?
A polyline is always filled.
b) A polyline can not be filled.
c) A polygon is always filled.
d) A polygon is always closed
e) A polygon may be filled or not filled
Ans : b, d and e.
What code would you use to construct a 24-point bold serif font?
new Font(Font.SERIF, 24,Font.BOLD);
new Font("SERIF", 24, BOLD");
new Font("BOLD ", 24,Font.SERIF);
new Font("SERIF", Font.BOLD,24);
new Font(Font.SERIF, "BOLD", 24);
Ans : d.
What does the following paint( ) method draw?
Public void paint(Graphics g) {
g.drawString("question #6",10,0);
}
The string "question #6", with its top-left corner at 10,0
A little squiggle coming down from the top of the component, a little way in from the left edge
Ans : b.
g.drawString("Dolly",50,10);
}
What will be the result when you attempt to compile and run the program?
The string "Dolly" will be displayed at the centre of the frame
b) An error at compilation complaining at the signature of the paint method
c) The lower part of the word Dolly will be seen at the top of the form, with the top hidden.
d) The string "Dolly" will be shown at the bottom of the form
Ans : c.
20) Where g is a graphics instance what will the following code draw on the screen.
g.fillArc(45,90,50,50,90,180);
a) An arc bounded by a box of height 45, width 90 with a centre point of 50,50, starting
at an angle of 90 degrees traversing through 180 degrees counter clockwise.
b) An arc bounded by a box of height 50, width 50, with a centre point of 45,90 starting
at an angle of 90 degrees traversing through 180 degrees clockwise.
c) An arc bounded by a box of height 50, width 50, with a top left at coordinates of 45,
90, starting at 90 degrees and traversing through 180 degrees counter clockwise.
d) An arc starting at 45 degrees, traversing through 90 degrees clockwise bounded by a
box of height 50, width 50 with a centre point of 90, 180.
Ans : c.
21) Given the following code
import java.awt.*;
public class SetF extends Frame{
public static void main(String argv[]){
SetF s = new SetF();
s.setSize(300,200);
s.setVisible(true);
}
}
How could you set the frame surface color to pink
a)s.setBackground(Color.pink);
b)s.setColor(PINK);
c)s.Background(pink);
d)s.color=Color.pink
Ans : a.
MenuBar
FileDialog
Applet
Ans : a,d and e.
19) Which method is used to set the text of a Label object?
setText( )
setLabel( )
setTextLabel( )
setLabelText( )
Ans : a.
20) Which constructor creates a TextArea with 10 rows and 20 columns?
new TextArea(10, 20)
new TextArea(20, 10)
new TextArea(new Rows(10), new columns(20))
new TextArea(200)
Ans : a.
(Usage is TextArea(rows, columns)
21) Which of the following creates a List with 5 visible items and multiple selection enabled?
new List(5, true)
new List(true, 5)
new List(5, false)
new List(false,5)
Ans : a.
[Usage is List(rows, multipleMode)]
22) Which are true about the Container class?
The validate( ) method is used to cause a Container to be laid out and redisplayed.
The add( ) method is used to add a Component to a Container.
The getBorder( ) method returns information about a Container’s insets.
The getComponent( ) method is used to access a Component that is contained in a Container.
Ans : a, b and d.
23) Suppose a Panel is added to a Frame and a Button is added to the Panel. If the Frame’s font is set to
12-point TimesRoman, the Panel’s font is set to 10-point TimesRoman, and the Button’s font is not set,
what font will be used to dispaly the Button’s label?
12-point TimesRoman
11-point TimesRoman
10-point TimesRoman
9-point TimesRoman
Ans : c.
A Frame’s background color is set to Color.Yellow, and a Button’s background color is to Color.Blue.
Suppose the Button is added to a Panel, which is added to the Frame. What background color will be
used with the Panel?
Colr.Yellow
Color.Blue
Color.Green
Color.White
Ans : a.
25) Which method will cause a Frame to be displayed?
show( )
setVisible( )
display( )
displayFrame( )
Ans : a and b.
26) All the componenet classes and container classes are derived from _________ class.
Ans : Object.
27) Which method of the container class can be used to add components to a Panel.
Ans : add ( ) method.
aWindow.setLayout(new FlowLayout());
aWindow.add(new Button("Press Me"));
aWindow.getBounds(50,50,200,200);
aWindow.show();
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 bar’s height would be its preferred height, which is not likely to be enough.
The scroll bar’s width would be the entire width of the frame, which would be much wider than
necessary.
Both a and b.
Neither a nor b. There is no problem with the layout as described.
Ans : c.
What is the default layouts for a applet, a frame and a panel?
Ans : For an applet and a panel, Flow layout is the default layout, whereas Border layout is default
layout for a frame.
If a frame uses a Grid layout manager and does not contain any panels, then all the components within
the frame are the same width and height.
True
False.
Ans : a.
If a frame uses its default layout manager and does not contain any panels, then all the components
within the frame are the same width and height.
True
False.
Ans : b.
With a Border layout manager, the component at Center gets all the space that is left over, after the
components at North and South have been considered.
True
False
Ans : b.
An Applet has its Layout Manager set to the default of FlowLayout. What code would be the correct to
change to another Layout Manager?
setLayoutManager(new GridLayout());
setLayout(new GridLayout(2,2));
c) setGridLayout(2,2,))
d setBorderLayout();
Ans : b.
55) How do you indicate where a component will be positioned using Flowlayout?
a) North, South,East,West
b) Assign a row/column grid reference
c) Pass a X/Y percentage parameter to the add method
d) Do nothing, the FlowLayout will position the component
Ans :d.
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?
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()
Answer : 1,2,3,5
What is the parameter specification for the public static void main method?
(multiple)
1) String args []
2) String [] args
3) Strings args []
4) String args
Answer : 1,2
What does the zeroth element of the string array passed to the public static void main method contain?
(multiple)
1) The name of the program
2) The number of arguments
3) The first argument if one is present
Answer : 3
Which of the following are Java keywords?
(multiple)
1) goto
2) malloc
3) extends
4) FALSE
Answer : 3
What will be the result of compiling the following code:
public class Test {
public static void main (String args []) {
int age;
age = age + 1;
System.out.println("The age is " + age);
}
}
1) Compiles and runs with no output
2) Compiles and runs printing out The age is 1
3) Compiles but generates a runtime error
4) Does not compile
5) Compiles but generates a compile time error
Answer : 4
Which of these is the correct format to use to create the literal char value a?
(multiple)
1) 'a'
2) "a"
3) new Character(a)
4) \000a
Answer : 1
What is the legal range of a byte integral type?
1) 0 - 65, 535
2) (-128) - 127
3) (-32,768) - 32,767
4) (-256) - 255
Answer : 2
Which of the following is illegal:
1) int i = 32;
2) float f = 45.0;
3) double d = 45.0;
Answer 2
What will be the result of compiling the following code:
public class Test {
static int age;
try {
int c = a / b;
} catch (Exception e) {
System.out.print("Exception ");
} finally {
System.out.println("Finally");
}
1) Prints out: Exception Finally
2) Prints out: Finally
3) Prints out: Exception
4) No output
Answer : 1
Which of the following is a legal return type of a method overloading the following method:
public void add(int a) {...}
1) void
2) int
3) Can be anything
Answer : 3
Which of the following statements is correct for a method which is overriding the following method:
public void add(int a) {...}
1) the overriding method must return void
2) the overriding method must return int
3) the overriding method can return whatever it likes
Answer : 1
Given the following classes defined in separate files, what will be the effect of compiling and running
this class Test?
class Vehicle {
public void drive() {
System.out.println("Vehicle: drive");
}
}
class Car extends Vehicle {
public void drive() {
System.out.println("Car: drive");
}
}
public class Test {
public static void main (String args []) {
Vehicle v;
Car c;
v = new Vehicle();
c = new Car();
v.drive();
c.drive();
v = c;
v.drive();
}
}
1) Generates a Compiler error on the statement v= c;
2) Generates runtime error on the statement v= c;
3) Prints out:
Vehicle: drive
Car: drive
Car: drive
4) Prints out:
Vehicle: drive
Car: drive
Vehicle: drive
Answer : 3
Where in a constructor, can you place a call to a constructor defined in the super class?
1) Anywhere
2) The first statement in the constructor
3) The last statement in the constructor
4) You can't call super in a constructor
Answer : 2
Which variables can an inner class access from the class which encapsulates it?
(multiple)
1) All static variables
2) All final variables
3) All instance variables
4) Only final instance variables
5) Only final static variables
Answer : 1,2,3
What class must an inner class extend:
1) The top level class
2) The Object class
3) Any class or interface
4) It must extend an interface
Answer 3
In the following code, which is the earliest statement, where the object originally held in e, may be
garbage collected:
1. public class Test {
2. public static void main (String args []) {
3. Employee e = new Employee("Bob", 48);
4. e.calculatePay();
5. System.out.println(e.printDetails());
6. e = null;
7. e = new Employee("Denise", 36);
8. e.calculatePay();
9. System.out.println(e.printDetails());
10. }
11. }
1) Line 10
2) Line 11
3) Line 7
4) Line 8
5) Never
Answer : 3
What is the name of the interface that can be used to define a class that can execute within its own
thread?
1) Runnable
2) Run
3) Threadable
4) Thread
5) Executable
Answer : 1
What is the name of the method used to schedule a thread for execution?
1) init();
2) start();
3) run();
4) resume();
5) sleep();
Answer : 2
Which methods may cause a thread to stop executing?
(multiple)
1) sleep();
2) stop();
3) yield();
4) wait();
5) notify();
6) notifyAll()
7) synchronized()
Answer : 1,2,3,4
Which of the following would create a text field able to display 10 characters (assuming a fixed size
font) displaying the initial string "hello":
1) new TextField("hello", 10);
2) new TextField("hello");
3) new textField(10);
4) new TextField();
Answer : 1
Which of the following methods are defined on the Graphics class:
(multiple)
1) drawLine(int, int, int, int)
2) drawImage(Image, int, int, ImageObserver)
3) drawString(String, int, int)
4) add(Component);
5) setVisible(boolean);
6) setLayout(Object);
Answer : 1,2,3
Which of the following layout managers honours the preferred size of a component:
(multiple)
1) CardLayout
2) FlowLayout
3) BorderLayout
4) GridLayout
Answer : 2
Given the following code what is the effect of a being 5:
public class Test {
public void add(int a) {
loop: for (int i = 1; i < 3; i++){
for (int j = 1; j < 3; j++) {
if (a == 5) {
break loop;
}
System.out.println(i * j);
}
}
}
}
1) Generate a runtime error
2) Throw an ArrayIndexOutOfBoundsException
3) Print the values: 1, 2, 2, 4
4) Produces no output
Answer : 4
What is the effect of issuing a wait() method on an object
1) If a notify() method has already been sent to that object then it has no effect
2) The object issuing the call to wait() will halt until another object sends a notify() or notifyAll()
method
} else {
System.out.println("false");
}
1) true is printed to standard out
2) false is printed to standard out
3) An exception is raised
4) Nothing happens
Answer : 1
Consider the following classes. What is the result of compiling and running this class?
public class Test {
public static void test() {
this.print();
}
public static void print() {
System.out.println("Test");
}
public static void main(String args []) {
test();
}
}
(multiple)
1) The string Test is printed to the standard out.
2) A runtime exception is raised stating that an object has not been created.
3) Nothing is printed to the standard output.
4) An exception is raised stating that the method test cannot be found.
5) An exception is raised stating that the variable this can only be used within an instance.
6) The class fails to compile stating that the variable this is undefined.
Answer : 6
Examine the following class definition:
public class Test {
public static void test() {
print();
}
public static void print() {
System.out.println("Test");
}
public void print() {
System.out.println("Another Test");
}
}
What is the result of compiling this class:
1) A successful compilation.
2) A warning stating that the class has no main method.
3) An error stating that there is a duplicated method.
4) An error stating that the method test() will call one or other of the print() methods.
Answer : 3
What is the result of compiling and executing the following Java class:
public class ThreadTest extends Thread {
public void run() {
System.out.println("In run");
suspend();
resume();
System.out.println("Leaving run");
}
public static void main(String args []) {
(new ThreadTest()).start();
}
}
1) Compilation will fail in the method main.
2) Compilation will fail in the method run.
3) A warning will be generated for method run.
4) The string "In run" will be printed to standard out.
5) Both strings will be printed to standard out.
6) Nothing will happen.
Answer : 4
Given the following sequence of Java statements, Which of the following options are true:
1. StringBuffer sb = new StringBuffer("abc");
2. String s = new String("abc");
3. sb.append("def");
4. s.append("def");
5. sb.insert(1, "zzz");
6. s.concat(sb);
7. s.trim();
(multiple)
1) The compiler would generate an error for line 1.
2) The compiler would generate an error for line 2.
3) The compiler would generate an error for line 3.
4) The compiler would generate an error for line 4.
5) The compiler would generate an error for line 5.
6) The compiler would generate an error for line 6.
7) The compiler would generate an error for line 7.
Answer : 4,6
What is the result of executing the following Java class:
import java.awt.*;
public class FrameTest extends Frame {
public FrameTest() {
add (new Button("First"));
add (new Button("Second"));
add (new Button("Third"));
pack();
setVisible(true);
}
public static void main(String args []) {
new FrameTest();
}
}
1) Nothing happens.
2) Three buttons are displayed across a window.
3) A runtime exception is generated (no layout manager specified).
4) Only the "first" button is displayed.
5) Only the "second" button is displayed.
6) Only the "third" button is displayed.
Answer : 6
Consider the following tags and attributes of tags, which can be used with the <AAPLET> and
</APPLET> tags?
1. CODEBASE
2. ALT
3. NAME
4. CLASS
5. JAVAC
6. HORIZONTALSPACE
7. VERTICALSPACE
8. WIDTH
9. PARAM
10. JAR
(multiple)
1) line 1, 2, 3
2) line 2, 5, 6, 7
3) line 3, 4, 5
4) line 8, 9, 10
5) line 8, 9
Answer : 1,5
Which of the following is a legal way to construct a RandomAccessFile:
1) RandomAccessFile("data", "r");
2) RandomAccessFile("r", "data");
3) RandomAccessFile("data", "read");
4) RandomAccessFile("read", "data");
Answer : 1
Carefully examine the following code, When will the string "Hi there" be printed?
public class StaticTest {
static {
System.out.println("Hi there");
}
public void print() {
System.out.println("Hello");
}
public static void main(String args []) {
StaticTest st1 = new StaticTest();
st1.print();
StaticTest st2 = new StaticTest();
st2.print();
}
}
1) Never.
2) Each time a new instance is created.
3) Once when the class is first loaded into the Java virtual machine.
4) Only when the static method is called explicitly.
Answer : 3
What is the result of the following program:
public class Test {
public static void main (String args []) {
boolean a = false;
if (a = true)
System.out.println("Hello");
else
System.out.println("Goodbye");
}
}
1) Program produces no output but terminates correctly.
2) Program does not terminate.
3) Prints out "Hello"
4) Prints out "Goodbye"
Answer : 3
Examine the following code, it includes an inner class, what is the result:
public final class Test4 {
class Inner {
void test() {
if (Test4.this.flag); {
sample();
}
}
}
private boolean flag = true;
public void sample() {
System.out.println("Sample");
}
public Test4() {
(new Inner()).test();
}
public static void main(String args []) {
new Test4();
}
}
1) Prints out "Sample"
2) Program produces no output but terminates correctly.
3) Program does not terminate.
4) The program will not compile
Answer : 1
Carefully examine the following class:
public class Test5 {
public static void main (String args []) {
/* This is the start of a comment
if (true) {
Test5 = new test5();
System.out.println("Done the test");
}
/* This is another comment */
System.out.println ("The end");
}
}
1) Prints out "Done the test" and nothing else.
2) Program produces no output but terminates correctly.
3) Program does not terminate.
4) The program will not compile.
5) The program generates a runtime exception.
6) The program prints out "The end" and nothing else.
7) The program prints out "Done the test" and "The end"
Answer : 6
What is the result of compiling and running the following applet:
import java.applet.Applet;
import java.awt.*;
public class Sample extends Applet {
private String text = "Hello World";
public void init() {
add(new Label(text));
}
public Sample (String string) {
text = string;
}
}
It is accessed form the following HTML page:
<html>
<title>Sample Applet</title>
<body>
Utility Package
Answer : The properties class is a subclass of Hashtable that can be read from or written to a stream.It
also provides the capability to specify a set of default values to be used if a specified key is not found
in the table. We have two methods load() and save().
6) What changes are needed to make the following prg to compile?
import java.util.*;
class Ques{
public static void main (String args[]) {
String s1 = "abc";
String s2 = "def";
Vector v = new Vector();
v.add(s1);
v.add(s2);
String s3 = v.elementAt(0) + v.elementAt(1);
System.out.println(s3);
}
}
ANSWER : Declare Ques as public B) Cast v.elementAt(0) to a String
C) Cast v.elementAt(1) to an Object. D) Import java.lang
ANSWER : B) Cast v.elementAt(0) to a String
set.add(s1);
set.add(s2);
Iterator i = set.iterator();
while(i.hasNext())
{
s3 += (String) i.next();
}
System.out.println(s3);
}
}
A) abcdefabcdef B) defabcdefabc C) fedcbafedcba D) defabc
ANSWER : D) defabc. Sets may not have duplicate elements.
12) Which of the following java.util classes support internationalization?
A) Locale B) ResourceBundle C) Country D) Language
ANSWER : A and B . Country and Language are not java.util classes.
13) What is the ResourceBundle?
The ResourceBundle class also supports internationalization.
ResourceBundle subclasses are used to store locale-specific resources that can be loaded by a program
to tailor the program's appearence to the paticular locale in which it is being run. Resource Bundles
provide the capability to isolate a program's locale-specific resources in a standard and modular
manner.
14) How are Observer Interface and Observable class, in java.util package, used?
ANSWER : Objects that subclass the Observable class maintain a list of Observers. When an
Observable object is updated it invokes the update() method of each of its observers to notify the
observers that it has changed state. The Observer interface is implemented by objects that observe
Observable objects.
15) Which java.util classes and interfaces support event handling?
ANSWER : The EventObject class and the EventListener interface support event processing.
16) Does java provide standard iterator functions for inspecting a collection of objects?
ANSWER : The Enumeration interface in the java.util package provides a framework for stepping
once through a collection of objects. We have two methods in that interface.
public interface Enumeration {
boolean hasMoreElements();
Object nextElement();
}
17) The Math.random method is too limited for my needs- How can I generate random numbers
more flexibly?
ANSWER : The random method in Math class provide quick, convienient access to random numbers,
but more power and flexibility use the Random class in the java.util package.
double doubleval = Math.random();
The Random class provide methods returning float, int, double, and long values.
nextFloat() // type float; 0.0 <= value < 1.0
nextDouble() // type double; 0.0 <= value < 1.0
nextInt() // type int; Integer.MIN_VALUE <= value <= Integer.MAX_VALUE
nextLong() // type long; Long.MIN_VALUE <= value <= Long.MAX_VALUE
nextGaussian() // type double; has Gaussian("normal") distribution with mean 0.0 and standard
deviation 1.0)
Eg. Random r = new Random();
float floatval = r.nextFloat();
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.
Eg.
PreparedStatement updateSales = con.prepareStatement("UPDATE COFFEES SET SALES = ?
WHERE COF_NAME LIKE ?");
9) What setAutoCommit does?
ANSWER : When a connection is created, it is in auto-commit mode. This means that each individual
SQL statement is treated as a transaction and will be automatically committed right after it is executed.
The way to allow two or more statements to be grouped into a transaction is to disable auto-commit
mode
Eg.
con.setAutoCommit(false);
Once auto-commit mode is disabled, no SQL statements will be committed until you call the method
commit explicitly.
Eg.
con.setAutoCommit(false);
PreparedStatement updateSales = con.prepareStatement(
"UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ?");
updateSales.setInt(1, 50);
updateSales.setString(2, "Colombian");
updateSales.executeUpdate();
PreparedStatement updateTotal = con.prepareStatement("UPDATE COFFEES SET TOTAL = TOTAL
+ ? WHERE COF_NAME LIKE ?");
updateTotal.setInt(1, 50);
updateTotal.setString(2, "Colombian");
updateTotal.executeUpdate();
con.commit();
con.setAutoCommit(true);
10) How to call a Strored Procedure from JDBC?
ANSWER : The first step is to create a CallableStatement object. As with Statement an and
PreparedStatement objects, this is done with an open Connection
object. A CallableStatement object contains a call to a stored procedure;
Eg.
CallableStatement cs = con.prepareCall("{call SHOW_SUPPLIERS}");
ResultSet rs = cs.executeQuery();
11) How to Retrieve Warnings?
ANSWER : SQLWarning objects are a subclass of SQLException that deal with database access
warnings. Warnings do not stop the execution of an application, as exceptions do; they simply alert the
user that something did not happen as planned.
A warning can be reported on a Connection object, a Statement object (including PreparedStatement
and CallableStatement objects), or a ResultSet object. Each of these classes has a getWarnings method,
which you must invoke in order to see the first warning reported on the calling object
Eg.
SQLWarning warning = stmt.getWarnings();
if (warning != null) {
System.out.println("\n---Warning---\n");
while (warning != null) {
System.out.println("Message: " + warning.getMessage());
System.out.println("SQLState: " + warning.getSQLState());
System.out.print("Vendor error code: ");
System.out.println(warning.getErrorCode());
System.out.println("");
warning = warning.getNextWarning();
}
}
12) How can you Move the Cursor in Scrollable Result Sets ?
ANSWER : One of the new features in the JDBC 2.0 API is the ability to move a result set's cursor
backward as well as forward. There are also methods that let you move the cursor to a particular row
and check the position of the cursor.
Eg.
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet srs = stmt.executeQuery("SELECT COF_NAME, PRICE FROM COFFEES");
The first argument is one of three constants added to the ResultSet API to indicate the type of a
ResultSet object: TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE , and
TYPE_SCROLL_SENSITIVE .
The second argument is one of two ResultSet constants for specifying whether a result set is read-only
or updatable: CONCUR_READ_ONLY and CONCUR_UPDATABLE . The point to remember here
is that if you specify a type, you must also specify whether it is read-only or updatable. Also, you must
specify the type first, and because both parameters are of type int , the compiler will not complain if
you switch the order.
Specifying the constant TYPE_FORWARD_ONLY creates a nonscrollable result set, that is, one in
which the cursor moves only forward. If you do not specify any constants for the type and updatability
of a ResultSet object, you will automatically get one that is TYPE_FORWARD_ONLY and
CONCUR_READ_ONLY
13) What’s the difference between TYPE_SCROLL_INSENSITIVE , and
TYPE_SCROLL_SENSITIVE?
ANSWER : You will get a scrollable ResultSet object if you specify one of these ResultSet
constants.The difference between the two has to do with whether a result set reflects changes that are
made to it while it is open and whether certain methods can be called to detect these changes.
Generally speaking, a result set that is TYPE_SCROLL_INSENSITIVE does not reflect changes made
while it is still open and one that is TYPE_SCROLL_SENSITIVE does. All three types of result sets
will make changes visible if they are closed and then reopened
Eg.
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet srs = stmt.executeQuery("SELECT COF_NAME, PRICE FROM COFFEES");
srs.afterLast();
while (srs.previous()) {
String name = srs.getString("COF_NAME");
float price = srs.getFloat("PRICE");
System.out.println(name + " " + price);
}
14) How to Make Updates to Updatable Result Sets?
ANSWER : Another new feature in the JDBC 2.0 API is the ability to update rows in a result set using
methods in the Java programming language rather than having to send an SQL command. But before
you can take advantage of this capability, you need to create a ResultSet object that is updatable. In
order to do this, you supply the ResultSet constant CONCUR_UPDATABLE to the createStatement
method.
Eg.
Connection con = DriverManager.getConnection("jdbc:mySubprotocol:mySubName");
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet uprs = stmt.executeQuery("SELECT COF_NAME, PRICE FROM COFFEES");
Networking Concepts
1) The API doesn't list any constructors for InetAddress- How do I create an InetAddress
instance?
ANSWER : In case of InetAddress the three methods getLocalHost, getByName, getByAllName can
be used to create instances.
E.g.
InetAddress add1;
InetAddress add2;
try{
add1 = InetAddress.getByName("java.sun.com");
add2 = InetAddress.getByName("199.22.22.22");
}catch(UnknownHostException e){}
2) Is it possible to get the Local host IP?
ANSWER : Yes. Use InetAddress's getLocalHost method.
3) What's the Factory Method?
ANSWER : Factory methods are merely a convention whereby static methods in a class return an
instance of that class. The InetAddress class has no visible constructors. To create an InetAddress
object, you have to use one of the available factory methods. In InetAddress the three methods
getLocalHost, getByName, getByAllName can be used to create instances of InetAddress.
4) What’s the difference between TCP and UDP?
ANSWER : These two protocols differ in the way they carry out the action of communicating. A TCP
protocol establishes a two way connection between a pair of computers, while the UDP protocol is a
one-way message sender. The common analogy is that TCP is like making a phone call and carrying on
a two-way communication, while UDP is like mailing a letter.
5) What is the Proxy Server?
ANSWER : A proxy server speaks the client side of a protocol to another server. This is often required
when clients have certain restrictions on which servers they can connect to. And when several users are
hitting a popular web site, a proxy server can get the contents of the web server's popular pages once,
saving expensive internetwork transfers while providing faster access to those pages to the clients.
Also, we can get multiple connections for a single server.
6) What are the seven layers of OSI model?
ANSWER : Application, Presentation, Session, Transport, Network, DataLink, Physical Layer.
What Transport Layer does?
ANSWER : It ensures that the mail gets to its destination. If a packet fails to get its destination, it
handles the process of notifying the sender and requesting that another packet be sent.
8) What is DHCP?
ANSWER : Dynamic Host Configuration Protocol, a piece of the TCP/IP protocol suite that handles
the automatic assignment of IP addresses to clients.
9) What is SMTP?
ANSWER : Simple Mail Transmission Protocol, the TCP/IP Standard for Internet mails. SMTP
exchanges mail between servers; contrast this with POP, which transmits mail between a server and a
client.
10) In OSI N/w architecture, the dialogue control and token management are responsibilities of...
Answer : Network b) Session c) Application d) DataLink
ANSWER : b) Session Layer.
11) In OSI N/W Architecture, the routing is performed by ______
Answer : Network b) Session c) Application d) DataLink
ANSWER : Answer : Network Layer.
Networking
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 System’s 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
The input stream, ServletInputStream.Servlets use the input stream to get data from clients that use
application protocols such as the HTTP POST and PUT methods.
8) What information that the ServletResponse interface gives the servlet methods for replying to
the client?
ANSWER : It Allows the servlet to set the content length and MIME type of the reply.
Provides an output stream, ServletOutputStream and a Writer through which the servlet can send the
reply data.
9) What is the servlet Lifecycle?
ANSWER : Each servlet has the same life cycle:
A server loads and initializes the servlet (init())
The servlet handles zero or more client requests (service())
The server removes the servlet (destroy())
(some servers do this step only when they shut down)
10) How HTTP Servlet handles client requests?
ANSWER : An HTTP Servlet handles client requests through its service method. The service method
supports standard HTTP client requests by dispatching each request to a method designed to handle
that request. 1
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 short-
circuit logical operators. It is represented by || and &&..
12. Switch:
The switch statement is Java’s multiway branch statement. It provides an easy way to
dispatch execution to different parts of your code based on the value of an
experession.
13. Jump Statements:
Jump statements are the statements which transfer control to another part of your
program. Java Supports three jump statements: break, continue, and return.
14. Instance Variables:
The data, or variable, defined within a class are called instance variable.
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)
a) 1/2 second
b) 1 seconds
c) 4 seconds
d) 2 seconds
Ans: (a)
a) only one
b) more han one
c) two hops
d) four hops
Ans: (c)
a) 128
b) 256
c) 255
d) 512
Ans: (c)
a) register
b) accumulator
c) flag register
d) flag register part of PSW(Program Status Word)
Ans: (d)
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
Ans: (c)
Ans: (b)
a) Processor serves the interrupt request after completing the execution of the
current instruction.
b) Processor serves the interupt request after completing the current task.
c) Processor serves the interupt request immediately.
d) Processor serving the interrupt request depends upon the priority of the
current task under execution.
Ans: (a)
a) task
b) process
c) not defined.
d) none of the above.
Ans: (b)
Ans: (c)
Ans: (a)
13 When a 'C' function call is made, the order in which parameters passed to the
function are pushed into the stack is
a) left to right
b) right to left
c) bigger variables are moved first than the smaller variales.
d) smaller variables are moved first than the bigger ones.
e) none of the above.
Ans: (b)
a) inband
b) common channel signalling
c) any of the above
d) none of the above.
Ans: (a)
15 Buffering is
a) the process of temporarily storing the data to allow for small variation in
device speeds
b) a method to reduce cross talks
c) storage of data within transmitting medium until the receiver is ready to
receive.
d) a method to reduce routing overhead.
Ans: (a)
a) allocated in RAM.
b) allocated in ROM.
c) allocated on stack.
d) assigned to registers.
Ans: (c)
a) terminal adapter
b) bulletin board
c) modem
d) terminal emulation
Ans: (d)
int *p,*q;
p=(int *)1000;
q=(int *)2000;
printf("%d",(q-p));
Ans: 500
Ans: (b)
Ans. 110100
Ans. 72A
28.EDI useful in
30. Hard disk time for R/W head to move to correct sector
31. The percentage of times a page number bound in associate register is called
Ans. Interrelated
(a) Multiuser
(b) n tasks
(c) Both
(d) None
Ans. (a)
38.A thread is
48.What is a semaphore
49.What is the precedence order from high to low ,of the symbols ( ) ++ /
Ans.( ) , ++, /
50.Preorder of A*(B+C)/D-G
Ans.*+ABC/-DG
54.In binary search tree which traversal is used for getting ascending order
values--Inorder ,post order,preorder
Ans.Inorder
Ans.inode block
Ans: (a)
Ans: (b)
(a)11
(b)16
(c)22
(d) 24
Ans. (b)
(a) synchronization
(b) dead-lock avoidence
(c) box
(d) none
Ans. (a)
Ans. (a)
(a) macro
(b) conditional compliclation
(c) in type checking
(d) including load file
Ans. (c)
a) Flow control
b) Sequence
c) Acknowledgement
d) retransmition
Ans. (c)
a) buddy system
b) swapping
c) monitors
d) paging
Ans : c
68. There was a circuit given using three nand gates with two inputs and one output.
Find the output.
a) OR
b) AND
c) XOR
d) NOT
Ans. (a)
Ans. The client computes the ICV and then compares it with the senders value.
70. When applets are downloaded from web sites , a byte verifier performs _________?
71. An IP/IPX packet received by a computer using... having IP/IPX both how the packet is handled.
Ans. Read the, field in the packet header with to send IP or IPX protocol.
Ans. (b)
Ans. Is a data structure that defines all specifications of a file like the file size,
number of lines to a file, permissions etc.
74. The very first process created by the kernal that runs till the kernal process is
halts is
a) init
b) getty
c) both (a) and (b)
d) none of these
Ans. (a)
75. In the process table entry for the kernel process, the process id value is
(a) 0
(b) 1
(c) 2
(d) 255
(e) it does not have a process table entry
Ans. (a)
a) ShowWindow
b) EnableWindow
c) MoveWindow
d) SetWindowPlacement
e) None of the above
Ans. (a)
77. Which function is the entry point for a DLL in MS Windows 3.1
a) Main
b) Winmain
c) Dllmain
d) Libmain
e) None
Ans. (b)
78. The standard source for standard input, standard output and standard error is
a) the terminal
b) /dev/null
c) /usr/you/input, /usr/you/output/, /usr/you/error respectively
d) None
Ans. (a)
Ans. (b)
a) prints lines containing the words first, second or third from the file
/usr/you/myfile
b) searches for lines containing the pattern first in the files
second, third, and /usr/you/myfile and prints them
c) searches the files /usr/you/myfiel and third for lines containing the words first
or second and prints them
d) replaces the word first with the word second in the files third and
/usr/you/myfile
e) None of the above
Ans. (b)
81. You are creating a Index on EMPNO column in the EMPLOYEE table. Which
statement will you use?
a) CREATE INdEX emp_empno_idx ON employee, empno;
b) CREATE INdEX emp_empno_idx FOR employee, empno;
c) CREATE INdEX emp_empno_idx ON employee(empno);
d) CREATE emp_empno_idx INdEX ON employee(empno);
Ans. c
Ans. b
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
Ans. a ,b ,f
Ans.d
86. What was the first name given to Java Programming Language.
a) Oak - Java
b) Small Talk
c) Oak
d) None
Ans.a
87.When a bicycle is in motion,the force of friction exerted by the ground on the two
wheels is such that it acts
(a) In the backward direction on the front wheel and in the forward direction on the
rear wheel.
(b) In the forward direction on the front wheel and in the backward direction on the
rear wheel.
(c) In the backward direction on both the front and rear wheels.
(d) In the backward direction on both the front and rear wheels.
Ans. (d)
(a) 29%
(b) 15%
(c) 10%
(d) 45%
Ans. (a)
Ans. (b)
Ans. (b)
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)
(a) 3/8
(b) 5/8
(c) 3/4
(d) None of the above
Ans. (a)
Ans. (a)
(a) (-1,-4)
(b) (-1,4)
(c) (2,-4)
(d) (-2,-4)
Ans. (a)
Ans. (c)
Ans. (c)
(a) The two interfering waves must be propagated in almost the same direction or
the two interfering waves must intersect at a very small angle
(b) The waves must have the same time period and wavelength
(c) Amplitude of the two waves should be the same
(d) The interfering beams of light must originate from the same source
Ans. (c)
Ans. (c)
Ans. (b)
(a) 1
(b) 2
(c) 0
(d) 4
Ans. (d)
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:
¾ File owner identifier
¾ File type
¾ File access permissions
¾ File access times
¾ Number of links
¾ File size
¾ Location of the file data
7. What is a FIFO?
FIFO are otherwise called as 'named pipes'. FIFO (first-in-first-out) is a
special file which is said to be data transient. Once data is read from named pipe, it
cannot be read again. Also, data can be read only in the order written. It is used in
interprocess communication where a process writes to one end of the pipe (producer)
and the other reads from the other end (consumer).
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.
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.
This is done by executing the file /etc/init. Process dispatcher gives birth to
the shell. Unix keeps track of all the processes in an internal data structure called the
Process Table (listing command is ps -el).
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.)
system does a fork, which performs a series of operations to create a process context
and then execute your program in that context. The steps include the following:
¾ 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.
After the fork is complete, UNIX runs your program.
do something else interactively without waiting for the process to complete. At the
end of the command you add the special background symbol, &. This symbol tells
your shell to execute the given command in the background.
Example: cp *.* ../backup& (cp is for copy)
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.
Address Units
1 10,000
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 process’s 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, process’s u-area, and Kernel stack
are swapped out, theoretically.
Practically, if the process’s u-area contains the Address Translation Tables for
the process then Kernel implementations do not swap the u-area.
At the time when any process requires more memory than it is currently
allocated, the Kernel performs Expansion swap. To do this Kernel reserves enough
space in the swap device. Then the address translation mapping is adjusted for the
new virtual address space but the physical memory is not allocated. At last Kernel
swaps the process into the assigned space in the swap device. Later when the Kernel
swaps the process into the main memory this assigns memory according to the new
address translation mapping.
14. What are the processes that are not bothered by the swapper? Give Reason.
¾ Zombie process: They do not take any up physical memory.
¾ Processes locked in memories that are updating the region of the process.
¾ Kernel swaps only the sleeping processes rather than the ‘ready-to-run’
processes, as they have the higher probability of being scheduled than the
Sleeping processes.
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?
¾ The process’s memory resident time,
¾ Priority of the process and
¾ The nice value.
Only the administrator can supply the nice value. The nice () system call
works for the running process only. Nice value of one process cannot affect the nice
value of the other process.
19. What are conditions on which deadlock can occur while swapping the processes?
¾ All processes in the main memory are asleep.
¾ All ‘ready-to-run’ processes are swapped out.
¾ There is no space in the swap device for the new incoming process that are
swapped out of the main memory.
¾ There is no space in the main memory for the new incoming process.
25. What are data structures that are used for Demand Paging?
Kernel contains 4 data structures for Demand paging. They are,
¾ Page table entries,
¾ Disk block descriptors,
¾ Page frame data table (pfdata),
¾ Swap-use table.
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.
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 parent’s address
space and attaches it to the child’s 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.
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.
Page fault refers to the situation of not having a page in the main memory
when any process references it.
There are two types of page fault :
¾ Validity fault,
¾ Protection fault.
34. 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.
36. 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.
37. What are states that the page can be in, after causing a page fault?
¾ On a swap device and not in memory,
¾ On the free page list in the main memory,
¾ In an executable file,
¾ Marked “demand zero”,
¾ Marked “demand fill”.
41. 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.
44. 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.
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.
7. What are the notations used in Evaluation of Arithmetic Expressions using prefix
and postfix forms?
Polish and Reverse Polish notations.
(d) Deletion.
Using insertion we can perform insertion sort, using selection we can perform
selection sort, using exchange we can perform the bubble sort (and other similar
sorting methods). But no sorting method can be done just using deletion.
Null Branches
i ii iii iv v
In general:
If there are n nodes, there exist 2n-n different trees.
14. List out few of the applications that make use of Multilinked Structures?
¾ Sparse matrix,
¾ Index generation.
16. What is the type of the algorithm used in solving the 8 Queens problem?
Backtracking
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.
19. Traverse the given tree using Inorder, Preorder and Postorder traversals.
Given tree:
A
B C
D E F G
H I J
¾ 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?
2 3
Freshersworld.com
5 Resource Center
4
First Job…. Dream Job…. Freshersworld.com
At location 6
1 2 3 - - 4 - - 5
where LCn means Left Child of node n and RCn means Right Child of node n
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
45 50 55 60 65 70 75 80 85
23. For the given graph, draw the DFS and BFS?
¾ 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…
26. In RDBMS, what is the efficient data structure used in the internal storage
representation?
B+ tree. Because in B+ tree, all the data is stored only in leaf nodes, that
makes searching easier. This corresponds to the records that shall be stored in leaf
nodes.
27. Draw the B-tree of order 3 created by inserting the following data arriving in
sequence – 92 24 6 7 11 8 22 4 5 16 19 20 78
11 -
5 7 19 24
4 - 6 - 8 - 16 - 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
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 doesn’t mean that the distance between any two nodes involved in
the minimum-spanning tree is minimum.
31. Convert the given graph with weighted edges to minimal spanning tree.
600
1 3 200
612
410 310
2985 5
400
2 4
1421
1 3
200
410 612 310
2 4 5
* *
A B + /
35. For the following COBOL code, draw the Binary tree?
01 STUDENT_REC.
02 NAME.
03 FIRST_NAME PIC X(10).
03 LAST_NAME PIC X(10).
02 YEAR_OF_STUDY.
03 FIRST_SEM PIC XX.
03 SECOND_SEM PIC XX.
01
STUDENT_REC
02 02
NAME YEAR OF STUDY
03 03 03 03
FIRST NAME LAST NAME FIRST SEM SECOND SEM
Operating Systems
Following are a few basic questions that cover the essentials of OS:
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.
Long term scheduler determines which programs are admitted to the system
for processing. It controls the degree of multiprogramming. Once admitted, a job
becomes a process.
Medium term scheduling is part of the swapping function. This relates to
processes that are in a blocked or suspended state. They are swapped out of real-
memory until they are ready to execute. The swapping-in decision is based on
memory-management criteria.
Short term scheduler, also know as a dispatcher executes most frequently, and
makes the finest-grained decision of which process should execute next. This
scheduler is invoked whenever an event occurs. It may lead to interruption of one
process by preemption.
20. Define latency, transfer and seek time with respect to disk I/O.
Seek time is the time required to move the disk arm to the required track.
Rotational delay or latency is the time it takes for the beginning of the required sector
to reach the head. Sum of seek time (if any) and latency is the access time. Time
taken to actually transfer a span of data is transfer time.
23. How are the wait/signal operations for monitor different from those for
semaphores?
If a process in a monitor signal and no task is waiting on the condition
variable, the signal is lost. So this allows easier program design. Whereas in
semaphores, every operation affects the value of the semaphore, so the wait and
signal operations should be perfectly balanced in the program.
24. In the context of memory management, what are placement and replacement
algorithms?
25. In loading programs into memory, what is the difference between load-time
dynamic linking and run-time dynamic linking?
For load-time dynamic linking: Load module to be loaded is read into
memory. Any reference to a target external module causes that module to be loaded
and the references are updated to a relative address from the start base address of the
application module.
With run-time dynamic loading: Some of the linking is postponed until actual
reference during execution. Then the correct module is loaded and linked.
30. What are the four layers that Windows NT have in order to achieve
independence?
¾ Hardware abstraction layer
¾ Kernel
¾ Subsystems
¾ System Services.
32. What are the key object oriented concepts used by Windows NT?
¾ Encapsulation
¾ Object class and instance
33. Is Windows NT a full blown object oriented operating system? Give reasons.
No Windows NT is not so, because its not implemented in object oriented
language and the data structures reside within one executive component and are not
represented as objects and it does not support object oriented capabilities .
47. What are DDks? Name an operating system that includes this feature.
DDks are device driver kits, which are equivalent to SDKs for writing device
drivers. Windows NT includes DDks.
Networking concepts
2. What is subnet?
A generic term for section of a large networks usually separated by a bridge or
router.
5. What is SAP?
Series of interface points that allow other computers to communicate with the
other layers of network protocol stack.
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.
Repeater:
Also called a regenerator, it is an electronic device that operates only
at physical layer. It receives the signal in the network before it becomes weak,
regenerates the original bit pattern and puts the refreshed copy back in to the link.
Bridges:
These operate both in the physical and data link layers of LANs of
same type. They divide a larger network in to smaller segments. They contain logic
that allow them to keep the traffic for each segment separate and thus are repeaters
that relay a frame only the side of the segment containing the intended recipent and
control congestion.
Routers:
They relay packets among multiple interconnected networks (i.e.
LANs of different type). They operate in the physical, data link and network layers.
They contain software that enable them to determine which of the several possible
paths is the best for a particular transmission.
Gateways:
They relay packets among networks that have different protocols (e.g.
between a LAN and a WAN). They accept a packet formatted for one protocol and
convert it to a packet formatted for another protocol before forwarding it. They
operate in all seven layers of the OSI model.
27. What are the data units at different layers of the TCP / IP protocol suite?
The data unit created at the application layer is called a message, at the
transport layer the data unit created is called either a segment or an user datagram, at
the network layer the data unit created is called the datagram, at the data link layer the
datagram is encapsulated in to a frame and finally transmitted as signals along the
transmission media.
29. What is the minimum and maximum length of the header in the TCP segment and
IP datagram?
The header should have a minimum length of 20 bytes and can have a
maximum length of 60 bytes.
31. What is the difference between TFTP and FTP application layer protocols?
The Trivial File Transfer Protocol (TFTP) allows a local host to obtain files
from a remote host but does not provide reliability or security. It uses the fundamental
packet delivery services offered by UDP.
The File Transfer Protocol (FTP) is the standard mechanism provided by TCP
/ IP for copying a file from one host to another. It uses the services offer by TCP and
so is reliable and secure. It establishes two connections (virtual circuits) between the
hosts, one for data transfer and another for control information.
¾ STAR topology:
In this all computers are connected using a central hub.
Advantages:
Can be inexpensive, easy to install and reconfigure and easy to trouble
shoot physical problems.
¾ RING topology:
In this all computers are connected in loop.
Advantages:
All computers have equal access to network media, installation can be
simple, and signal does not degrade as much as in other topologies because each
computer regenerates it.
38. What is the difference between routable and non- routable protocols?
Routable protocols can work with a router and can be used to build large
networks. Non-Routable protocols are designed to work on small, local networks and
cannot be used with a router
39. Why should you care about the OSI Reference Model?
It provides a framework for discussing network operations and design.
One of the main causes of congestion is that traffic is often busy. If hosts
could be made to transmit at a uniform rate, congestion would be less common.
Another open loop method to help manage congestion is forcing the packet to be
transmitted at a more predictable rate. This is called traffic shaping.
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
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
¾ Ri = R for some i.
¾ The join dependency is implied by the set of FD, over R in which the left side is
key of R.
51. What is Domain-Key Normal Form?
A relation is said to be in DKNF if all constraints and dependencies that
should hold on the the constraint can be enforced by simply enforcing the
domain constraint and key constraint on the relation.
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.
Two important pieces of RDBMS architecture are the kernel, which is the
software, and the data dictionary, which consists of the system-level data structures
used by the kernel to manage the database
You might think of an RDBMS as an operating system (or set of subsystems),
designed specifically for controlling data access; its primary functions are storing,
retrieving, and securing data. An RDBMS maintains its own list of authorized users
and their associated privileges; manages memory caches and paging; controls locking
for concurrent resource usage; dispatches and schedules user requests; and manages
space usage within its table-space structures
.
72. Name the sub-systems of a RDBMS
I/O, Security, Language Processing, Process Control, Storage Management,
Logging and Recovery, Distribution Control, Transaction Control, Memory
Management, Lock Management
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 file—but 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,
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 created—making 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
(a) i & iii because theta joins are joins made on keys that are not primary
keys.
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
(d) Error - the ORDER BY clause. Since ORDER BY clause cannot be used
in UNIONS
102. What is cold backup and hot backup (in case of Oracle)?
¾ Cold Backup:
It is copying the three sets of files (database files, redo logs, and
control file) when the instance is shut down. This is a straight file copy, usually from
the disk directly to tape. You must shut down the instance to guarantee a consistent
copy.
If a cold backup is performed, the only option available in the
event of data file loss is restoring all the files from the latest backup. All work
performed on the database since the last backup is lost.
¾ Hot Backup:
Some sites (such as worldwide airline reservations systems) cannot
shut down the database while making a backup copy of the files. The cold backup is
not an available option.
So different means of backing up database must be used — the hot
backup. Issue a SQL command to indicate to Oracle, on a tablespace-by-tablespace
basis, that the files of the tablespace are to backed up. The users can continue to make
full use of the files, including making changes to the data. Once the user has indicated
that he/she wants to back up the tablespace files, he/she can use the operating system
to copy those files to the desired backup destination.
The database must be running in ARCHIVELOG mode for the hot
backup option.
If a data loss failure does occur, the lost database files can be
restored using the hot backup and the online and offline redo logs created since the
backup was done. The database is restored to the most consistent state without any
loss of committed transactions.
103. What are Armstrong rules? How do we say that they are complete and/or
sound
The well-known inference rules for FDs
¾ Reflexive rule :
If Y is subset or equal to X then X Y.
¾ Augmentation rule:
If X Y then XZ YZ.
¾ Transitive rule:
If {X Y, Y Z} then X Z.
¾ Decomposition rule :
If X YZ then X Y.
¾ Union or Additive rule:
If {X Y, X Z} then X YZ.
¾ Pseudo Transitive rule :
If {X Y, WY Z} then WX Z.
Of these the first three are known as Amstrong Rules. They are sound because
it is enough if a set of FDs satisfy these three. They are called complete because using
these three rules we can generate the rest all inference rules.
104. How can you find the minimal key of relational schema?
Minimal key is one which can identify each tuple of the given relation schema
uniquely. For finding the minimal key it is required to find the closure that is the set
of all attributes that are dependent on any given set of attributes under the given set of
functional dependency.
Algo. I Determining X+, closure for X, given set of FDs F
1. Set X+ = X
2. Set Old X+ = X+
3. For each FD Y Z in F and if Y belongs to X+ then add
+
Z to X
SQL
1. Which is the subset of SQL commands used to manipulate Oracle Database
structures, including tables?
Data Definition Language (DDL)
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
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
16. What command is used to create a table by copying the structure of another
table?
Answer :
CREATE TABLE .. AS SELECT command
Explanation :
To copy only the structure, the WHERE clause of the SELECT command
should contain a FALSE statement as in the following.
CREATE TABLE NEWTABLE AS SELECT * FROM EXISTINGTABLE
WHERE 1=2;
If the WHERE condition is true, then all the rows or rows satisfying the
condition will be copied to the new table.
20. Which date function is used to find the difference between two dates?
MONTHS_BETWEEN
Variable names should start with an alphabet. Here the table name starts with
an '&' symbol.
22. What is the advantage of specifying WITH GRANT OPTION in the GRANT
command?
The privilege receiver can further grant the privileges he/she has obtained
from the owner to any other user.
23. What is the use of the DROP option in the ALTER TABLE command?
It is used to drop constraints specified on the table.
24. What is the value of ‘comm’ and ‘sal’ after executing the following query if the
initial value of ‘sal’ is 10000?
UPDATE EMP SET SAL = SAL + 1000, COMM = SAL*0.1;
sal = 11000, comm = 1000
27. Which function is used to find the largest integer less than or equal to a specific
value?
FLOOR
SQL – QUERIES
I. SCHEMAS
Table 1 : STUDIES
Table 2 : SOFTWARE
Table 3 : PROGRAMMER
LEGEND :
QUERIES :
1. Find out the selling cost average for packages developed in Oracle.
2. Display the names, ages and experience of all programmers.
3. Display the names of those who have done the PGDCA course.
4. What is the highest number of copies sold by a package?
5. Display the names and date of birth of all programmers born in April.
6. Display the lowest course fee.
7. How many programmers have done the DCA course.
8. 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 don’t know C and C++?
KEYS:
II . SCHEMA :
Table 1 : DEPT
Table 2 : EMP
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.
2. List the employee details if and only if more than 10 employees are present in
department no 10.
3. List the name of the employees with their immediate higher authority.
4. List all the employees who do not manage any one.
5. List the employee details whose salary is greater than the lowest salary of an
employee belonging to deptno 20.
6. List the details of the employee earning more than the highest paid manager.
7. List the highest salary paid for each job.
8. Find the most recently hired employee in each department.
9. In which year did most people join the company? Display the year and the
number of employees.
10. Which department has the highest annual remuneration bill?
11. Write a query to display a ‘*’ against the row of the most recently hired
employee.
12. Write a correlated sub-query to list out the employees who earn more than the
average salary of their department.
13. Find the nth maximum salary.
14. Select the duplicate records (Records, which are inserted, that already exist) in
the EMP table.
15. Write a query to list the length of service of the employees (of the form n years
and m months).
KEYS:
UNIX Concepts
SECTION - I
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.
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'
Example 1:
To change mode of myfile to 'rw-rw-r--' (ie. read, write permission for user -
read,write permission for group - only read permission for others) we give the args as:
chmod(myfile,0664) .
'r' is 4
'w' is 2
'x' is 1
Example 2:
chmod(myfile,0744).
A link is a second name (not a file) for a file. Links can be used to assign more
than one name to a file, but cannot be used to assign a directory more than one name or
link filenames on different computers.
Symbolic link 'is' a file that only contains the name of another file.Operation on
the symbolic link is directed to the file pointed by the it.Both the limitations of links are
eliminated in symbolic links.
7. What is a FIFO?
FIFO are otherwise called as 'named pipes'. FIFO (first-in-first-out) is a special
file which is said to be data transient. Once data is read from named pipe, it cannot be
read again. Also, data can be read only in the order written. It is used in interprocess
communication where a process writes to one end of the pipe (producer) and the other
reads from the other end (consumer).
8. How do you create special files like named pipes and device files?
The system call mknod creates special files in the following sequence.
For example:
If the device is a disk, major device number refers to the disk controller and minor
device number is the disk.
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.
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.
SECTION - II
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:
This is done by executing the file /etc/init. Process dispatcher gives birth to the
shell. Unix keeps track of all the processes in an internal data structure called the Process
Table (listing command is ps -el).
Unix identifies each process with a unique integer called ProcessID. The process
that executes the request for creation of a process is called the 'parent process' whose PID
is 'Parent Process ID'. Every process is associated with a particular user called the 'owner'
who has privileges over the process. The identification for the user is 'UserID'. Owner is
the user who executes the process. Process also has 'Effective User ID' which determines
the access privileges for accessing resources like files.
getpid() -process id
getuid() -user id
geteuid() -effective user id
The `fork()' used to create a new process from an existing process. The new
process is called the child process, and the existing process is called the parent. We can
tell which is which by checking the return value from `fork()'. The parent gets the child's
pid returned to him, but the child gets 0 returned to him.
main()
fork();
printf("Hello World!");
Answer:
Explanation:
The fork creates a child that is a duplicate of the parent process. The child begins
from the fork().All the statements after the call to fork() will be executed twice.(once by
the parent process and other by child). The statement before fork() is executed only by
the parent process.
main()
Answer:
Explanation:
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.)
Zombie : The process is dead but have not been removed from the process table.
When you execute a program on your UNIX system, the system creates a special
environment for that program. This environment contains everything needed for the
system to run the program as if no other program were running on the system. Each
process has process context, which is everything that is unique about the state of the
program you are currently running. Every time you execute a program the UNIX system
does a fork, which performs a series of operations to create a process context and then
execute your program in that context. The steps include the following:
• 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.
When you enter 'ls' command to look at the contents of your current working
directory, UNIX does a series of things to create an environment for ls and the run it: The
shell has UNIX perform a fork. This creates a new process that the shell will use to run
the ls program. The shell has UNIX perform an exec of the ls program. This replaces the
shell program and data with the program and data for ls and then starts running that new
program. The ls program is loaded into the new process context, replacing the text and
data of the shell. The ls program performs its task, listing the contents of the current
directory.
A daemon is a process that detaches itself from the terminal and runs,
disconnected, in the background, waiting for requests and responding to them. It can also
be defined as the background process that does not belong to a terminal session. Many
system functions are commonly performed by daemons, including the sendmail daemon,
which handles mail, and the NNTP daemon, which handles USENET news. Many other
daemons may exist. Some of the most common daemons are:
• 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 stand-
alone daemons. For example, inetd usually takes care of incoming rlogin, telnet,
and ftp connections.
• cron: Responsible for running repetitive tasks on a regular schedule.
The ps command prints the process status for some or all of the running
processes. The information given are the process identification number (PID),the amount
of time that the process has taken to execute so far etc.
15. How would you kill a process?
The kill command takes the PID as one argument; this identifies which process to
terminate. The PID of a process can be got using 'ps' command.
The most common reason to put a process in the background is to allow you to do
something else interactively without waiting for the process to complete. At the end of
the command you add the special background symbol, &. This symbol tells your shell to
execute the given command in the background.
The system calls used for low-level process creation are execlp() and execvp().
The execlp call overlays the existing program with the new one , runs that and exits. The
original program gets back control only when an error occurs.
A variant of execlp called execvp is used when the number of arguments is not known in
advance.
Pipes:
Message Queues :
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
Whole process is moved from the swap device to the main memory for execution. Process size must be less than
or equal to the available main memory. It is easier to implementation and overhead to the system. Swapping systems does not handle
the memory more flexibly as compared to the paging systems.
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.
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.
This allows First-Fit allocation of contiguous blocks of a resource. Initially the
Map contains one entry – address (block offset from the starting of the swap area) and the
total number of resources.
Kernel treats each unit of Map as a group of disk blocks. On the allocation and
freeing of the resources Kernel updates the Map for accurate information.
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 process’s 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.
This contains the private data that is manipulated only by the Kernel. This is local
to the Process, i.e. each process is allocated a u-area.
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, process’s u-area, and Kernel stack are
swapped out, theoretically.
Practically, if the process’s u-area contains the Address Translation Tables for the
process then Kernel implementations do not swap the u-area.
fork() is a system call to create a child process. When the parent process calls fork()
system call, the child process is created and if there is short of memory then the child
process is sent to the read-to-run state in the swap device, and return to the user state
without swapping the parent process. When the memory will be available the child
process will be swapped into the main memory.
At the time when any process requires more memory than it is currently allocated, the
Kernel performs Expansion swap. To do this Kernel reserves enough space in the swap
device. Then the address translation mapping is adjusted for the new virtual address space
but the physical memory is not allocated. At last Kernel swaps the process into the
assigned space in the swap device. Later when the Kernel swaps the process into the main
memory this assigns memory according to the new address translation mapping.
13. How the Swapper works?
The swapper is the only process that swaps the processes. The Swapper operates only in
the Kernel mode and it does not uses System calls instead it uses internal Kernel
functions for swapping. It is the archetype of all kernel process.
14. What are the processes that are not bothered by the swapper? Give Reason.
The swapper works on the highest scheduling priority. Firstly it will look for any sleeping
process, if not found then it will look for the ready-to-run process for swapping. But the
major requirement for the swapper to work the ready-to-run process must be core-
resident for at least 2 seconds before swapping out. And for swapping in the process must
have been resided in the swap device for at least 2 seconds. If the requirement is not
satisfied then the swapper will go into the wait state on that event and it is awaken once
in a second by the Kernel.
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?
Nice value is the value that controls {increments or decrements} the priority of the
process. This value that is returned by the nice () system call. The equation for using nice
value is:
Only the administrator can supply the nice value. The nice () system call works
for the running process only. Nice value of one process cannot affect the nice value of the
other process.
19. What are conditions on which deadlock can occur while swapping the processes?
It’s the nature of the processes that they refer only to the small subset of the total
data space of the process. i.e. the process frequently calls the same subroutines or
executes the loop instructions.
The set of pages that are referred by the process in the last ‘n’, references, where
‘n’ is called the window of the working set of the process.
23. What is the window of the working set of a process?
The window of the working set of a process is the total number in which the
process had referred the set of pages in the working set of the process.
Page fault is referred to the situation when the process addresses a page in the
working set of the process but the process fails to locate the page in the working set. And
on a page fault the kernel updates the working set by reading the page from the secondary
device.
25. What are data structures that are used for Demand Paging?
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.
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 parent’s address space and
attaches it to the child’s 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.
During the fork() system call the Kernel makes a copy of the parent process’s address
space and attaches it to the child process.
But the vfork() system call do not makes any copy of the parent’s 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 parent’s address space (this can overwrite the parent’s data and stack ) which
suspends the parent process until the child process exits.
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 un-initialized data. Kernel
initializes it to zero at run-time.
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.
• 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.
Page fault refers to the situation of not having a page in the main memory when any
process references it.
• 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.
If a process referring a page in the main memory whose valid bit is not set, it
results in validity fault.
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.
Protection fault refers to the process accessing the pages, which do not have the access
permission. A process also incur the protection fault when it attempts to write a page
whose copy on write bit was set during the fork() system call.
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.
The page is first checked for the validity fault, as soon as it is found that the page is
invalid (valid bit is clear), the validity fault handler returns immediately, and the process
incur the validity page fault. Kernel handles the validity fault and the process will incur
the protection fault if any one is present.
After finishing the execution of the fault handler, it sets the modify and protection bits
and clears the copy on write bit. It recalculates the process-priority and checks for signals.
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.
Freshersworld.com Resource Center
1
1. What is pipelining?
2. What are the five stages in a DLX pipeline?
3. For a pipeline with ‘n’ stages, what’s 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. What’s 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 two’s 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.
1. What is a Microprocessor? - Microprocessor is a program-controlled device,
which fetches the instructions from memory, decodes and executes the
instructions. Most Micro Processor are single- chip devices.
2. Give examples for 8 / 16 / 32 bit Microprocessor? - 8-bit Processor - 8085 / Z80
/ 6800; 16-bit Processor - 8086 / 68000 / Z8000; 32-bit Processor - 80386 / 80486.
3. Why 8085 processor is called an 8 bit processor? - Because 8085 processor has
8 bit ALU (Arithmetic Logic Review). Similarly 8086 processor has 16 bit ALU.
4. What is 1st / 2nd / 3rd / 4th generation processor? - The processor made of
PMOS / NMOS / HMOS / HCMOS technology is called 1st / 2nd / 3rd / 4th
generation processor, and it is made up of 4 / 8 / 16 / 32 bits.
5. Define HCMOS? - High-density n- type Complimentary Metal Oxide Silicon
field effect transistor.
6. What does microprocessor speed depend on? - The processing speed depends
on DATA BUS WIDTH.
7. Is the address bus unidirectional? - The address bus is unidirectional because
the address information is always given by the Micro Processor to address a
memory location of an input / output devices.
8. Is the data bus is Bi-directional? - The data bus is Bi-directional because the
same bus is used for transfer of data between Micro Processor and memory or
input / output devices in both the direction.
9. What is the disadvantage of microprocessor? - It has limitations on the size of
data. Most Microprocessor does not support floating-point operations.
10. What is the difference between microprocessor and microcontroller? - In
Microprocessor more op-codes, few bit handling instructions. But in
Microcontroller: fewer op-codes, more bit handling Instructions, and also it is
defined as a device that includes micro processor, memory, & input / output
signal lines on a single chip.
11. What is meant by LATCH? - Latch is a D- type flip-flop used as a temporary
storage device controlled by a timing signal, which can store 0 or 1. The primary
function of a Latch is data storage. It is used in output devices such as LED, to
hold the data for display.
12. Why does microprocessor contain ROM chips? - Microprocessor contain ROM
chip because it contain instructions to execute data.
13. What is the difference between primary & secondary storage device? - In
primary storage device the storage capacity is limited. It has a volatile memory. In
secondary storage device the storage capacity is larger. It is a nonvolatile
memory. Primary devices are: RAM / ROM. Secondary devices are: Floppy disc /
Hard disk.
14. Difference between static and dynamic RAM? - Static RAM: No refreshing, 6
to 8 MOS transistors are required to form one memory cell, Information stored as
voltage level in a flip flop. Dynamic RAM: Refreshed periodically, 3 to 4
transistors are required to form one memory cell, Information is stored as a charge
in the gate to substrate capacitance.
15. What is interrupt? - Interrupt is a signal send by external device to the processor
so as to request the processor to perform a particular work.
16. What is cache memory? - Cache memory is a small high-speed memory. It is
used for temporary storage of data & information between the main memory and
the CPU (center processing unit). The cache memory is only in RAM.
17. What is called “Scratch pad of computer”? - Cache Memory is scratch pad of
computer.
18. Which transistor is used in each cell of EPROM? - Floating –gate Avalanche
Injection MOS (FAMOS) transistor is used in each cell of EPROM.
19. Differentiate between RAM and ROM? - RAM: Read / Write memory, High
Speed, Volatile Memory. ROM: Read only memory, Low Speed, Non Voliate
Memory.
20. What is a compiler? - Compiler is used to translate the high-level language
program into machine code at a time. It doesn’t require special instruction to store
in a memory, it stores automatically. The Execution time is less compared to
Interpreter.
21. Which processor structure is pipelined? - All x86 processors have pipelined
structure.
22. What is flag? - Flag is a flip-flop used to store the information about the status of
a processor and the status of the instruction executed most recently
23. What is stack? - Stack is a portion of RAM used for saving the content of
Program Counter and general purpose registers.
24. Can ROM be used as stack? - ROM cannot be used as stack because it is not
possible to write to ROM.
25. What is NV-RAM? - Nonvolatile Read Write Memory, also called Flash
memory. It is also know as shadow RAM.
Frequently Asked Questions -Telecommunication
A well-known telecommunications company uses this pop quiz for oral and written
examinations of applicants for engineering positions.
a) 32 channels
b) 30 voice channels & 1 signaling channel.
c) 31 voice channels & 1 signaling channel.
d) 32 channels out of which 30 voice channels, 1 signaling channel, & 1 synchronization
channel.
Ans: c
a) 1/2 second
b) 1 seconds
c) 4 seconds
d) 2 seconds
Ans: (a)
a) only one
b) more han one
c) two hops
d) four hops
Ans: (c)
a) 128
b) 256
c) 255
d) 512
Ans: (c)
Ans: (d)
a) 4 KHz
b) 8 KHz
c) 16 KHz
d) 64 KHz
Ans: (a)
a) Straight Line
b) Parabolic
c) Tx & Rx should be visible to each other
d) none of the above
Ans: (c)
Ans: (b)
9. What action is taken when the processor under execution is interrupted by a non-
maskable 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)
10. The status of the Kernel is…
a) task
b) process
c) not defined.
d) none of the above.
Ans: (b)
11. What is the nominal voltage required in subscriber loop connected to local
exchange?
a) +48 volts
b) -48 volts
c) 230 volts
d) 110 volts
Ans: (c)
Ans: (a)
14. When a C function call is made, the order in which parameters passed to the
function are pushed into the stack is…
a) left to right
b) right to left
c) bigger variables are moved first than the smaller variales.
d) smaller variables are moved first than the bigger ones.
e) none of the above.
Ans: (b)
15. What is the type of signaling used between two exchanges?
a) inband
b) common channel signaling
c) any of the above
d) none of the above.
Ans: (a)
a) the process of temporarily storing the data to allow for small variation in device speeds
b) a method to reduce cross talks
c) storage of data within transmitting medium until the receiver is ready to receive.
d) a method to reduce routing overhead.
Ans: (a)
a) allocated in RAM.
b) allocated in ROM.
c) allocated on stack.
d) assigned to registers.
Ans: (c)
a) terminal adapter
b) bulletin board
c) modem
d) terminal emulation
Ans: (d)
Frequently Asked Questions - VLSI Design.
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
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.
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.
55. What is meant by query optimization?
The phase that identifies an efficient execution plan for evaluating a query that has the least
estimated cost is referred to as query optimization.
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 file�but
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
created�making 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.
Interview TYPES | HR INTERVIEW| PANEL INTERVIEW | TECHNICAL INTERVIEW |TEAM INTERVIEW | CAMPUS
INTERVIEW|
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.
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.
1 of 6 8/22/2007 11:36 PM
:: Freshersworld.com ... 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.
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.
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?
What are the ways that you can try to build consensus?
First, you must not just talk, you should also listen. You must realize that other
people also may have valid points to make. You should not only try to
persuade other people to your point of view, but also come across as a person
who has an open mind and appreciates the valid points of others.
You must try and resolve contradictions and arguments of others in the group.
You must synthesize arguments and try and achieve a unified position in the
group. Try to think of the various arguments of yours and others' as parts of a
jigsaw puzzle or as building blocks of a larger argument for or against the topic.
2 of 6 8/22/2007 11:36 PM
:: Freshersworld.com ... 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.
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.
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
3 of 6 8/22/2007 11:36 PM
:: Freshersworld.com ... 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?"
4 of 6 8/22/2007 11:36 PM
:: Freshersworld.com ... http://freshersworld.com/interview/gdtips.htm
If the panel feels that it has gathered enough information about the candidate in
15 minutes of the interview commencing and that it has no further questions to
ask the interview will be terminated in 15 minutes. If on the other hand the panel
takes an hour to gather the information required to take a decision the interview
will last for an hour. In either case the decision could be positive or negative. It is
a fallacy to believe that interview panels take longer interviews of candidates
whom they are more interested in.
No panel likes to waste its time. If an interview is lasting longer than usual then
it only means that the panel is seeking more information about the candidate in
order to take a decision.
In the MBA entrance interview how do I justify my decision to pursue the MBA
programme?
When you are asked this for God's sake don't tell the panel that you are looking
for a "challenging job in a good firm with lots of money, status and glamour".
That is the first answer that most candidates think of. Unfortunately it is the last
answer that will get you admission. In the answer to a direct question on this
subject you must convey to the interview panel that you have made a rational and
informed decision about your career choice and your intended course of higher
study. There are broadly six areas which your answer could touch upon :
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.
5 of 6 8/22/2007 11:36 PM
:: Freshersworld.com ... 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.
6 of 6 8/22/2007 11:36 PM
:: Freshersworld.com ... http://www.freshersworld.com/interview/toptips.htm
Interview TYPES | HR INTERVIEW| PANEL INTERVIEW | TECHNICAL INTERVIEW |TEAM INTERVIEW | CAMPUS
INTERVIEW|
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
basketball players or Olympic skaters operate. You'll need to quiet the
negative self chatter in your head through meditation or visualization prior to
sitting down in the meeting. You'll focus on the present moment and will be
less apt to experience lapses in concentration, nervousness, self-doubt and
self-condemnation.
2. Act spontaneous, but be well prepared. Be your authentic self, professional
yet real. Engage in true conversation with your interviewer, resting on the
preparation you did prior to coming to the meeting. Conduct several trial runs
with another person simulating the interview before it actually occurs. It's the
same as anticipating the questions you'll be asked on a final exam.
3. Set goals for the interview. It is your job to leave the meeting feeling secure
that the interviewer knows as much as he or she possibly can about your
skills, abilities, experience and achievements. If you sense there are
misconceptions, clear them up before leaving. If the interviewer doesn't get
around to asking you important questions, pose them yourself (diplomatically)
and answer them. Don't leave the meeting without getting your own questions
answered so that you have a clear idea of what you would be getting yourself
into. If possible, try to get further interviews, especially with other key
players.
4. Know the question behind the question. Ultimately, every question boils down
to, "Why should we hire you?" Be sure you answer that completely. If there is
a question about your meeting deadlines, consider whether the interviewer is
probing delicately about your personal life, careful not to ask you whether
your family responsibilities will interfere with your work. Find away to address
fears if you sense they are present.
5. Follow up with an effective "thank you" letter. Don't write this letter lightly. It
is another opportunity to market yourself. Find some areas discussed in the
meeting and expand upon them in your letter. Writing a letter after a meeting
is a very minimum. Standing out among the other candidates will occur if you
thoughtfully consider this follow up letter as an additional interview in which
you get to do all the talking. Propose useful ideas that demonstrate your
added value to the team.
6. Consider the interviewer's agenda. Much is on the shoulders of the
interviewer. He or she has the responsibility of hiring the right candidate. Your
ability to do the job will need to be justified. "Are there additional pluses
here?" "Will this person fit the culture of this organization?" These as well as
other questions will be heavily on the interviewer's mind. Find ways to
demonstrate your qualities above and beyond just doing the job.
7. Expect to answer the question, "Tell me about yourself." This is a pet question
1 of 2 8/22/2007 11:40 PM
:: Freshersworld.com ... http://www.freshersworld.com/interview/toptips.htm
2 of 2 8/22/2007 11:40 PM
Frequently Asked Questions - C/C++ Questions
C++ Questions
1. What is a class?
2. What is an object?
3. What is the difference between an object and a class?
4. What is the difference between class and structure?
5. What is public, protected, private?
6. What are virtual functions?
7. What is friend function?
8. What is a scope resolution operator?
9. What do you mean by inheritance?
10. What is abstraction?
11. What is polymorphism? Explain with an example.
12. What is encapsulation?
13. What do you mean by binding of data and functions?
14. What is function overloading and operator overloading?
15. What is virtual class and friend class?
16. What do you mean by inline function?
17. What do you mean by public, private, protected and friendly?
18. When is an object created and what is its lifetime?
19. What do you mean by multiple inheritance and multilevel inheritance?
Differentiate between them.
20. Difference between realloc() and free?
21. What is a template?
22. What are the main differences between procedure oriented languages and object
oriented languages?
23. What is R T T I ?
24. What are generic functions and generic classes?
25. What is namespace?
26. What is the difference between pass by reference and pass by value?
27. Why do we use virtual functions?
28. What do you mean by pure virtual functions?
29. What are virtual classes?
30. Does c++ support multilevel and multiple inheritance?
31. What are the advantages of inheritance?
32. When is a memory allocated to a class?
33. What is the difference between declaration and definition?
34. What is virtual constructors/destructors?
35. In c++ there is only virtual destructors, no constructors. Why?
36. What is late bound function call and early bound function call? Differentiate.
37. How is exception handling carried out in c++?
38. When will a constructor executed?
39. What is Dynamic Polymorphism?
40. Write a macro for swapping integers.
The following questions are used for screening the candidates during the first interview.
The questions apply mostly to fresh college grads pursuing an engineering career at Intel.
• 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?
• Explain the difference between microkernel and macro kernel.
• Give an example of microkernel.
• When would you choose bottom up methodology?
• When would you choose top down methodology?
• Write a small dc shell script to find number of FF in the design.
• Why paging is used ?
• Which is the best page replacement algorithm and Why? How much time is spent
usually in each phases and why?
• Difference between Primary storage and secondary storage?
• What is multi tasking, multi programming, multi threading?
• Difference between multi threading and multi tasking?
• What is software life cycle?
• Demand paging, page faults, replacement algorithms, thrashing, etc.
• Explain about paged segmentation and segment paging
• While running DOS on a PC, which command would be used to duplicate the
entire diskette?
Frequently Asked Questions - 8085 Microprocessor
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?
Frequently Asked Questions - Networking
• 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
Frequently Asked Questions - RMI Technology
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
Section 2. First Step in Assembly program _________________________________ 5
Section 3. Basic structure of assembly program _____________________________ 6
Section 3.1. Basic structure of Assembly program _____________________________ 6
Section 3.2. Basic structure of Data Segment _________________________________ 8
Section 3.3. Basic structure of Code segment _________________________________ 9
Section 3.4. Simple Commands in the Code Segment__________________________ 10
Section 3.4.1. Data Movement__________________________________________________ 10
Section 3.4.2. Arithmetic Operations _____________________________________________ 12
Section 3.4.2.1. ADD and SUB function ________________________________________ 13
Section 3.4.2.2. MUL and DIV function ________________________________________ 13
Section 3.4.2.3. Other arithmetic operations _____________________________________ 14
Section 3.4.3. Simple Control flow ______________________________________________ 15
Section 3.4.3.1. Unconditional Jump ___________________________________________ 15
Section 3.4.3.2. CALL procedure _____________________________________________ 15
Section 3.4.3.3. Conditional Jump _____________________________________________ 16
Section 3.4.3.4. Looping ____________________________________________________ 18
Section 3.4.4. Logic Control ___________________________________________________ 18
Section 3.4.4.1. Simple Logic Function _________________________________________ 18
Section 3.4.4.2. Relational Operators___________________________________________ 18
Section 3.4.4.3. Rotation & shifting____________________________________________ 19
Section 3.4.5. Simple interrupts (I/O) ____________________________________________ 20
Section 3.5. Basic structure of the Stack Segment_____________________________ 21
Section 4. Macro Processing ___________________________________________ 22
Section 4.1. Macro Definition _____________________________________________ 22
Section 4.2. Local Directives ______________________________________________ 24
Section 4.3. Nested Macro ________________________________________________ 25
Section 4.4. Special Directives_____________________________________________ 25
Section 4.4.1. Repetition Directives______________________________________________ 25
Section 4.4.2. Conditional Directives ____________________________________________ 26
Section 4.5. INCLUDE Directive __________________________________________ 29
Provided by
www.Freshersworld.com.com
First Job ….. ! Dream Job ….! Freshersworld.com
1. 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.
2. 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.
CODE_SEG SEGMENT
MAIN PROC FAR
ASSUME CS:CODE_SEG, DS:DATA_SEG
MOV AX, DATA_SEG
MOV DS, AX
MOV CX,0100h
START: MOV AH,2h
MOV DL,2Ah
MOV ABC,0Ah
INT 21h
MOV AH,4Ch
INT 21h
MAIN ENDP
CODE_SEG ENDS
DATA_SEG SEGMENT
ABC DB 0Bh
DATA_SEG ENDS
END MAIN
Figure 1 Simple Assembly Program
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.
*** Page 3 ***
☺ 4
Freshersworld.com 8086 Assembly Language Tutorial
www.Freshersworld.com.com
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 16-
bit 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).
☺ O is set to 1 if overflow value (signed) is generated. Cleared otherwise.
☺ N is set to 1 if negative result generated. Cleared otherwise.
☺ Z is set to 1 if result is zero. Cleared otherwise.
☺ C is set to 1 if carry bit (unsigned) is generated. Cleared otherwise.
☺ P is set to 1 if parity bit is even. Cleared otherwise.
O N Z P C
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Figure 3 Internal construction of Status register
All the above segments are not necessarily located one by one in the memory. They can be located far
away from each other, as shown in figure 6. Furthermore, an assembly program is free to allocate less than 3
segments. For example, only 1 code segment & 1 data segment is accepted with the warning message.
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.
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
Let’s explain each term in the syntax of the segment.
Segment Names
The segment directive requires a label in the label field. This label is the segment’s name. The
assembler will use the segment name to obtain the address of a segment. You must also specify the segment’s
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 don’t 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>
If you write separate assembly and you’re 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.
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.
*** Page 8 ***
☺ 9
Freshersworld.com 8086 Assembly Language Tutorial
www.Freshersworld.com.com
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.
‘I’’m fine, thanks’
or by using the other characters as the string delimiter:
“I’m 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.
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.
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).
• 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.
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.
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.
4
Since it is overflow for AL, the value would store in the whole AX register.
*** Page 13 ***
☺ 14
Freshersworld.com 8086 Assembly Language Tutorial
www.Freshersworld.com.com
The first MUL B2 will treat 80h as +128, whereas IMUL will treat 80h as -128 (2's complement).
After MUL executes, since 128×64 = 8192 which is 2000h, therefore AX = 2000. However, when IMUL
executes, since -128×64 = -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 / source…DX
IDIV {source} ; AL = AX / source …. AH or AX = DX:AX / source…DX
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 16-
bit 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
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]
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.
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.
5
Refer P.4 for register notation.
*** Page 17 ***
☺ 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.
6
XOR is Exclusive OR, which will set the bit zero if both bits are equal (0 0 or 1 1).
*** Page 18 ***
☺ 19
Freshersworld.com 8086 Assembly Language Tutorial
www.Freshersworld.com.com
C 0 0 C
SHL/ SAL SHR
C C
ROL ROR
C C
RCL RCR
0 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
The command, for example, “SHL AH, 3” is incorrect unless the constant is 1.
*** Page 19 ***
☺ 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)
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.
PUSH will decrease the stack pointer (SP) by 2 before placing the
data in the stack. POP is an operation which copies the top element to the Push Direction
register before increase the stack pointer by 2 9 . ss
Notice three things about the manipulation of the stack. First, it is
always in the stack segment. Second, the stack grows down in memory, i.e. as next element
you push the values onto the stack the CPU stores them into successively to be placed
lower (smaller) memory locations. Finally, the SP (stack pointer) always sp top of stack
contains the address of the value on the top of the stack.
All pushes and pops are 16-bit operations. There is no way to push a
single 8-bit value onto the stack. To push an 8-bit value you should load it
into 16-bit register first, with the higher order byte being 0. Figure 24 Stack push implementation
8
Reserve space for interrupt execution, procedure call and own use.
9
It implies that it will only PUSH and POP a word size data. (16 bit)
*** Page 22 ***
☺ 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
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.
The macro, on the other hand, does not emit any code when processing the statements between the
MACRO and ENDM directives. However, upon encountering macro in the mnemonic field:
1. The assembler will assemble every statement between the MACRO and ENDM directives
2. Emit the code to the output execution file (*.exe).
At the running time, the CPU executes these instructions without the procedure overhead.
The execution of a macro expansion is usually faster than the execution time of the same code
implemented with a procedure. Furthermore, to call a macro, you simply specify the macro name as though it
were an instruction or directive. To call a procedure, you need to use the CALL instruction.
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
Ignore this part forward for CSC Minor Students
*** Page 25 ***
☺ 26
Freshersworld.com 8086 Assembly Language Tutorial
www.Freshersworld.com.com
DW 1024
ENDM
ENDM
Figure 32 Example of REPT directives
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.
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.
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
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
EXTRN ADDING:FAR
CODE_SEG SEGMENT PARA
MAIN PROC FAR
ASSUME 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
MAIN ENDP
CODE_SEG ENDS
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
END MAIN1
; Subprogram:
EXTRN A: WORD, B: WORD
CODE_SEG SEGMENT PARA PUBLIC
ADDING1 PROC FAR
ASSUME CS: CODE_SEG
PUBLIC ADDING1
MOV AX, A
MOV BX, B
ADD AX, BX
RET
ADDING1 ENDP
CODE_SEG ENDS
END ADDING1
Figure 41 Example of using common data
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
MOV AX, A
PUSH DS
ASSUME DS: DATA_SEG
MOV AX, DATA_SEG
MOV DS, AX
MOV BX, B
ADD AX, BX
POP DS
RET
ADDING2 ENDP
CODE_SEG ENDS
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
PUBLIC ADDING3
PUSH BP
MOV BP, SP
MOV AX, [BP+8]
MOV BX, [BP+6]
ADD AX, BX
POP BP
RET 4
ADDING3 ENDP
CODE_SEG ENDS
END ADDING3
Figure 43 Example of passing parameters to the subprogram
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.
BP 0000
2. A push loaded data B (0007) onto the stack in the main
program. IP 3500
3. CALL function in the main program pushed the content of CS 3412
the CS onto the stack, e.g., 1234.
B 0700
4. CALL function in the main program pushed the content of
the IP onto the stack, e.g., 0035. A 0500
The called program requires use of the BP, say 0000, to access the
parameters in the stack. Its first action is to save the contents of the BP for the Figure 44 The contents of the stack
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.
parameters, returning the sum. In this case, we will push one more dummy values (in the following example,
[BP+10]) for storing the sum.
Calling sequence:
PUSH AX ; for dummy variable
PUSH A ; push three variables
PUSH B
PUSH C
CALL SUMMING
POP AX ; Get the return result
Procedure:
SUMMING PROC NEAR
PUSH BP
MOV BP, SP
MOV AX, [BP+4]
ADD AX, [BP+6]
ADD AX, [BP+8]
MOV [BP+10], AX
POP BP
RET 6
SUMMING ENDP
Figure 45 Example of returning results
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 don’t 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.
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.
1. 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.
2. 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 they’re 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.
3. The assembler is normally insensitive to case when handling symbolic names, making no
distinction between uppercase and lowercase letters. Since C is case sensitive, it’s desirable to
have assembler be case sensitive, at least for those symbols that are shared between assembler and
C.
4. It’s 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
5. 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.
6. 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);
int main ( )
{
int a, b;
: : :
ADDING (a, b);
: : :
}
Assembly Program:
PUBLIC _ADDING
CODE_SEG SEGMENT PARA PUBLIC ‘CODE’
_ADDING PROC NEAR
ASSUME CS: CODE_SEG
PUSH BP
MOV BP, SP
MOV A, [BP+4]
MOV B, [BP+6]
PUSH SI
PUSH DS
: :
POP DS
POP SI
POP BP
MOV AX, 0
RET 4
_ADDING ENDP
CODE_SEG ENDS
END _ADDING
Figure 48 Example of Linking from C to Assembly Program
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.
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.
*** Page 37 ***
☺ 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 AH, 06h
MOV AL, 00h
MOV BH, 07h
MOV CX, 0000h
MOV DH, 18h
MOV DL, 50h
INT 10h
Figure 51 Screen clearing example
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.
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
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
ISR processing. If you’ve 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:
;*** BEGIN OF THE PROGRAM ***
;*** 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
;*** JUMP IF THE CHARACTERS < 'a' ***
CMP AL,61h
JL READ_CH
;*** CORRECT IF THE CHARACTERS < 'z' ***
CMP AL,7Bh
12
In assembly program, to implement the array, use [MSG+SI] (as MSG [SI] in C). It will act as a list.
*** Page 42 ***
☺ 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
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)
or enter the digits.
2. If it is correct, change the characters to digits by multiplication, e.g.
1234 = 1×1000+2×100+3×10+4.
Multiply from the least significance digit to most significance digit.
3. Check whether it gets 4 digits. If it is not, repeat step 1.
4. By similar argument of step 2, get the least significance digit from the remainder of the division.
5. Convert it to the string and push to the stack.
6. Repeat step 5 until all digits are pushed into the stack.
7. Pop the elements from the stack and output to the screen.
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
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()
{
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);
}
}
WWW.F r e s h e r s w o r l d.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]
*** Page 46 ***
☺ 47
Freshersworld.com 8086 Assembly Language Tutorial
www.Freshersworld.com.com
DEC AX
PUSH [BP+6]
PUSH AX
CALL SORT
;*** call Recursive 2 ***
MOV AX, [BP-2]
INC AX
PUSH AX
PUSH [BP+4]
CALL SORT
;*** EXIT and RET ***
ELOOP: ADD SP, 6
POP BP
RET 4
SORT ENDP
CODE_SEG ENDS
;*** STACK SEGMENT ***
STACK_SEG SEGMENT STACK 'STACK'
DW 1024 DUP(?)
STACK_SEG ENDS
;*** DATA SEGMENT ***
DATA_SEG SEGMENT PARA 'DATA'
A DW 5,2,3,4,1
DATA_SEG 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
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
With Debug:
13
Use the 16-bit assembler. TASM32 will not work.
14
You can omit the bold extension.
*** Page 48 ***
☺ 49
Freshersworld.com 8086 Assembly Language Tutorial
www.Freshersworld.com.com
With:
ASSUME CS:<code segment name>, DS:<data segment name>, SS:<stack segment name>
Program Ending:
Data Segment:
Data Definition:
Code Segment:
Label Definition:
<label name> :
Procedure Definition:
Data Movement:
Arithmetic Operation:
Logic Operation:
Interrupts:
Stack Segment:
Stack Definition:
Stack Manipulation:
Macro Definition:
Directives:
REPT <expression>
<statements>
ENDM
IRP <<parameter>, <arguments>>
<statements>
ENDM
IRPC <<parameter>, <string argument>>
<statements>
ENDM
IFXX <condition>
<sequence of statements>
<ELSE> ;optional
<sequence of statements>
ENDIF
Calling Sequences:
Provided By Freshersworld.com
1 BIT: 0
One bit is the simplest piece of data that exists. Its either a one
or a zero.
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).
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
on 386 and above 32-bit.
There are four different types of registers
1) General purpose registers
2) Segment registers
3) Index registers
4) Stack registers
Firstly here are descriptions of the main registers.
Stack registers and segment registers will be covered later.
AH AL
01100000 01110001
SI, DI, SP and BP can also be used as general purpose registers but
have more specific uses. They are not split into two halves.
Index Registers
These are sometimes called pointer registers and they are 16-bit
registers. They are mainly used for string instructions. There are
three index registers SI (source index), DI (destination index) and
IP (instruction pointer). On 386's and above there are also 32-bit
index registers: EDI and ESI. You can also use BX to index strings.
IP is a index register but it can't be manipulated directly as it
stores the address of the next instruction.
Stack registers
BP and SP are stack registers and are used when dealing with the
stack. They will be covered when we talk about the stack later on.
OFFSET = SEGMENT * 16
SEGMENT = OFFSET / 16 (the lower 4 bits are lost)
One register contains the segment and another register contains the
offset. If you put the two registers together you get a 20-bit
☺ 3
Freshersworld.com Guide to 80x86 Assembly
www.Freshersworld.com
address.
SEGMENT 0010010000010000----
OFFSET ----0100100000100010
20-bit Address 00101000100100100010
====== DS ======
====== SI ======
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.
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.
You know about the stack but not how to put data in an out of it.
There are two simple instructions that you need to know: push and
pop. Here is the syntax for their use:
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
TYPES OF OPERAND
Syntax:
MOV destination, source
for example:
mov ax,10 ;moves an immediate value into ax
mov bx,cx ;moves value from cx into bx
mov dx,Number ;moves the value of Number into dx
For example:
int 21h ;Calls DOS service
int 10h ;Calls the Video BIOS interrupt
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:
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.
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:
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.
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 db 0
Number2 dw 1
All you have to remember is that you can only put bytes into 8-bit
registers and words into 16-bit registers.
Listing 1: 1STPROG.ASM
.model small
.stack
.data
.code
mov dx,OFFSET Message ;offset of Message is in DX
mov ax,SEG Message ;segment of Message is in AX
mov ds,ax ;DS:DX points to string
mov ah,9 ;function 9 - display string
int 21h ;call dos service
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
Syntax:
ADD operand1,operand2
Syntax:
SUB operand1,operand2
Syntax:
MUL register or variable
IMUL register or variable
On a 386, 486 or Pentium the EAX register can be used and the answer
is stored in EDX:EAX.
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.
We can replace all this with just one line. This makes the code
easier to read and it easier to remember.
To make this work at the beginning of your code add these lines:
mov ax,@data
mov ds,ax
Note: for A86 you need to change the first line to:
mov ax,data
This is because all the data in the segment has the same SEG value.
Putting this in DS saves us reloading this every time we want to
use another thing in the same segment.
KEYBOARD INPUT
--------------
We are going to use interrupt 16h, function 00h to read the
keyboard. This gets a key from the keyboard buffer. If there isn't
one, it waits until there is. It returns the SCAN code in AH and the
ASCII translation in AL.
All we need to worry about for now is the ascii value which is in AL.
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:
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
In assembly there is a set of commands for control flow like in any
other language. Firstly the most basic command:
jmp label
All this does it to move to the label specified and start executing
the code there. For example:
jmp ALabel
.
.
.
ALabel:
Syntax:
CMP register or variable, value
jxx destination
This solves the problem but you may want to think about reordering
your code or using procedures if this happens often.
Listing 2: PROGFLOW.ASM
Prompt_Again:
mov dx,OFFSET Another ;display a message on the screen
mov ah,9 ;using function 09h
int 21h ;of interrupt 21h
First_Time:
mov dx,OFFSET Again ;display a message on the screen
mov ah,9 ;using function 09h
int 21h ;of interrupt 21h
TheEnd:
mov dx,OFFSET GoodBye ;print goodbye message
mov ah,9 ;using function 9
int 21h ;of interrupt 21h
mov ah,4Ch ;terminate program DOSusing
int 21h
.DATA
CR equ 13 ;enter
LF equ 10 ;line-feed
☺ 11
Freshersworld.com Guide to 80x86 Assembly
www.Freshersworld.com
Message DB "A Simple Input/Output Program$"
Prompt DB CR,LF,"Here is your first prompt.$"
Again DB CR,LF,"Do you want to be prompted again? $"
Another DB CR,LF,"Here is another prompt!$"
GoodBye DB CR,LF,"Goodbye then.$"
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.
PROC AProcedure
.
. ;some code to do something
.
RET ;if this is not here then your computer will crash
ENDP AProcedure
call AProcedure
Listing 3: SIMPPROC.ASM
.model tiny
.code
org 100h
Start:
call Display_Hi ;Call the procedure
mov ax,4C00h ;return to DOS
int 21h ;interrupt 21h function 4Ch
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
There are three example programs which all accomplish the same task.
They print a square block (ASCII value 254) in a specified place.
The sizes of the files when compiled are: 38 for register, 69 for
memory and 52 for stack.
In registers
------------------
The advantages of this is that it is easy to do and is fast. All you
have to do is to is move the parameters into registers before
calling the procedure.
Listing 4: PROC1.ASM
.model tiny
.code
org 100h
Start:
mov dh,4 ;row to print character on
mov dl,5 ;column to print character on
mov al,254 ;ascii value of block to display
mov bl,4 ;colour to display character
pop bx ;restore bx
xor bh,bh ;display page - 0
mov ah,9 ;function 09h write char & attrib
mov cx,1 ;display it once
int 10h ;call bios service
end Start
☺ 13
Freshersworld.com Guide to 80x86 Assembly
www.Freshersworld.com
Listing 5: PROC2.ASM
.model tiny
.code
org 100h
Start:
mov Row,4 ;row to print character
mov Col,5 ;column to print character on
mov Char,254 ;ascii value of block to display
mov Colour,4 ;colour to display character
mov al,Char
mov bl,Colour
xor bh,bh ;display page - 0
mov ah,9 ;function 09h write char & attrib
mov cx,1 ;display it once
int 10h ;call bios service
end Start
☺ 14
Freshersworld.com Guide to 80x86 Assembly
www.Freshersworld.com
Listing 6: PROC3.ASM
.model tiny
.code
org 100h
Start:
mov dh,4 ;row to print string on
mov dl,5 ;column to print string on
mov al,254 ;ascii value of block to display
mov bl,4 ;colour to display character
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.
Syntax:
.MODEL MemoryModel
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.
Macros are very useful for doing something that is done often but
for which a procedure can't be use. Macros are substituted when the
program is compiled to the code which they contain.
This is the syntax for defining a macro:
Name_of_macro macro
;
;a sequence of instructions
☺ 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.
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
Syntax:
This is an example that adds the first and second parameters and
puts the result in the third:
INPUT:
AH = 3Dh
AL = bits 0-2 Access mode
000 = read only
001 = write only
010 = read/write
bits 4-6 Sharing mode (DOS 3+)
000 = compatibility mode
001 = deny all
010 = deny write
011 = deny read
100 = deny none
DS:DX = segment:offset of ASCIIZ pathname
OUTPUT:
CF = 0 function is succesful
AX = handle
☺ 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.
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:
INPUT:
AX = 3Eh
BX = file handle
OUTPUT:
CF = 0 function is successful
AX = destroyed
CF = 1 function not successful
AX = 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.
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
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
.model small
.stack
.code
NextChar:
lodsb ;AL = next character in string
int 10h ;call BIOS service
loop NextChar
☺ 20
Freshersworld.com Guide to 80x86 Assembly
www.Freshersworld.com
mov ax,4C00h ;terminate program
int 21h
ErrorOpening:
mov dx,offset OpenError ;display an error
mov ah,09h ;using function 09h
int 21h ;call DOS service
mov ax,4C01h ;end program with an errorlevel =1
int 21h
ErrorReading:
mov dx,offset ReadError ;display an error
mov ah,09h ;using function 09h
int 21h ;call DOS service
.data
END
INPUT:
AH = 3Ch
CX = file attribute
bit 0 = 1 read-only file
bit 1 = 1 hidden file
bit 2 = 1 system file
bit 3 = 1 volume (ignored)
bit 4 = 1 reserved (0) - directory
bit 5 = 1 archive bit
bits 6-15 reserved (0)
DS:DX = segment:offset of ASCIIZ pathname
OUTPUT:
CF = 0 function is successful
AX = handle
CF = 1 an error has occurred
03h path not found
04h no available handle
05h access denied
Searches for the first file that matches the filename given.
INPUT:
AH = 4Eh
CX = file attribute mask (bits can be combined)
bit 0 = 1 read only
bit 1 = 1 hidden
bit 2 = 1 system
bit 3 = 1 volume label
bit 4 = 1 directory
bit 5 = 1 archive
bit 6-15 reserved
DS:DX = segment:offset of ASCIIZ pathname
OUTPUT:
CF = 0 function is successful
[DTA] Disk Transfer Area = FindFirst data block
0 21 Reserved
21 1 File attributes
22 2 Time last modified
24 2 Date last modified
26 4 Size of file (in bytes)
30 13 File name (ASCIIZ)
Listing 8: CREATE.ASM
.model small
.stack
.code
ReturnToDOS:
mov ax,4C00h ;terminate program
int 21h
WriteError:
mov dx,offset WriteMessage ;display an error message
jmp EndError
OpenError:
mov dx,offset OpenMessage ;display an error message
jmp EndError
CreateError:
mov dx,offset CreateMessage ;display an error message
EndError:
mov ah,09h ;using function 09h
int 21h ;call dos service
mov ax,4C01h ;terminate program
int 21h
.data
CR equ 13
LF equ 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.$"
END
Listing 9: DELFILE.ASM
.model small
.stack
.data
CR equ 13
LF equ 10
File db "C:\new.txt",0
.code
mov ax,@data ;set up ds as the segment for data
mov ds,ax ;use ax as we can't do it directly
jmp EndOk
EndOk:
mov dx,OFFSET Deleted ;display message
jmp Endit
ErrorDeleting:
☺ 24
Freshersworld.com Guide to 80x86 Assembly
www.Freshersworld.com
mov dx,OFFSET ErrDel ;display message
jmp Endit
FileDontExist:
mov dx,OFFSET NoFile ;display message
EndIt:
mov ah,9
int 21h
end
.model small
.stack
.data
.code
mov ax,@data ;set up ds to be equal to the
mov ds,a ;data segment
mov es,ax ;also es
LoopCycle:
mov dx,OFFSET FileName ;DS:DX points to file name
mov ah,4Fh ;function 4fh - find next
int 21h ;call DOS service
jc exit ;exit if carry flag is set
NextChar:
lodsb ;AL = next character in string
☺ 25
Freshersworld.com Guide to 80x86 Assembly
www.Freshersworld.com
int 10h ;call BIOS service
loop NextChar
error:
mov dx,OFFSET ErrorMsg ;display error message
mov ah,9
int 21h
exit:
mov ax,4C00h ;exit to DOS
int 21h
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:
Syntax:
Syntax:
SCAS* Search string: search for AL, AX, or EAX in string at ES:DI
Syntax:
Note: This instruction is usually used with the REPZ or REPNZ prefix.
Syntax:
rep StringInstruction
STOS* Move byte, word or double word from AL, AX or EAX to ES:DI
Syntax:
LODS* Move byte, word or double word from DS:SI to AL, AX or EAX
Syntax:
.model small
.stack
.code
jmp Next_Operation
Not_Equal:
mov ah,9 ;function 9 - display string
mov dx,OFFSET Message5 ;ds:dx points to message
int 21h ;call dos function
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
jmp Lodsb_Example
Not_Found:
mov ah,9 ;function 9 - display string
mov dx,OFFSET Message7 ;ds:dx points to message
int 21h ;call dos function
Lodsb_Example:
mov ah,9 ;function 9 - display string
mov dx,OFFSET NewLine ;ds:dx points to message
int 21h ;call dos function
.data
CR equ 13
LF equ 10
SearchString db "1293ijdkfjiu938uHello983fjkfjsi98934$"
NewLine db CR,LF,"$"
end
Firstly this method simply finds out what the version is.
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.
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.
Note: To make these lines compile in A86 you need to put commas (,)
in between the registers.
temp = SP
push ax
push cx
push dx
push bx
push temp
push bp
push si
push di
Syntax:
SHL operand1,operand2
Note: The 8086 cannot have the value of opperand2 other than 1.
286/386 cannot have operand2 higher than 31.
LOOPS
-----------------
Using Loop is a better way of making a loop then using JMP's. You
place the amount of times you want it to loop in the CX register and
every time it reaches the loop statement it decrements CX (CX-1) and
then does a short jump to the label indicated. A short jump means
that it can only 128 bytes before or 127 bytes after the LOOP
instruction.
Syntax:
mov cx,100 ;100 times to loop
Label:
.
☺ 30
Freshersworld.com Guide to 80x86 Assembly
www.Freshersworld.com
.
Loop Label: ;decrement CX and loop to Label
This works because JNZ will jump if the zero flag has not been set.
Setting CX to 0 will set this flag.
.model tiny
.code
org 100h
start:
pop cx ;restore cx
pop bx ;restore bx
pop ax ;restore dx
ChangeNumbers PROC
add ax,bx ;adds number in bx to ax
mul cx ;multiply ax by cx
mov dx,ax ;return answer in dx
ret
ChangeNumbers ENDP
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 push ax
cs:0001 53 push bx
cs:0002 51 push cx
F5 Size Window
F7 Next Instruction
F9 Run
ALT F4 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.
This next example demonstrates how to write to the screen using the
file function 40h of interrupt 21h.
end start
.model small
.stack
.code
mov ax,@data ;set up ds as the segment for data
mov ds,ax ;put this in ds
.data
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.
.model small
.stack
.code
mov ax,@data ;set up ds as the segment for data
mov es,ax ;put this in es
mov bp,OFFSET Text ;ES:BP points to message
.data
☺ 33
Freshersworld.com Guide to 80x86 Assembly
www.Freshersworld.com
Text DB "This is some text"
end
The next program demonstrates how to write to the screen using rep
stosw to put the writing in video memory.
.model small
.stack
.code
mov ax,0B800h ;segment of video buffer
mov es,ax ;put this into es
xor di,di ;clear di, ES:DI points to video memory
mov ah,4 ;attribute - red
mov al,"G" ;character to put there
mov cx,4000 ;amount of times to put it there
cld ;direction - forwards
rep stosw ;output character at ES:[DI]
end
.model small
.stack
.code
mov ax,@data
mov ds,ax
Wr_Char:
lodsb ;put next character into al
mov es:[di],al ;output character to video memory
inc di ;move along to next column
mov es:[di],ah ;output attribute to video memory
inc di
loop Wr_Char ;loop until done
.data
☺ 34
Freshersworld.com Guide to 80x86 Assembly
www.Freshersworld.com
Text DB "This is some text"
end
MODE 13h
---------------------------------------------------------------------
Mode 13h is only available on VGA, MCGA cards and above. The reason
that I am talking about this card is that it is very easy to use for
graphics because of how the memory is arranged.
.model small
.stack
.data
.code
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 ;exit to DOS
int 21h
Mode_13h_OK:
ret
Check_Mode_13h ENDP
end
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 db ?
....
mov ah,0Fh ;function 0Fh - get current mode
int 10h ;Bios video service call
mov VideoMode,al ;save current mode
Now that we can get into mode 13h lets do something. Firstly lets
put some pixels on the screen.
INPUT:
AH = 0Ch
AL = Color of the dot
CX = Screen column (x coordinate)
DX = 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
This program demonstrates how to plot pixels. It should plot four
red pixels into the middle of the screen.
.model tiny
.code
org 100h
start:
mov ax,13 ;mode = 13h
int 10h ;call bios service
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 )
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:
STOSB 3 5 4 3 11
MOV AL to SEG:OFF 1 1 4 3 10
If you use the MOV method you may need to increment DI (which STOSB
does).
Provided by
www.Freshersworld.com
First Job ….. ! Dream Job ….! Freshersworld.com
Some Sample 8086 Programs with Source Codes
1. Sort an array of signed integers and search for the presence of an item in the
sorted array using binary search
SourceCode
4. Using BIOS software interrupts for printer interface, write a program to print a file
SourceCode
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 04H
NUM DB 05H
ARRAY DB 05H
DB 04H
DB 03H
DB 02H
DB 01H
MID DB 00H
MSG1 DB 'PRESENT$'
MSG2 DB 'ABSENT$'
MSG3 DB 'SORTED LIST > $'
MSG4 DB 'KEY > $'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: CALL CLS
MOV DX,0000H
CALL CURSOR
MOV AX,DATA
MOV DS,AX
;Bubble Sort
MOV DL,NUM ;counter1
LIN1: DEC DL
JZ LOUT1
MOV CL,DL ;counter2
LEA BX,ARRAY ;pointer to first number
LIN2: MOV AL,[BX]
CMP AL,[BX+1]
JS LESS ;ARRAY(I)<ARRAY(I+1)
XCHG AL,[BX+1];
MOV [BX],AL
LESS: INC BX
DEC CL
JNZ LIN2
JMP LIN1
;Display
LOUT1: LEA DX,MSG3
MOV AH,09H
INT 21H
LEA BX,ARRAY
MOV CH,00H
MOV CL,NUM
DISP1: 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
;Binary Search
MOV CX,01H ;lower
MOV DH,00H
MOV DL,NUM ;upper
;CLEARS SCREEN
CLS: MOV AX,0600H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
RET
;SET CURSOR
CURSOR: MOV AH,02H
MOV BH,00H
INT 10H
RET
CODE ENDS
END START
2. Given a string of characters terminated by 00H, determine if it is a palindrome.
If 'Yes' output the message " The given string is a palindrome.
If 'No' output the message "No, it is not a palindrome"
SourceCode
.MODEL SMALL
.STACK 64
DATA SEGMENT
MSG DB 'ENTER STRING TO BE CHECKED FOR PALINDROME > $'
MSG1 DB 'YES ,A PALINDROME $'
MSG2 DB 'NOT A PALINDROME $'
STRING LABEL BYTE
MAXLEN DB 20
STRLEN DB ?
STRFLD DB 20 DUP(' ')
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
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
;CLEARS SCREEN
CLS: 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
MOV AH,0AH
LEA DX,STRING
INT 21H
RET
CODE ENDS
END START
3. Find the factorial of a given integer using a recursive procedure.
SourceCode
.MODEL SMALL
.STACK 64
DATA SEGMENT
MSG1 DB 'ENTER A DIGIT > $'
NUM DB 00H
MSG2 DB '!=(hexadecimal) $'
MSG3 DB 'INVALID INPUT or OVERFLOW $'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: 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
CMP NUM,30H
JC INVALID
CMP NUM,39H
JNC INVALID
SUB NUM,30H
INVALID:LEA DX,MSG3
MOV AH,09H
INT 21H
HALT: MOV AX,4C00H ;terminate digit
INT 21H
;CLEARS SCREEN
CLS: MOV AX,0600H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
RET
MOV AH,01H
INT 21H
MOV NUM,AL
RET
CODE ENDS
END START
5. Display the ASCII characters set on the screen using DOS int10h
SourceCode
.MODEL SMALL
.STACK 64
DATA SEGMENT
NUM DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: 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
AGAIN: 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
L1: 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
L2: 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
L3: INC NUM ;NUM holds next ascii character
LOOP AGAIN
MOV AX,4C00H ;terminate program
INT 21H
;CLEARS SCREEN
CLS: MOV AX,0600H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
RET
DATA SEGMENT
NUM DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: 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
AGAIN: 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
L1: 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
L2: 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
L3: INC NUM ;NUM holds next ascii character
LOOP AGAIN
MOV AX,4C00H ;terminate program
INT 21H
;CLEARS SCREEN
CLS: MOV AX,0600H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
RET
.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 SEGMENT
ASSUME CS:CODE,DS:DATA
START: 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
;CLEARS SCREEN
CLS: 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
MOV AH,0AH
LEA DX,POINTS
INT 21H
RET
SETMODE:MOV AH,00H
MOV AL,04H
INT 10H
MOV AH,0BH
MOV BH,07
MOV BL,02
INT 10H
RET
;DRAWS RECTANGLE
DRAW: 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
CODE ENDS
END START