Основи на програмирането на асемблерен език - Научете като в Steam!
Лаборатория #1
Цели на работата.Да се запознаят с основите на програмирането на асемблер. Научете как да създавате, компилирате и свързвате програми на асемблерни езици с помощта на пакета TASM.
1 Софтуерен модел на 32-битови микропроцесори
1.1 Комплект регистри
В програмите на асемблерни езици регистрите на микропроцесора (MP), показани на фигура 2.1, се използват много интензивно.
Статусни и контролни регистри
Регистри с общо предназначение
Фигура 1.1 Основни регистри на 32-битови процесори
EAX/AX/AH/AL(Акумулаторен регистър) –Акумулатор– използва се за съхраняване на междинни данни;
ECX/CX/CH/CL(Count register) –Count register– използва се в команди, които изпълняват някои повтарящи се действия;
EDX/DX/DH/DL(Регистър на данни) –Регистър на данни– точно като регистърEAX/AX/AH/AL, той съхранява междинни данни;
Следните два регистъра се използват за поддръжка на верижни команди (подробно в Lab #3):
Следните регистри са проектирани да работят със стека:
ESP/SP(Регистър на указателя на стека) –Регистър на указателя на стека– съдържа указателя на стека в сегмента на стека. Този регистър не трябва да се използва изрично за съхраняване на програмни операнди;
EBP/BP(Регистър на базовия указател) –Регистър на базовия указател на рамката на стека– предназначен за организиране на произволен достъп до данни вътре в стека.
MP поддържа следните типове сегменти:
Кодов сегмент– съдържа машинни инструкции, достъпни от регистърCS(Регистър на кодови сегменти) –Регистър на кодови сегменти;
Stack Segment– достъпът до него се извършва чрез регистърSS(Stack Segment register) –Stack Segment register;
Сегмент от данни– съдържа данните, обработени от програмата, достъпът до него е от регистъраDS(Регистър за сегмент от данни) –Регистър с данни за сегмента;
2.1.3 Регистрите за състояние и управлениесъдържат информация за състоянието на MP и програмата. Тези регистри са:Регистър на флаговеEFLAGS/FLAGSиРегистър на указател на инструкцииEIP/IP. Използвайки тези регистри, можете да получите информация за резултатите от изпълнението на командата и да повлияете на състоянието на MP. Фигура 1.2 показва съдържанието на регистърEFLAGS, а таблица 1.1 показва предназначението на отделните флагове.