मुद्रा बिनिमय दर

Saturday, November 5, 2011

Free Phone Calls in Nepal

Several VOIP call providers are scheming the free calls to attract the cutomer, some of them provide more realistics and strong free calls. Free calls for India, Nepal, Sri Lanka, Maldives, Bhutan, Bangladesh, Pakistan, Afghanistan and other country are being provided from when the VoIP came in to be in the market.



On this page you can find a list of links regarding free phone calls online. Following those links you can make free phone calls from PC to phone over internet to various international and mobile numbers.

  • DSG Technology - Offers Internet telephony devices. Includes information about products and services.

  • Go2Call.com - Internet phone service offering low-cost PC-to-phone calls and international calling plans.
  • My Phone Free - Offers Voice over Internet phones. Includes details of products.
  • Net2Phone - Voice calls from your PC to any phone.
  • Astound - Web conferencing, online meetings.
  • CallSite - Web-based customer service and call center.
  • Spiderphone - Voice conference calls using either telephone (based on a New York area code) or PC.
  • Webex - Real-time meetings right through your Internet browser.
  • BuddyTalk by InnoMedia - A 4-in-1 Internet voice communication tool for staying in touch with associates while online. Provides downloads of free software.
  • Callwave - Internet Answering Machine software uses Busy Call Forwarding to answer and record callers messages while you are on-line.
  • Internet Call Manager - An easy and inexpensive way to stay on-line as long as you want and never miss a phone call.
  • Pagoo - Answer calls and make long distance phone calls while online.
  • Paltalk - Operates with different chat systems such as ICQ and AIM, and enables live video calls. [Windows]
  • PC-Telephone - Make free pc-to-pc and cheap pc-to-phone and pc-to-fax calls over the Internet and ISDN/PSTN telephone networks. Use your computer as internet telephone, ISDN phone, answer phone, caller id, fax software and voicemail client.
  • VocalTec - Enables voice and multimedia communications over packetized networks, the Internet and intranets.
  • BuzMe - Internet call waiting, voice mail.
  • YAC - UK-based call forwarding service for fax, voicemail.
  • Adore Infotech Pvt. Ltd - New Dehli, India-based B2B VoIP Solutions provider offering postpaid/prepaid calling card billing, origination/termination billing, Softphone, Softswitch and hardware.
  • Asterisk - An open source telephony switching and private branch exchange service. Allows peer-peer calling using a variety of voice over internet protocols.
  • Asylum Telecom - VoIP provider for business and residential customers. No service charges.
  • AT&T CallVantage Service - Broadband phone service from AT&T. Consumer VOIP plans includes unlimited calling within USA and Canada.
  • BroadVoice - VoIP provider offers full feature set with voice mail, caller ID, etc. Requires supplied broadband phone adapter.
  • Callconomy Solutions - Provides international VoIP call shop services. Includes FAQ.
  • CallDaddy - Pre-paid VOIP services. H.323 IP phone, gateway, gatekeeper, NetMeeting or any other H.323 compliant terminal necessary.
  • Calleveryone.com - A full featured VoIP/broadband phone to phone service primarily for calls within the US.
  • Callserve - PC-to-Phone service for outbound calls only. Software download required.
  • Calltower, Inc. - US-based B2B VoIP provider offers enterprise class hosted VOIP PBX Systems.
  • Click4netphone - Pre-paid Internet Telephony Services via VOIP.
  • Cliconnect Internet Telephony - Offers a variety of domestic and international VoIP plans including unlimited calls to individual countries for fixed fee.
  • CTL Inc. - CT-based, manufacturer of VOIP-based voice-messaging systems utilizing Session Initiation Protocol (SIP) and Host Media Processing (HMP).
  • Dialpad Communications, Inc. - Offers monthly billing and pre-paid PC-to-Phone VoIP services. Also supports broadband telephone adapter for use without PC.
  • Dow Networks - Provides Voice over IP and telecom service to international clients.
  • Efonica - Prepaid system for PC-to-phone and web initiated phone-to-phone using VoIP.
  • Evolve Communications - Vancouver, Canada based provider. Includes rate plans, description of technology, and FAQ.
  • Free World Dialup - Community network allowing calls to toll free numbers in the US, Japan, UK and Netherlands. Peer-peer calling to other members.
  • iConnectHere - Offers VoIP-based PC-to-Phone, Broadband Phone and Calling Card services.
  • IPCB.net - Softswitch services such as routing, billing as well as VoIP call termination.
  • IPgrade - B2B Wholesaler of VoIP-based Phone-to-Phone, PC-to-Phone, DDI, VPN, CRM, prepaid calling cards, and broadband services.
  • ISPhone Inc. - Wholesale voice over internet services.
  • Lingo, Inc. - Residential and business plans offering unlimited calls to U.S. and Canada using any phone with provided adapter. Plans available for unlimited calls to Europe, Asia, Mexico. Includes basic and advanced calling features, free fax line, and choice of local number portability or selecting from 220 U.S. area codes or 15 countries.
  • MeaPhone - PC to phone service based in Thailand. Software download required.
  • Mobif - Malaysian based VoIP provider offering adaptor and softphone products available through resellers.
  • My VoIP Store - Australian-based (Brisbane) VoIP consultant and B2C e-commerce site for VoIP hardware.
  • Mywebcalls - PC-Phone or device-to-phone United Kingdom based service.
  • On Instant - PC-to-PC only isntant messaging service with VoIP features including live voice, voicemail and CRM tools.
  • One Unified Net - A communications infrastructure provider includes IP systems, services, softswitches, and phones.
  • OneAccess Networks - Broadband access solutions including IP routers, voice over IP (VoIP) and voice over DSL (VoDSL) solutions, concentrators and networks adapters.
  • Onramp Access - Provides business oriented VoIP services across fully managed T1 connections.
  • Packet8 - Voice over internet direct dial service without a PC. Owned by 8X8, Inc.
  • PC2call - PC-phone internet voice service provider based in the United Kingdom.
  • PingTone - Business VoIP provider geared toward companies deploying Cisco Systems IP Phones.
  • Pulse TeleSystems - Offers VoIP services: phone-to-phone, device-to-phone and PC-to-phone in India, Canada, France, Germany, Malaysia, Nepal, Srilanka and UK.
  • Reach Out IT, Inc. Technology Outsource - VoIP telecom consultants serving Massachusetts, Rhode Island and Connecticut. Implements Linux-based open source Asterisk PBX systems.
  • RhinoBell - PC to phone, phone to phone using device, voice over internet calls.
  • SCS Telecom GmbH - German-based B2B VOIP provider offers services to local call-shop owners and calling card telcos.
  • SIPphone Inc. - Peer-peer calling service. Requires SIP adaptor and phone.
  • Skynet Telesystems - Broadband VoIP and dialaround system offers calls to select foreign countries as part of plan.
  • Skype - Peer to peer internet voice service. Mac, Windows and Linux versions available. Users may call landlines and cellphones for a fee; users may call each other for free.
  • Snaptel Communications - Offers pre-paid PC to Phone VoIP services worldwide.
  • SunISP - SIP based VoIP phones and service plans with focus on Caribbean and South America.
  • Super Technologies, Inc - Offers flat-rate unlimited calling within USA & Canada. Uses analog telephone handsets via broadband telephone adapter.
  • Syberdyne Systems - Edmonton, Alberta Canada-based corporate VoIP solution provider.
  • Talafone - Canadian based provider of PC-to-phone and IP phone services and hardware.
  • Texas Instruments VoIP Solutions - B2B manufacturer of VoIP equipment including IP Phones, VoIP Gateways, High Density Gateways, voice-enabled Cable & DSL Modems.
  • TMCNet on the web - Instustry trade news publisher featuring VoIP news, VoIP forum (including termination routes), call center news, CRM, telecommunications news, and self-produced VoIP tradeshows.
  • UNIVoIP - Residential and business VoIP services. Monthly and annual plans available.
  • v59 - Use dial-up and talk everywhere with our VoIP service
  • Vanguard Networks Pte Ltd - Singapore provider of VoIP services including video conferencing, international connectivity, bandwidth management and electronic whiteboard.
  • Vinculum Communications - VoIP wholesale international termination services provider.
  • VocalNet - VoIP provider offering residential and business plans.
  • Voice over IP Calculator - Free VoIP resources, including online bandwidth calculators, white papers, books, a directory and a forum.
  • Voiceglo - VoIP service offering free and paid plans. Some plans require phone adapter or USB phone with an Internet-connected computer.
  • VoicePulse - VoIP service offering phone-to-phone with device. Various features and calling plans.
  • Voipia Networks, Inc. - Business & Residential VoIP programs; software solutions for Call Centers.
  • VoIPOnline - Voice-over-IP news, supplier directory and chatrooms for discussing related industry topics.
  • VoipXchange - B2B VoIP exchange platform for carriers to buy/sell excess capacity on VoIP networks covering call termination in 250+ countries. No-fee membership required.
  • Vonage - Provides voice over internet local dial-tone service. No PC required. Uses analog telephone with broadband telephone adapter.
  • VoX Communications - Residential, business and wholesale provider of VoIP services.
  • Voxilla - News, forums, reviews and guides for IP telephony devices and services.
  • WERCS Communications - US-based B2B VoIP telephony provider offering converged ip voice and data network services to customers in Wyoming and Rocky Mountain region.
  • WhistlerTel Inc. - US provider of broadband internet phone service and voice over IP (VoIP) solutions.
  • World On IP - Italy-based B2B VoIP provider offering hardware to set-up wireless VoIP networks.


Friday, October 21, 2011

Top Gadgets in 2011

In my choice, the top gadgets in 2011 are:

Apple iPhone 4s
With 8 megapixels and all-new optics, this just might be the best camera ever on a mobile phone. It just might be the only camera you’ll ever need. And if you think that’s amazing, wait until you see your photos.


Samsung Galaxy S2
8 MP camera with flash, Android OS, Sensors, High Screen Resolution


Amazon Kindle
Review and remember more of what you read.
Follow people of interest to you to see their Public Notes.
Manage your books, highlights, and notes.


MOTOROLA-XOOM
A super smart phone


Panasonic Smart VIERA
Experience the very best in 2D / 3D picture quality and design with the What Hi-FI? Television of the year 2011. Introducing the Smart Viera, the Smart TV from Panasonic – available in a range of 32”-42” LED and 42”-65” Neo Plasma screens.

3D Transformation: Introduction


3D-Transformation

Manipulation, viewing, and construction of three-dimensional graphic images require the use of three-dimensional geometric and coordinate transformations. In geometric transformation, the coordinate system is fixed, and the desired transformation of the object is done with respect to the coordinate system. In coordinate transformation, the object is fixed and the desired transformation of the object is done on the coordinate system itself. These transformations are formed by composing the basic transformations of translation, scaling, and rotation. Each of these transformations can be represented as a matrix transformation. This permits more complex transformations to be built up by use of matrix multiplication or concatenation. We can construct the complex objects/pictures, by instant transformations. In order to represent all these transformations, we need to use homogeneous coordinates.

Hence, if P(x,y,z) be any point in 3-D space, then in Homogeneous Coordinate System, we add a fourth-coordinate to a point. That is instead of (x,y,z), each point can be represented by a Quadruple (x,y,z,H) such that H≠0; with the condition that x1/H1=x2/H2; y1/H1=y2/H2; z1/H1=z2/H2. For two points (x1, y1, z1, H1) = (x2, y2, z2, H2) where H1 ≠ 0, H2 ≠ 0. Thus any point (x,y,z) in Cartesian system can be represented by a four-dimensional vector as (x,y,z,1) in HCS. Similarly, if (x,y,z,H) be any point in HCS then (x/H,y/H,z/H) be the corresponding point in Cartesian system. Thus, a point in three-dimensional space (x,y,z) can be represented by a four-dimensional point as: (x’,y’,z’,1)=(x,y,z,1).[T], where [T] is some transformation matrix and (x’,y’z’,1) is a new coordinate of a given point (x,y,z,1), after the transformation.

3D Transformation


Methods for geometric transformations and object modeling in 3D are extended from 2D methods by including the considerations for the z coordinate.

Basic Transformations
Translation
We translate a 3D point by adding translation distances, tx, ty, and tz, to the original coordinate position (x,y,z):
x' = x + tx, y' = y + ty, z' = z + tz

Scaling
Scaling With Respect to the Origin
We scale a 3D object with respect to the origin by setting the scaling factors sx, sy and sz, which are multiplied to the original vertex coordinate positions (x,y,z):
x' = x * sx, y' = y * sy, z' = z * sz

Coordinate-Axes Rotations
A 3D rotation can be specified around any line in space. The easiest rotation axes to handle are the coordinate axes.

3D Rotations about an Axis which is parallel to an Axis
  1. Step 1. Translate the object so that the rotation axis coincides with the parallel coordinate axis.
  2. Step 2. Perform the specified rotation about that axis.
  3. Step 3. Translate the object so that the rotation axis is moved back to its original position.
General 3D Rotations
  1. Step 1. Translate the object so that the rotation axis passes through the coordinate origin.
  2. Step 2. Rotate the object so that the axis of rotation coincides with one of the coordinate axes.
  3. Step 3. Perform the specified rotation about that coordinate axis.
  4. Step 4. Rotate the object so that the rotation axis is brought back to its original orientation.
  5. Step 5. Translate the object so that the rotation axis is brought back to its original position.







Thursday, November 25, 2010

THE ARCHITECTURE OF A MICROPROCESSOR

A typical Microprocessor  consists of the following interconnected functional units:

  • Registers
  • Arithmetic/Logic Unit (ALU)
  • Control Circuitry
 1. REGISTERS:
Registers are temporary storage units within the Processor. Some registers, such as the program counter and instruction register, have dedicated uses. Other registers, such as the accumulator, are for more general purpose use.

Accumulator:

The accumulator usually stores one of the operands to be manipulated by the ALU. A typical instruction might direct the ALU to add the contents of some other register to the contents of the accumulator and store the result in the accumulator itself. In general, the accumulator is both a source (operand) and a destination (result) register.

Often a CPU will include a number of additional general purpose registers that can be used to store operands or intermediate data. The availability of general purpose registers eliminates the need to "shuffle" intermediate results back and forth between memory and the accumulator, thus improving processing speed and efficiency.

Program Counter (Jumps, Subroutines and the Stack):

The instructions that make up a program are stored in the system's memory. The central processor references the contents of memory, in order to determine what action is appropriate. This means that the processor must know which location contains the next instruction.

Each of the locations in memory is numbered, to distinguish it from all other locations in memory. The number which identifies a memory location is called its Address.

The processor maintains a counter which contains the address of the next program instruction. This register is called the Program Counter. The processor updates the program counter by adding "1" to the counter each time it fetches an instruction, so that the program counter is always current (pointing to the next instruction)

The programmer therefore stores his instructions in numerically adjacent addresses, so that the lower addresses contain the first instructions to be executed and the higher addresses contain later instructions. The only time the programmer may violate this sequential rule is when an instruction in one section of memory is a Jump instruction to another section of memory.

A jump instruction contains the address of the instruction which is to follow it. The next instruction may be stored in any memory location, as long as the programmed jump specifies the correct address. During the execution of a jump instruction, the processor replaces the contents of its program counter with the address embodied in the Jump. Thus, the logical continuity of the program is maintained.

A special kind of program jump occurs when the stored program "Calls" a subroutine. In this kind of jump, the processor is required to "remember" the contents of the program counter at the time that the jump occurs. This enables the processor to resume execution of the main program when it is finished with the last instruction of the subroutine.

A Subroutine is a program within a program. Usually it is a general-purpose set of instructions that must be executed repeatedly in the course of a main program. Routines which calculate the square, the sine, or the logarithm of a program variable are good examples of functions often written as subroutines. Other examples might be programs designed for inputting or outputting data to a particular peripheral device.

The processor has a special way of handling subroutines, in order to insure an orderly return to the main program. When the processor receives a Call instruction, it increments the Program Counter and stores the counter's contents in a reserved memory area known as the Stack. The Stack thus saves the address of the instruction to be executed after the subroutine is completed. Then the processor loads the address specified in the Call into its Program Counter. The next instruction fetched will therefore be the first step of the subroutine.

The last instruction in any subroutine is a Return. Such an instruction need specify no address. When the processor fetches a Return instruction, it simply replaces the current contents of the Program Counter with the address on the top of the stack. This causes the processor to resume execution of the calling program at the point immediately following the original Call Instruction.

Subroutines are often Nested; that is, one subroutine will sometimes call a second subroutine. The second may call a third, and so on. This is perfectly acceptable, as long as the processor has enough capacity to store the necessary

return addresses, and the logical provision for doing so. In other words, the maximum depth of nesting is determined by the depth of the stack itself. If the stack has space for storing three return addresses, then three levels of subroutines may be accommodated.

Processors have different ways of maintaining stacks. Some have facilities for the storage of return addresses built into the processor itself. Other processors use a reserved area of external memory as the stack and simply maintain a Pointer register which contains the address of the most recent stack entry. The external stack allows virtually unlimited subroutine nesting. In addition, if the processor provides instructions that cause the contents of the accumulator and other general purpose registers to be "pushed" onto the stack or "popped" off the stack via the address stored in the stack pointer, multilevel interrupt processing (described later in this chapter) is possible. The status of the processor (i.e., the contents of all the registers) can be saved in the stack when an interrupt is accepted and then restored after the interrupt has been serviced. This ability to save the processor's status at any given time is possible even if an interrupt service routine, itself, is interrupted.

Instruction Register and Decoder:


Every computer has a Word Length that is characteristic of that machine. A computer's word length is usually determined by the size of its internal storage elements and interconnecting paths (referred to as Busses); for example, a computer whose registers and busses can store and transfer 8 bits of information has a characteristic word length of 8 bits and is referred to as an 8bit parallel processor. An eight-bit parallel processor generally finds it most efficient to deal with eight-bit binary fields, and the memory associated with such a processor is therefore organized to store eight bits in each addressable memory location. Data and instructions are stored in memory as eight-bit binary numbers, or as numbers that are integral multiples of eight bits: 16 bits, 24 bits, and so on. This characteristic eight-bit field is often referred to as a Byte.

Each operation that the processor can perform is identified by a unique byte of data known as an Instruction Code or Operation Code. An eight-bit word used as an instruction code can distinguish between 256 alternative actions, more than adequate for most processors.

The processor fetches an instruction in two distinct operations. First, the processor transmits the address in its Program Counter to the memory Then the memory returns the addressed byte to the processor. The CPU stores this instruction byte in a register known as the Instruction Register, and uses it to direct activities during the remainder of the instruction execution.

The mechanism by which the processor translates an instruction code into specific processing actions requires more elaboration than we can here afford. The concept, however, should be intuitively clear to any logic designer.

The eight bits stored in the instruction register can be decoded and used to selectively activate one of a number of output lines, in this case up to 256 lines. Each line represents a set of activities associated with execution of a particular instruction code. The enabled line can be combined with selected timing pulses, to develop electrical signals that can then be used to initiate specific actions. This translation of code into action is performed by the Instruction Decoder and by the associated control circuitry.

An eight-bit instruction code is often sufficient to specify a particular processing action. There are times, however, when execution of the instruction requires more information than eight bits can convey

One example of this is when the instruction references a memory location. The basic instruction code identifies the operation to be performed, but cannot specify the object address as well In a case like this, a two or three-byte instruction must be used. Successive instruction bytes are stored in sequentially adjacent memory locations, and the processor performs two or three fetches in succession to obtain the full instruction. The first byte retrieved from memory is placed in the processor's instruction register, and subsequent bytes are placed in temporary storage; the processor then proceeds with the execution phase. Such an instruction is referred to as Variable Length.

Address Register(s):

A CPU may use a register or register pair to hold the address of a memory location that is to be accessed for data If the address register is Programmable, (i e., if there are instructions that allow the programmer to alter the contents of the register) the program can "build" an address in the address register prior to executing a Memory Reference instruction (i.e., an instruction that reads data from memory, writes data to memory or operates on data stored in memory).

2. ARITHMETIC/LOGIC UNIT (ALU):

All processors contain an arithmetic/logic unit, which is often referred to simply as the ALU The ALU, as its name implies, is that portion of the CPU hardware which performs the arithmetic and logical operations on the binary data .

The ALU must contain an Adder which is capable of combining the contents of two registers in accordance with the logic of binary arithmetic. This provision permits the processor to perform arithmetic manipulations on the data it obtains from memory and from its other inputs.

Using only the basic adder a capable programmer can write routines which will subtract, multiply and divide, giving the machine complete arithmetic capabilities. In practice, however, most ALUs provide other built-in functions, including hardware subtraction, Boolean logic operations, and shift capabilities

The ALU contains Flag Bits which specify certain conditions that arise in the course of arithmetic and logical manipulations. Flags typically include Carry, Zero, Sign, and Parity. It is possible to program jumps which are conditionally dependent on the status of one or more flags. Thus, for example, the program may be designed to jump to a special routine if the carry bit is set following an addition instruction

3. CONTROL CIRCUITRY:

The control circuitry is the primary functional unit within a CPU. Using clock inputs, the control circuitry maintains the proper sequence of events required for any processing task After an instruction is fetched and decoded, the control circuitry issues the appropriate signals (to units both internal and external to the CPU) for initiating the proper processing action. Often the control circuitry will be capable of responding to external signals, such as an interrupt or wait request An Interrupt request will cause the control circuitry to temporarily interrupt main program execution, jump to a special routine to service the interrupting device, then automatically return to the main program. A Wait request is often issued by a memory or 1/0 element that operates slower than the CPU. The control circuitry will idle the CPU until the memory or 1/0 port is ready with the data.

COMPUTER OPERATIONS


There are certain operations that are basic to almost any computer A sound understanding of these basic operations is a necessary prerequisite to examining the specific operations of a particular computer.

Timing:

The activities of the central processor are cyclical. The processor fetches an instruction, performs the operations
required, fetches the next instruction, and so on. This orderly sequence of events requires precise timing, and the CPU therefore requires a free running oscillator clock which furnishes the reference for all processor actions The combined fetch and execution of a single instruction is referred to as an Instruction Cycle. The portion of a cycle identified with a clearly defined activity IS called a State. And the inter vat between pulses of the timing oscillator is referred to as a Clock Period. As a general rule, one or more clock periods are necessary for the completion of a state, and there are several states in a cycle.

Instruction Fetch:

The first state(s) of any instruction cycle will be dedicated to fetching the next instruction. The CPU issues a read signal and the contents of the program counter are sent to memory, which responds by returning the next instruc tion word. The first byte of the instruction is placed in the instruction register. If the instruction consists of more than one byte, additional states are required to fetch each byte of the instruction. When the entire instruction is present in the CPU, the program counter is incremented (in preparation for the next instruction fetch) and the instruction is decoded. The operation specified in the instruction will be executed in the remaining states of the instruction cycle. The instruction may call for a memory read or write, an input or output and/or an internal CPU operation, such as a register to register transfer or an add registers operation.

Memory Read:

An instruction fetch is merely a special memory read operation that brings the instruction to the CPU's instruction register. The instruction fetched may then call for data to be read from memory into the CPU. The CPU again issues a read signal and sends the proper memory address; memory responds by returning the requested word. The data received is placed in the accumulator or one of the other general purpose registers (not the instruction register).

Memory Write:

A memory write operation is similar to a read except for the direction of data flow. The CPU issues a write signal, sends the proper memory address, then sends the data word to be written into the addressed memory location.

Wait (memory synchronization):

As previously stated, the activities of the processor are timed by a master clock oscillator. The clock period determines the timing of all processing activity.

The speed of the processing cycle, however, is limited by the memory's Access Time. Once the processor has sent a read address to memory, it cannot proceed until the memory has had time to respond. Most memories are capable of responding much faster than the processing cycle requires. A few, however, cannot supply the addressed byte within the minimum time established by the processor's clock.

Therefore a processor should contain a synchronization provision, which permits the memory to request a Wait state. When the memory receives a read or write enable signal, it places a request signal on the processor's READY line, causing the CPU to idle temporarily. After the memory has had time to respond, it frees the processor's READY line, and the instruction cycle proceeds

Input/Output:

Input and Output operations are similar to memory read and write operations with the exception that a peripheral 1/0 device is addressed instead of a memory location. The CPU issues the appropriate input or output control signal, sends the proper device address and either receives the data being input or sends the data to be output.
Data can be input/output in either parallel or serial form. All data within a digital computer is represented in binary coded form. A binary data word consists of a group 5
of bits; each bit is either a one or a zero. Parallel 1/0 consists of transferring all bits in the word at the same time, one bit per line. Serial 1/0 consists of transferring one bit at a time on a single line. Naturally serial 1/0 is much slower, but it requires considerably less hardware than does parallel 1/0.

Interrupts:


Interrupt provisions are included on many central processors, as a means of improving the processor's efficiency. Consider the case of a computer that is processing a large volume of data, portions of which are to be output to a printer. The CPU can output a byte of data within a single machine cycle but it may take the printer the equivalent of many machine cycles to actually print the character specified by the data byte. The CPU could then remain idle waiting until the printer can accept the next data byte. If an interrupt capability is implemented on the computer, the CPU can output a data byte then return to data processing. When the printer is ready to accept the next data byte, it can request an interrupt. When the CPU acknowledges the interrupt, it suspends main program execution and automatically branches to a routine that will output the next data byte. After the byte is output, the CPU continues with main program execution. Note that this is, in principle, quite similar to a subroutine call, except that the jump is initiated externally rather than by the program.

More complex interrupt structures are possible, in which several interrupting devices share the same processor but have different priority levels. Interruptive processing is an important feature that enables maximum utilization of a processor's capacity for high system throughput.

Hold:

Another important feature that improves the throughput of a processor is the Hold. The hold provision enables Direct Memory Access (DMA) operations.

In ordinary input and output operations, the processor itself supervises the entire data transfer. Information to be placed in memory is transferred from the input device to the processor, and then from the processor to the designated memory location. In similar fashion, information that goes from memory to output devices goes by way of the processor.

Some peripheral devices, however, are capable of transferring information to and from memory much faster than the processor itself can accomplish the transfer. If any appreciable quantity of data must be transferred to or from such a device, then system throughput will be increased by having the device accomplish the transfer directly. The processor must temporarily suspend its operation during such a transfer, to prevent conflicts that would arise if processor and peripheral device attempted to access memory simultaneously. It is for this reason that a hold provision is included on some processors.

Tuesday, November 23, 2010

Some Examples - IQ

1) To write 8086 Assembly Language Program to Multiply two unsigned number.
-------------------------------------------------------------------------------
MODEL SMALL
.STACK 100
.DATA ; Data Segment to initialize the variables
A DW 0FF87H ; First signed number A = (-79H) = FF87H (2'Compliment form)
B DW 0FF84H ; Second signed number B = (-7CH) = FF84H (2'Compliment form)
C DW ? ; Variable C to store result

.CODE 
START: 
MOV AX,@DATA
MOV DS,AX ; Initialize data segment
MOV SI,0000H ; Initialize SI to 0000H
MOV AX,A ;Take first number A in AX register
MOV CX,B ;Take second number B in CX register
MUL CX ; Performs unsigned Multiplication DX:AX = AX × CX
MOV C[SI],DX ; Store higher 16-bit result
MOV C[SI+2],AX ; Store lower 16-bit result
INT 03H


END START

Input:
FF87 × FF84 = FF0B 3A9C H
A = 0FF87 H (2'compliment of -79H)
B = 0FF84 H (2'compliment of -7CH)
Output:
C = FF0B 3A9C H 
-------------------------------------------------------------------------------
2) To write 8086 Assembly Language Program to multiply two signed number.
-------------------------------------------------------------------------------
MODEL SMALL
.STACK 100
.DATA ; Data Segment to initialize the variables
A DW 0FF87H ; First signed number A = (-79H) = FF87H (2'Compliment form)
B DW 0FF84H ; Second signed number B = (-7CH) = FF84H (2'Compliment form)
C DW ? ; Variable C to store result


.CODE 
START: 
MOV AX,@DATA
MOV DS,AX ;Initialize data segment
MOV SI,0000H ;Initialize SI to 0000H
MOV AX,A ;Take first number A in AX register
MOV CX,B ;Take second number B in CX register
IMUL CX ; Performs signed Multiplication DX:AX = AX × CX
MOV C[SI],DX ;Store higher 16-bit result
MOV C[SI+2],AX ;Store lower 16-bit result
INT 03H


END START

Input:
-79 × -7C = 3A9C H
A = 0FF87 H (2'compliment of -79H)
B = 0FF84 H (2'compliment of -7CH)
Output:
C = 0000 3A9C H
-------------------------------------------------------------------------------
3) To write 8086 Assembly Language Program to multiply two 32-bit unsigned numbers.
-------------------------------------------------------------------------------
MODEL SMALL
.STACK 100
.DATA ; Data segment starts
A DW 5678H, 1234H, 5 DUP(0) ;A is 32bit number A=1234 5678
b DW 1111H, 1111H, 5 DUP(0) ;B is 32bit number B=1111 1111
C DW 4 DUP(?) ; Reserve 4 words of uninitialized data space to an offset C
.CODE
START:
MOV AX,@DATA ;Initialize DS
MOV DS,AX
MOV SI,OFFSET A ;Point to first number in A


MOV AX,WORD PTR A[SI] ;Take lower 16bits(5678) of A into AX
MUL WORD PTR B[BX+0] ;Multiply AX with lower 16bits of B(1111) and store in AX
MOV C[DI],AX ;Move the contents of AX to C[DI]
MOV CX,DX ;Move the value of DX to CX


MOV AX,WORD PTR A[SI+2] ;Take higher 16bits(1234) of A into AX
MUL WORD PTR B[BX+0] ;Multiply AX with lower 16bits of B(1111)and store in AX
ADD CX,AX ;CX=CX+AX
MOV C[DI+2],CX ;Move the contents of CX to C[DI+2]
MOV CX,DX ;Move contents of DX to CX


MOV AX,WORD PTR A[SI] ;Take lower 16bits(5678) of A in AX
MUL WORD PTR B[BX+2] ;Multiply contents of AX with higher 16bits of B(1111)
ADD WORD PTR C[DI+2],AX ;C[DI+2]=C[DI+2]+AX
ADC CX,DX ;CX=CX+DX+CF
MOV C[DI+4],AX ;Move contents of AX to C[DI+4]


MOV AX,WORD PTR A[SI+2] ;Take higher 16bits of A(1234) into AX
MUL WORD PTR B[BX+2] ;Multiply AX with higher 16bits of B(1111) and store in AX
ADD CX,AX ;CX=CX+AX
MOV WORD PTR C[DI+4],CX ;Move contents of CX to C[DI+4]
ADC DX,0000 ;DX=DX+0000+CF
MOV C[DI+6],DX ;Move the contents of DX to C[DI+6]


INT 03H ; Halt

END START 

INPUT 
A = 1234 5678 H 
B = 1111 1111 H
OUTPUT
C=0136 BO6E 652F B5F8 H
-------------------------------------------------------------------------------
4) To write 8086 Assembly Language Program to Division two unsigned number.
-------------------------------------------------------------------------------
MODEL SMALL
.STACK 100
.DATA ; Data Segment to initialize the variables
Dividend DW 1234H, 5678H ; Dividend = 1234 5678 H
Divisor DW 270FH ; Divisor = 207FH
Quotient DW ? ; Variable Quotient to store Quotient
Reminder DW ? ; Variable Reminder to store Reminder


.CODE 
START: 
MOV AX,@DATA
MOV DS,AX ;Initialize data segment
MOV SI,0000H ;Initialize SI to 0000H
MOV DX,Dividend[SI] ;Take higher 16-bit number which is to be divided in DX register
MOV AX,Dividend[SI+2] ;Take lower 16-bit number which is to be divided in AX register
MOV CX,Divisor ;Take divisor in CX register
DIV CX ; Performs unsigned Division DX:AX ÷CX
; AX = Quotient DX = Reminder
MOV Reminder,DX ;Store Reminder
MOV Quotient,AX ;Store Quotient
INT 03H
END START

Input:
12345678H ÷ 207FH = 7751H
Dividend = 1234 5678 H
Divisor = 207F H
Output:
Quotient = 7751 H
Reminder = 01B9 H
-------------------------------------------------------------------------------
5) To write 8086 Assembly Language Program to Division two signed number.
-------------------------------------------------------------------------------

MODEL SMALL
.STACK 100
.DATA ; Data Segment to initialize the variables
Dividend DW 0FFFFH, 0FF88H ; Dividend = (-78H) = FFFF FF88H (2'Compliment form)
Divisor DW 0006H ; Divisor = 0006H
Quotient DW ? ; Variable Quotient to store Quotient
Reminder DW ? ; Variable Reminder to store Reminder


.CODE 
START: 
MOV AX,@DATA
MOV DS,AX ;Initialize data segment
MOV SI,0000H ;Initialize SI to 0000H
MOV DX,Dividend[SI] ;Take higher 16-bit number which is to be divided in DX register
MOV AX,Dividend[SI+2] ;Take lower 16-bit number which is to be divided in AX register
MOV CX,Divisor ;Take divisor in CX register
IDIV CX ; Performs signed Division DX:AX ÷ CX
; AX = Quotient DX = Reminder
MOV Reminder,DX ;Store Reminder
MOV Quotient,AX ;Store Quotient
INT 03H


END START

Input:
-78H ÷ 06H = -14H
Dividend = FFFF FF87 H (32-bit 2'compliment of -78H)
Divisor = 0006 H
Output:
Quotient = FFEC H (2'compliment of -14H)
Reminder = 0000 H