Основи на програмирането на асемблерен език - Научете като в 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 показва предназначението на отделните флагове.