Ժողովուրդ մի հատ նորմալ գիրք ասեք էլի Assembler սովորացնող
անգլերեն լեզվով, սկսնակների համար չլինի, մեկել սաղ գիրքը մենակ սովորական ռեժիմի ծրագրերի մասին չլինի:
Կանխավ շնորհակալ եմ![]()
Ժողովուրդ մի հատ նորմալ գիրք ասեք էլի Assembler սովորացնող
անգլերեն լեզվով, սկսնակների համար չլինի, մեկել սաղ գիրքը մենակ սովորական ռեժիմի ծրագրերի մասին չլինի:
Կանխավ շնորհակալ եմ![]()
Մարդը լինելը լավ բան ա, բայց երկու ոտքի վրա կանգելը դեռ չի նշանակում որ դու մարդ ես:
Ամենակարևորը էս կյանքում մարդ լինելն ա, մնացած ամենինչը երկրորդական ա:
ԷԼ ԿՅԱՆՔՈՒՄ ԷՍ ՖՈՐՈՒՄԸ ՉԵՄ ՄՏՆԵԼՈՒ
ես սայթում http://samouchka.net/ebooks/assembler/ մի քանի հատ տենց գիրք է ` աչքովս ընկել դու նայի ընտրի
Մարդը լինելը լավ բան ա, բայց երկու ոտքի վրա կանգելը դեռ չի նշանակում որ դու մարդ ես:
Ամենակարևորը էս կյանքում մարդ լինելն ա, մնացած ամենինչը երկրորդական ա:
ԷԼ ԿՅԱՆՔՈՒՄ ԷՍ ՖՈՐՈՒՄԸ ՉԵՄ ՄՏՆԵԼՈՒ
_DEATH_ (25.11.2009)
ով կարա իրական ռեժիմում հասցեի կազմավորման մասին տեղեկություն տա??
Խնդրում եմ մոդերատորին ներել, թարգմանած գրելու ժամանակ չկար"
Հույս ունեմ կօգնի.
Адресация памяти в реальном режиме
Процессор 8086 имел 20-битную адресную шину и поэтому способен был
адресовать только 2^20 байтов (1 Мб) оперативной памяти. Но мы знаем, что
его регистры были 16-битными: как же он мог тогда адресовать 20 битов
адресной шины?
Ответ находится в сегментных регистрах. Окончательный адрес, «сброшен
ный» на адресную шину, получался как сумма значений соответствующего
16-битного регистра и сегментного регистра, умноженного на 16.
Следующий пример поможет понять, как рассчитывается физический
адрес:
mov al, [ds:si] ;загрузить в AL содержание памяти
;по адресу ds:si
Предположим, что DS = 0х559Е, а SI имеет значение 0x100.
Вычислить окончательный 20-битный адрес можно следуюш,им образом:
0х559Е * 0x10 (0x10 равно 16) + 0x100
Желаемое значение будет загружено с адреса памяти: 0х559Е0 4- 0x100 =
0х55АЕ0.
Значение сегментного регистра называется сегментом, а другое значение (то,
которое содержится в регистре общего назначения или указано как непо
средственное значение) называется смещением (offset).
Заметим, что адрес 0х55АЕ0 также может определяться другими парами сег
ментов и смещений, например, сегментом 0х558Е и смещением 0x200.
Адресация, использующая сегменты и смещения, имеет массу недостатков.
Смещение может быть только 16-битным, и поэтому полный размер одного
сегмента в памяти ограничен объемом 64 Кб. Программа, код или данные
которой превышают 64 Кб, должна быть разделена на несколько сегментов.
При необходимости в сегментные регистры должны быть загружены другие
адреса. Решение проблемы, которая возникает при делении программы на
несколько сегментов, будет рассмотрено в параграфе 10.4.
Для сохранения совместимости даже новейшие процессоры поддерживают
16-битную адресацию в реальном режиме. Поэтому можно запустить самую
древнюю DOS-программу, в том числе и саму DOS, на новейших х86-совме-
стимых процессорах.
Ավելի մանրամասն` այստեղ
Վերջին խմբագրող՝ bugron: 29.05.2011, 22:32:
Այս պահին թեմայում են 1 հոգի. (0 անդամ և 1 հյուր)
Էջանիշներ