Standard input- output using motorola and intel devices, C/C++ Programming

Assignment Help:

Talking to IO boards inside a computer or microcontroller depends upon the principles used by the microprocessor to address physical devices. On Motorola systems all devices connected to the processor local bus are memory mapped. Therefore it is fairly easier to address by means of a pointer the IO device, since it is just like RAM. In the case of Intel devices, the IO is not memory mapped, it is IO mapped. This causes a minor problem is accessing such devices, since the processor has to use IN, OUT commands and the address, therefore a simple pointer will not do. A non-ANSI function exists on PC's called 'portoutb' and 'portinb' these are used to input and output a byte of data (char) to an IO address (int). 

The syntax depends upon the compiler used by usually consists of
 
        outportb(address,data);
        data = inportb(address);
 
Care should be taken when porting code from an Intel platform to a Motorola platform since these functions are not standard ANSI and will need to converted for the Motorola Platform.  Below is shown an example for a 8255 IO board configured at a base address 0x2b4
 
 #include stdio.h
 #include dos.h
 
void main()
{
     Date: 26th August 1992 
    Version 1.0 
    Function : Reads port A and display it on the screen and portb,c       
     Modifications:  Non Standard non portable code PC only
    */
 
  int CardAddress = 0x2b0, BaseAddress, Port_a;
  int  Port_b, Port_c, ControlRegister;
  unsigned char ControlWord = 0x90, InputValue;
 
   BaseAddress = CardAddress + 4;
   Port_a = BaseAddress;
   Port_b = BaseAddress + 1;
      Port_c = BaseAddress + 2;
      ControlRegister = BaseAddress + 3;
    
      ControlWord = 0x90;
    
   outportb(ControlRegister, ControlWord);
    
   while (1)
   {
      InputValue = inportb(Port_a);
      outportb(Port_b, InputValue);
      outportb(Port_c, InputValue);
        
        printf("Read from A = %x\n", InputValue);
    }
}    
 
Despite these additions NON-ANSI functions they are only DOS commands and hence using Windows NT you will need to write a windows driver, for this you will need C++ and a few books on Windows.


Related Discussions:- Standard input- output using motorola and intel devices

Explain control flow, Control Flow The control flow statements are used...

Control Flow The control flow statements are used when it is needed that the flow of the program is to be changed after taking some decision. This control flow statement theref

Subrotine assembly language, You have to write a subroutine (assembly langu...

You have to write a subroutine (assembly language code using NASM) for the following equation.

Area under curve, Write a program to find the area under the curve y = f(x)...

Write a program to find the area under the curve y = f(x) between x = a and x = b, integrate y = f(x) between the limits of a and b. The area under a curve between two points can b

Palindrome, A palindrome is a string that reads the same from both the ends...

A palindrome is a string that reads the same from both the ends. Given a string S convert it to a palindrome by doing character replacement. Your task is to convert S to palindrome

What is some reward/drawback of using friend functions?, A: They present a ...

A: They present a degree of freedom in the interface design options. Member functions & friend functions are equally privileged (100% vested). The major difference is that a fri

Explain the bitwise-inclusive-or operator, Explain the Bitwise-Inclusive-OR...

Explain the Bitwise-Inclusive-OR Operator: |? The bitwise-inclusive-OR operator (|) contrast each bit of its first operand to the corresponding bit of its second operand and if

Wap to print series from 1 to 10 & find its square and cube, # include stdi...

# include stdio.h> # include conio.h> # include math.h>   void main () { int a=1,sqr=0,cube=0; clrscr (); while (a { sqr=pow(a,2); cube=pow(a,3);

Prepare windows shell extension, Prepare Windows Shell Extension Project...

Prepare Windows Shell Extension Project Description: Skills required are C++ Programming, Windows Desktop, Windows API

Algorithm, write a pseudo code for computing sin(x) using sentinel control ...

write a pseudo code for computing sin(x) using sentinel control loop

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd