The context in which execution takes place is crucial.
Very few programs execute on a bare machine. Programs usually contain implicit and explicit assumptions about resources available at the time of execution.
Most programs execute with the support of an operating system and run-time libraries specific to the source language that provide crucial services not supplied directly by the computer itself.
This supportive environment, for instance, usually decouples a program from direct manipulation of the computer peripherals, providing more general, abstract services instead.