The first few steps in a new programming language can often be uncertain as we uncover the, perhaps different, approaches the language uses.
Plot
This is the simplest method is to use Plot, which plots a given function over a range of values.
Plot[Sin[x], {x, -3, 3}, PlotRange -> {{-4, 4}, Automatic}]

This gives you a continuous line plotted between the values -3 and 3, this range is controlled via the {x,-3,3} element of the function call. This treats x as a local variable and varies it across the values given.
PlotRange -> {{-4, 4}, Automatic} controls the range of values to be included in the axis of the plot. The basic form used here is {xRange,yRange}. Automatic is a short form to tell Mathematica to choose what it thinks is the most appropriate range of coordinates. Alternatively an explicit range could have been given or the short form Full.
ListPlot
The approach you've opted for is to generate a list of data and then plots those values. You reasonably thought that DataRange might be what you need. But as you can see it produces a plot with the data you have defined in a laid across the data range you specify. As you observe it is a type of scaling.
ListPlot[Sin[a], DataRange -> {-4, 4}]

Using PlotRange does not achieve the result you want either:
ListLinePlot[Sin[a], PlotRange -> {{-4, 4}, {-1, 1}}]

I've used ListLinePlot to make it a little clearer where the plot region is defined.
The reason that this fails to produce the output you need is because plot functions, like ListPlot, that are designed to work on lists treat the plot range for the x coordinate range as list indices, not as function values. There are no values in your data in a at indices -4, -3, -2, 1 or zero, so you see only the plot of your data at a[[1]], a[[2]], a[[3]] and a[[4]].
Custom Ticks
Here is a tortuous solution that gets the result you want by using a combination of custom tick specifications and axes shifting.
Create some custom x-axis tick specifications of the form {x-coord,text}:
ticks = With[{ts = Range[-4, 4]}, Transpose[{Range[0, 8], Map[ToString, ts]}]]
{{0, "-4"}, {1, "-3"}, {2, "-2"}, {3, "-1"}, {4, "0"}, {5, "1"}, {6,
"2"}, {7, "3"}, {8, "4"}}
Then plot your data with a shifted set of axes and the custom ticks:
plot = ListLinePlot[Sin[a], Ticks -> {ticks, Automatic},
PlotRange -> {{0, 8}, {-1, 1}}, AxesOrigin -> {4, 0}]

PlotRangePadding
Something similar could be achieved using extending the range of the x-axis using PlotRangePadding, but because it still uses a list based function for plotting
custom ticks are still required.
plot = ListLinePlot[Sin[a], PlotRangePadding -> 1,
Ticks -> {ticks, Automatic}, AxesOrigin -> {4, 0}]

I've already searched DataRange.I find this hard to believe sinceplotRangeis right there in the 'SEE ALSO' in the same help page forDataRange. – Robert H Oct 13 '12 at 7:08