CO2 miscible displacement is an efficient method for enhanced shale-oil recovery. Understanding the movability of shale oil in different states of occurrence is important for CO2 miscible displacement. Therefore, a nuclear magnetic resonance (NMR)-based CO2 miscible displacement experiment is conducted on oil-saturated shale and sandstone. To describe the processes involved in the measurements, a mathematical model based on the Maxwell-Stefan equation is developed; it considers the heterogeneity of shale and the competitive adsorption and absorption of CO2-oil mixtures in organic matter. The results show that the porosity of immobile oil in the shale samples (4.0% and 4.3%) is lower than the porosity of free oil (8.0% and 10.2%). Compared with sandstone, a larger CO2-injection time yields a smaller recovery factor in the case of shale, and the recovery factor of immobile oil is much less than that of free oil in the shale. According to the model, the order of oil production in the laminated shale during CO2 miscible displacement is as follows: Free oil in the inclusions, free oil in organic matrix-clay, and adsorption and absorption of oil in organic matter. The oil production rate is associated with the heterogeneity of shale (R0) and the competitive adsorption and absorption of CO2-oil mixture in the organic matter (ω0, kads).