Машиналық программа –машиналық командалар тізімі. Есепті шығару алгоритмін машиналық амалдар тізімі түрінде кескіндейді.
Машиналық операция – есептеуіш машина құрылғылары орындайтын қарапайым әрекетер тізімі
Машиналық команда –басқару коды. Нақты амалдың орындалуын анықтайды. Операндтарды алу және нәтижелерді орналастыру орындарын анықтайды.
Кодтау жүйесі (код) , кодтың алфавиті, кодтың негізі, кодтық комбинациясының құрылымы, ұзындығы, сыйымдылығы.
Мысалдар.
.
2. Тақырып: Микропроцессордың архитектурасына кіріспе
1. ОП – бір немесе бірнеше ҮИС құрылған программалық түрде басқарылатын электрондық құрылғы. Ақпаратты цифралық түрде өндеуге арналған.
ҮИС немесе ШТҮИС – жартылай кристалдар түрінде жүзеге асырылған электрондық схемалар.
Интегральдық схемалар біріктіру дәрежесімен сипатталады. Интеграциялау дәрежесінің көрсеткіші ретінде функциональдық интеграциялау Кф=lg Nэ алынады (мұнда Nэ – кристалда орналасқан ЖӘНЕ-ЕМЕС, НЕМЕСЕ-ЕМЕС логикалық элементтерінің саны). Кф мәні бойынша интегральдық схемаларының келесі түрлеріажыратылады:
-ШИС , Кф<=1
- ОИС, 1<Кф<=2
- ҮИС, 2<Кф<=3
-ШТҮИС, Кф>3.
ОП функциялары:
- программаның командаларын ОЖ (іріктеу) оқу;
- командаларды қері кодтау;
- командалардағы амалдарды үшін қажет мәліметтерді ОЖ іріктееу (оқу)
- командаларда кодталған ариф-х, лог-х және т.б. амалдарды орындау;
- ішкі регистрлар арасында, негізгі жады және еңгізі-шығару порттары арасында ақпаратты алмастыруды басқару;
- еңгізі-шығару құрылғыларынан түскен сигналдарды өндеу, үзілістерді жүзеге асыру;
- компьютердің негізгі бұйымдарын және олардың өзара байланысын басқару
Микропроцессор архитектурасы (микропроцессор құрылымы, элементтер құрамы және олардың өзара байланысы):
- адрестік кеңістіктің құрылымы;
- программалық түрде қолданылатын регистрлар, олардың құрамы, аттары, атқаратын міндеттері;
- үзіліс кластары, үзілітерді ұйымдастыру және өндеу ерекшеліктері;
- МП өндейтін мәліметтердің машиналық сипатталуының түрлері (форматтары);
- командалардың машиналық сипатталуының түрлері (форматтары) және адрестеу режимдері;
- МП логикалық құрылымы және орындалу циклы;
- командалар жүйесі;
Біздің компьютерлерде, ОП ретінде используется Intel 8086 МП қолданылады. Ол бір кристальды командалар жиынтығы тұрақты МП.
3. Тақырып: Адрестік кеңестігінің құрылымы. Сөз, параграф, сегмент, адрестер
МП деген адрестік кеңестігі деген, МП ақпаратты жазу немесе оқу үшін қолданатын ОЖ ұяшықтар жиынтығы.
Адрестелетін ұяшықтың минимальды өлшемі байт. Сондықтан ОЖ, әрқайсысына уникальды номер қойылған, байттар тізімі бодып табылады. Байттың номері оның адресі деп аталады.
Сегмент – көлемі 64 Кб аспайтын және параграф шекарасынан басталатын облыс.
Сегмент ұзындығы бекітілмейді және оның ұзындығы 64 Кб арасында кезкелген болуы мүмкін.
Адрестік кеңестігі қарастыруда сегмент ұғымы өте маңызды. Себебеі ОЖ адрестерін жазу үшін 20 екілік разряд қажет (көлемі 1 Мб адрестік кеңестігі) . Ал Мп болса 16 разрядты. Бұл мәселені шешу үшін адрестік кеңістікті сегменттеу қолданылады.
4. Тақырып: Программалаық түрде қолданылатын регистрлер. Жалпы регистрлер
Intel 8086 МП 16 разрядты 14 арнайы регистрлары бар.
АХ, ВХ, DХ, СХ – жалпы міндетті регистрлар; арифметикалық және логикалық амалдардың аралық нәтижелері мен операндтарын уақытша сақтау үшін қолданылады.
DS, ES, SS,CS – сегменттік регистрлар; төрт сегменттің адрестерін сақтайды.
IP –команда көрсеткіші.
SP, BP, SI, DI – жылжытылу регистрлары; сегмент ішінде байттарды адрестеу үшін қажет жылжытылу мәндерін сақтайды.
5. Тақырып: Командалардың көрсеткіші, қозғалу регистрлары, жалаулар регистрлары
Жалаулар регистрі 9 бір разрядты белгілерін сақтайды (қалған 7-і пайдаланылмайды). Бұл белгілер кейбір командалардың орындалу нәтижелерін немесе кейбір командаларды басқару режимдерін сақтайды.
6 жалау арифметикалық амалдарының орындалу нәтижелерін көрсетеді, 3-і басқару жалаулары (процессордың жұмыс жасау режимін өзгеотеді).
CF – көшіру жалау
PF- жұптылық жалауы.
AF – қосымша көшіру жалауы.
ZF –нуль жалауы.; установлен, если все биты результата нулевые;
SF –белгі жалауы. ;
DF –бағыт жалауы; если флаг установлен, то регистры SI и/или di уменьшаются на 1 при выполнении операций со строками; если сброшен, то увеличиваются;
IP – үзілістер жалауы; если флаг установлен, то микропроцессор реагирует на запросы внешних (маскируемых) прерываний; если сброшен, то прерывания запрещены;
TF –
флаг трассировка жалауы.; если флаг установлен, микропроцессор работает в пошаговом режиме (для отладки);
6. Тақырып: Стек. Анықтама. Ұыймдастырылуы.
Стек – мәліметтердің сызықтық құрылымы. Стекке элементтерді қосуға және стектен элементтерді шығаруға болады. Ескеретін жағдай – стектік амалдар кқмегімен тек қана стектің соңғы элементін ғана өндеуге болады.
Стек программмалық немесе аппараттық жолдармен қыймдастырылады.
8086 микропроцессорында стек аппаратты түрде жүзеге асырылған. Ол үшін SS және SP регистрлары қолданылады. Бастапқы жағдайда стек бос. SS: SP векторлық адрес стектің «түбін» көрсетеді. Стеккке мән қосу жағдайда SР регистр мәні екіге азаяды, керісінше элеменььі жою нәтижесінде SP рестрдің мәні екіге өседі.
7. Тақырып: Ұзілістер жүйесі.
Үзіліс – микропроцессорда немесе одан тыс оқиғаны өндеу үшін ағымды командалар тізімін орындауды тоқтату.
Үзілістер ішкі және сыртқы болып бөлінеді. Ішкі үзілістер логикалық және программалық болуы мүмкін.
Логикалық үзілістер (процессорлық) МП жұмыс жасауының стандартқа сай болмайтын жағдайларында пайда болады (регистрлардың толып кетуі, нольге бөлу).
Программалық үзілістерді ұйымдастыру шарттары, құралдары, командалары, орындалу реті.
Сыртқы үзілістерді пайда болуы, қандай құралдар арқылы тіпкеледі, түрлері, оларды болдырмау жағдайлар.
Немаскируемое прер возникает либо от сигналов о катастрофических событиях (сбой питания, ошибка в памяти, ошибка четности по магистали). Это прер имеет наивысший приоритет и процессор обрабатывает его в первую очередь.
8. Тақырып: МП-ң үзілістерге сұрауларын өндеу
МП-ң үзілістерге сұрауларын өндеу механизмі:
- сұраудың түсуі
- МП стекте сегменттер регистрінің (CS) , команда көрсеткіштің (IP), жалаулар регистрінің ағымды мәндерін сақтайды. (Кейін үзіліс пайда болған жерден бастап программаны әріқарай орындау үшін).
- IRET командасының орындалуы; CS және IP регистрларының, жалаулардың мәндері стектен алынып орнатылады.
Үзілістер векторларының кестесі, оның құрылымы, адрестерді есептеу үшін қолданылу жолдары, жадыда алатын орны.
9. Тақырып: Командалардың форматтары
Командалар 1, 2,3 ,4 , 5 және 6 байттардан тұрады.
Бірінші байтта машиналық амалдың коды орналасады. Кейбір жағдайларда екінші баәтта машиналық код үшін қолданылады. Өздері өндейтін операндтар саны бойынша командалар ноль-, бір- екіадресті болып бөлінеді.
Екі адресті командаларында команданың орындалу нәтижесәі бірінші операндпен анықталатын адресте жазылады және екі операндтың біреуі ғана жадыда орналасуы мүмкін.
Операндтар пайда болатын төрт қана көзі болады:
- жады
- регистр
- порт
- команда денесі (команданың өзі)
Команданың машиналық форматының анықтамасы, форматты сипаттау, формат құрамы, формат түрлері.
10. Тақырып: Командалардың форматтарының түрлері.
«Регистр-регистр» и «регистр-жады» деп аталатын форматттарды қарап шығайық.
«Регистр-регистр» форматы (бұл форматтың командалары жадыда екі байт орын алады).
7 2 1 0 7 6 5 3 2 0
КОП d w mod reg1 reg27 2 1 0 7 6 5 3 2 0
КОП d w mod reg1 reg2
Көрсетілген биттық өрістердің мәндері:
КОП – машиналық амалдың коды; берілген команда бойынша орындалатын амал;
мысалы, 1000010 – мәліметтерді жіберу MOV амалының коды.
d – команданың бағытын кодтайды; егер d=1 болса, онда reg 1 өрісте кодталған регистр амалдың орындалу нәтижесін қабылдайды; ал егер d=0 болса, ол аталған регистрдің амалды орындау үшін қажет мәліметтер көзі болатынын білдіреді.
w – операндтардың разрядтылығын кодтайды, мұнда , егер w =0 болса онда операндтар сегіз разрядты, ал егер w =1 болса операндтар 16-ты разрядты болады.
mod=11 - қарастырылып жатқан формата бұл мән тұрақты.
reg 1 и reg 2 – үш битты өрістер; өнделеп жатқан мәндердің орналасқан регистрларын қөрсетеді;
Регистрлар мынадай түрде кодталады:
Reg1/reg2
|
000
|
001
|
010
|
011
|
100
|
101
|
110
|
111
|
w = 1
|
AX
|
CX
|
DX
|
BX
|
SP
|
BP
|
SI
|
DI
|
w = 0
|
AL
|
CL
|
DL
|
BL
|
AH
|
CH
|
DH
|
|
«Регистр - жады» форматы ( бұл форматтың командалары жадыда екі байттан төрт байтқа дейінгі орын алады).
7 2 1 0 7 6 5 3 2 0
КОП d w mod reg1 reg2 adr ( от 0 до 2-xбайт)
11. Тақырып: Программалау жүйелері
Система программирования – это инструментальная программная система. Включает язык программирования и совокупность программных средств, к-ые обеспечивают разработку машинных программ с использованием данного языка программирования в качестве исходного.
Языки программирования по степени их близости к машинному языку делятся на две группы: низкого и высокого уровней.
К языкам низкого уровня относятся мнемокоды и макроязыки. В мнемокодах используются буквенные мнемонические обозначения вместо цифровых кодов машинных команд и можно использовать символические имена данных.
Макроязык наряду с мнемоническими обозначениями машинных команд и символическими именами данных допускает использование макрокоманд.
Макрокоманда – это оператор, к-ый не имеет прямого аналога в машинном языке и при переводе на машинный язык заменяется группой машинных команд.
Трансляция – процесс перевода текста программы с языка программирования высокого уровня , главным образом, на язык машинных команд.
Транслятор - программа. преобразующая текс с одного языка программирования на другой язык записи алгоритма.
Трансляторы делятся на ассемблеры, компиляторы и интерпретаторы.
Ассемблер – это транслятор с языка низкого уровня.
Макроассемблер – это транслятор с языка с языка низкого уровня, допускающий обработку макрокоманд.
Поэтому мнемокод и макроязык часто называют языком ассемблера.
12. Тақырып: Ассемблер тілінде жазылған программаны орындауға дайындау
Программаны орындауға дайындау төрт кезеңнен тұрады:
- бастапқа программаның мәтінін еңгізу
- трансляция
- біріктіру
- түзету
Трансляция (ассемблерлеу).
Бұл кезеңнің нәтижесі - объектті модульді жасау.
Объектті модульдің құрамы:
- алгоритмді жүзеге асыру үшін құрылған машиналық командалардың цифралық кодтары;
- бір бірінен тәуелсіз трансляциядан өткізілген берілген объекті модулін басқа модульдармен біріктіру үшін қажет ақпарат
- программаны оның оперативті жадыда орналасу орнына байланысты баптау үшін қажет ақпарат
Трансляция кезңінің амалдарын ассемблер немесе макроассемблер MASM (masm.exe) орындайды.
Объектті модульдерін біріктіру (компоновка).
Кезеңнің мақсаттары, әрекеттері, пайда болатын нәтижесі, қозғалту кестесі, LINK (файл link.exe),атқаратын міндеттері, obj), ехе. модульдері, олардың сипаттамалары, программалаудың негізгі принципін қолдану.
Түзету.
13. Тақырып: Кодтау форматттары
Ассемблердің командаларын кодтаудың негізігі форматының түрі мынадай:
[белгі] команда [ операнд(тар)]
Мысал: Белгі Команда Операнд
COUNT DB 1 ;Ат, команда, бір операнд
MOV AX, 0 ; Команда, екі операнд
Белгілер Ассемблер тілінде мынадай символдардан жасалады:
Әріптер: от А до Z и от а до z
Цифрлар: от 0 до 9
Арнайы символдар: сұрақ таңбасы, нүкте (тек қана бірінші символ), «коммерциялық эт» (@ ), $,астынын сызу.
Первым символом в метке должна быть буква или специальный символ. Ассемблер не делает различия между заглавными и строчными буквами. Максимальная длина метки 31 символ. Примеры меток: COUNT, PAGE25, $E10. Рекомаендуется использовать описательные и смысловые метки. Все имена регистров являются зарезервированными и используются только для указания соответствующих регистров. Например, в команде
ADD AX, BX
14. Тақырып: Кодтау форматттарына үлгілер.
Ассемблер автоматты түрде AX және BX регистрларын айырадыБірақ келесі командада
MOV REGSAVE, AX
ассемблер REGSAVE атын ол мәліметтер сегментіне анықталған болған жағдайда ғана таниды.
Команда
Мнемоникалық команда ассемблерге берілген оператор қандай әрекетті орындауға тиісті екенін көрсетеді. Мәліметтер сегментінде команда өісті, жұмыс облысын немесе константаны анықтайды.
Кодтар сегментінде команда әрекетті анықтайды, мысалы, қосу (ADD) немесе көшу (MOV ).
Операнд
Команда орындалу әрекетті спецификациялайтын болса, операнд мәліметтердің бастапқы мәндерін анықтайды немемсе команда бойынша өнделетін элементтерді анықтайды.
Мысалы:
Белгі Команда Операнд
CNTR DB 0 ; нольдік емес байтты анықтау
Командада бір немесе екі операнд болуы мүмкін; кейде операндтар болмауы мүмкін
Мысалдар:
Команда Операнд Комментарий
Операндтар жоқ: RET ; қайта оралу
Бір операнд : INC CX ; СХ-ті өсіру
Екі операнда: ADD AX, 12 ; АХ-ке 12-ні қосу
15. Тақырып: Директивалар
PAGE директивасы.
Программа басында жолда неше символ және бір бетте неше жол басылатынын қөрсетуге болады.
Мысалы, PAGE 60, 132 - бір жолға 132 имвол және бір бетте 60 жол форматын орнату.
установка формата 60 строк на страницу и 132 символа в строке.
TITLE директивасы. Әрбір бетте программаның атын басуды орнатады.
Мысалы, TITLE ASMSORT
SEGMENT директивасы.
Кезкелген ассембрлік программа кеміндн бір сегментті қамтиды – ол код сегменті. Соған қоса стектік жады үшін арналңан сегмент және мәліметтер сегменті қолданылуы мүмкін.
SEGMENT директивасының форматы:
Ат Директива Операнд
Ат SEGMENT [параметрлер]
… …
… …
Ат ENDS
Екінші сместр
16. Тақырып: Директивалар
Сегмент аты міндетті түрде көрсетіледі; сегмент аты уникальды болуға тиісті; сегмент аты Ассемблер келесімдері бойынша жазылады.
ENDS директивасы сегменттің соның білдіреді. SEGMENT и ENDS директиваларының аттары бірдей болуға тиісті.
Мысалы: CODESG SEGMENT PARA ‘CODE’
PARA параметрі сегменттің басталу шекарасын көрсетеді. Эдетінше сегментті паранраф шекарасына орналастыратын PARA мәні қолданылады.
PARA мәні болмаған жағдайда ассемблер өзі PARA мәнін қабылдайды.
PROC директивасы
Код сегментінде программаның тек қана орындалатын командалары ғана орналасады. Сонымен қатар бұ сегментте PROC. директивамен анықталатын бір немесе бірнеше процедуралары орналасады.
Бір ғана процедурадан тұратын сегменттің түрі мынадай болады:
сегмента _ аты SEGMENT PARA
процедуры_ аты PROC FAR Сегмент
… … … кода с
… … … одной
RET процедурой
процедуры_аты ENDP
сегмента_ аты ENDS
17. Тақырып: Программаны инициализациялау
Система DOS имеет 4 требования для инициализации ассемблерной exe-программы.
Для этого необходимо:
- указать ассемблеру, какие сегментные регистры должны соот-ть сгментам;
- сохранит в стеке адрес, находящийся в регистре DS;
- записать в стек нулевой адрес;
- загрузит в регистр DS адрес сегмента данных.
Выход из программы и возврат в DOS сводится к использованию команды RET.
Прмер инициализации exe-программы:
CODESG SEGMENT PARA ‘CODE’
BEGIN PROC FAR
1. ASSUME CS:CODESG, DS:DATASG, SS:STACKSG
2. PUSH DS ; Записать DS в стек
3. SUB AX,AX ; Установить ноль в АХ
PUSH AX ; Записать ноль в стек
4. MOV AX, DATASG ; Занести адрес
MOV DS, AX ; DATASG в DS
… … …
5. RET ; Возврат в DOS
BEGIN ENDP
CODESG ENDS
END BEGIN
18. Тақырып: Бастапқы программа мысалы
1. ASSUME – это ассемблерная директива, к-ая устанавливает для ассемблера соотвествие между конкретными сегментами и сегментными регистрами; в данном случае CODESG соот-ет CS, DATASG – DS, STACKSG - и SS. Сегменты DATASG и STACKSG в этом примере не определены, но они могли быть представлены следующим образом:
STACKSG SEGMENT PARA STACK Stack ‘Stack’
DATASG SEGMENT PARA ‘Data’
Ассоциируя сегменты с сегментными регистрами, ассемблер может определить смещения к отдельным областям в каждом сегменте. Например, каждая команда в сегменте кодов имеет определенную длину: первая команда имеет смещение 0, и если эта двухбайтовая команда, то вторая команда будет иметь смещение 2 и т.д.
2. Загрузочному модулю в памяти непосредственно предшествует 256-байтовая (100Н) область, называемая префиксом программного сегмента PSP. Программа загрузчика использует регистр DS для установки адреса начальной точки PSP. Пользовательская программа должна сохранить этот адрес, поместив его в стек. Позже команда RET возьмет этот адрес из стека для возврата в DOS.
3. В системе требуется, чтобы следующее значение в стеке являлось нулевым адресом (точнее смещением). Для этого команда SUB очищает регистр AX, вычитая его из этого же регистра AX , а команда PUSH заносит его значение в стек.
19. Тақырып: Мәліметтерді анықтау директивалары
Директивы определения данных
Название директивы : Формат директивы: Примеры :
DB (Define Byteопределить байт) имя DB выражение [, …] VOL DB 56
DW (определить слово) имя DW выражение [, …] TIME DB 120
DD (определить двойное слово) имя DD выражение [, …] SPEED DW 560
Директивы DB и DW можно использовать для создания в памяти таблиц, перечисляя через запятую начальные значения переменных, образующих таблицу.
Например:
B_TABL DB 0,0,0,0,8,-13
DB 100, 0, 55, 63, 63, 63
или B_TABL DB 4 DUP(0), 8,-13, 100, 0, 55, 3 DUP(63)
W_TABL DW 1025, 370, 0, -32768, 5, 130
DW 11, 210, 176, 542, 3, 711
При определении переменной без присваивания ей начального значения, ставится знак ?
Например, резервируем байт и слово в памяти, но значения не заносим:
ROST DB ?
VES DW ?
Резервирование памяти для таблицы: RES_NABL DW 31 DUP(?) – 31 СЛОВО ПАМЯТИ
Пример: SOOB DB ‘Введенное число не может быть обработано’
DB ‘Введите , пожалуйста, снова’
20. Тақырып: Мәліметтерді анықтау директивалары
Директивы определения данных
Название директивы : Формат директивы: Примеры :
DB (Define Byteопределить байт) имя DB выражение [, …] VOL DB 56
DW (определить слово) имя DW выражение [, …] TIME DB 120
DD (определить двойное слово) имя DD выражение [, …] SPEED DW 560
Директивы DB и DW можно использовать для создания в памяти таблиц, перечисляя через запятую начальные значения переменных, образующих таблицу.
Например:
B_TABL DB 0,0,0,0,8,-13
DB 100, 0, 55, 63, 63, 63
или B_TABL DB 4 DUP(0), 8,-13, 100, 0, 55, 3 DUP(63)
W_TABL DW 1025, 370, 0, -32768, 5, 130
DW 11, 210, 176, 542, 3, 711
При определении переменной без присваивания ей начального значения, ставится знак ?
Например, резервируем байт и слово в памяти, но значения не заносим:
ROST DB ?
VES DW ?
Резервирование памяти для таблицы: RES_NABL DW 31 DUP(?) – 31 СЛОВО ПАМЯТИ
Пример: SOOB DB ‘Введенное число не может быть обработано’
DB ‘Введите , пожалуйста, снова’
21. Тақырып: Тікелей қолданылатын операндтар, тікелей қолданылатын форматтар
Тікелей қолданылатын мәндер сандық немесе символьдық мәндер болып табылады да команданың бір бөлігі болып есесптеледі.
Тікелей қолданылатын мәндерді программист өзі программма жазу барысында анықтайды.
2. Жәй типті мәндер саны шектеулі жадыда орын бөлу директивалар жиынтығы мен аталады.
Бұл директивалар көмегімен қарапайым әрекеттерді орындауға болады, атап айтқанда, сандқ және символьдық ақпаратты инициалдау және орналастыру.
Бқл директиваларды өндеу барысында Ассемблер өзінің символдар кестесінде мәліметтердің орналасу орны туралы ақпаратты сақтайды (адрес және ығысудың сегменттік мәндері) .
размещению и инициализации числовой и символьной информации. При обработке этих Эти два типа данных являются элементарными , или базовыми ; работа с ними поддерживается на уровне системы команд микропроцессора. Используя данные этих типов, можно формализовать и запрограммировать практически любую задачу. Но насколько это будет удобно — вот .
Күрделі типтер базалық типтер негізінде құрылады. Олар ассемблерге программаны құруды жеңілдету мақматымен еңгізілген.
22. Тақырып: Тікелей қолданылатын операндтар, тікелей қолданылатын форматтар
Жоғары деңгейлі тілде жазылғанның барлығы тек қана базалық типтер мен ғана жұмыс жасайтын машиналық командалар деңгейінде қөрсетіледі. Сондықтан ең тиімді деп машиналық кодтар тілінде жазылған программа, бірақ үлкен программаларда бүгінгі күнде машиналық кодта жазудың мәні жоқ..
Қарапайыи тип түсінігі екі екіжақтық деуге болады. Мөлшер жағынан қарастыруда микропроцессор мәліметтердің келесі негізгі типтерін сүйемелдейді(физикалық интерпретация):
байт
сөз
еккілік сөз
төрттік сөз
Олардың құрамы суретте берілген.
23. Тақырып: Com- exe-файылдардаға программаларының айырмашылықтары.
Барлық сегменттер программада сипаттталу жағынан бірдей, себебі SEGMENT және ENDS
директиваларында сегменттердің атқаратын міндеттері туралы мәлімет берілмейді.
Оларды код, мәліметтер немесе стек сегменттері ретінде қолдану үшін трансляторға алдын ала сәйкес мәлімет беру қажет. Ол үшін ASSUME директивасы қолданылады. Оның форматы суретте берілген. Бұл директива қандай сегмент қандай сегменттік регистрмен байланысты екенін трансляторға хабарлайды. Сондықтан транслятор сегменттарда аталған символдық аттарды д9рыс байланыстырадыы.
сегментах. Привязка сегментов к сегментным регистрам осуществляется с помощью операндов этой директивы, в которых имя_сегмента должно быть именем сегмента, определенным в исходном тексте программы директивой SEGMENT или ключевым словом nothing . Если в качестве операнда используется только ключевое слово nothing , то предшествующие назначения сегментных регистров аннулируются, причем сразу для всех шести сегментных регистров. Но ключевое слово nothing можно использовать вместо аргумента имя сегмента; в этом случае будет выборочно разрываться связь между сегментом с именем имя сегмента и соответствующим сегментным регистром (см. рис. 15).
24. Тақырып: Com- exe-файылдардаға программаларының айырмашылықтары..
MASM и TASM трансляторларына оңайлатылған сегменттеу директивалары кіргізілген. Бқл жағдайда MODEL жады моделін қөрсететін директива пайдалынады. Бұл директива жартылай сегменттерді орналастыруды бпсқарады да және ASSUME директивасының функцияларын орындайды. MODEL директивасы оңайлатылған директиваларды пайдалану жағдайда сегмнттерді байланыстырады.
Оңайлатылған директиваларды қолданылатын программа мысалын келтірейік.
Листинг 1. Оңайлатылған директиваларды қолдану
;---------Prg_3_1.asm-------------------------------
masm ;режим работы TASM: ideal или masm
model small ;модель памяти
.data ;сегмент данных
message db 'Введите две шестнадцатеричные цифры,$'
.stack ;сегмент стека
db 256 dup ('?') ;сегмент стека
.code ;сегмент кода
main proc ;начало процедуры main
mov ax,@data ;заносим адрес сегмента данных в регистр ax
mov ds,ax ;ax в ds
;далее текст программы (см. сегмента кода в листинге 3.1 книги)
mov ax,4c00h ;пересылка 4c00h в регистр ax
int 21h ;вызов прерывания с номером 21h
main endp ;конец процедуры main
end main ;конец программы с точкой входа main
|
25. Тақырып: Программаның логикасы және ұйымдастырылуы
Программа на ассемблере представляет собой совокупность блоков памяти, называемых сегментами памяти . Программа может состоять из одного или нескольких таких блоков-сегментов. Каждый сегмент содержит совокупность предложений языка, каждое из которых занимает отдельную строку кода программы.
Предложения ассемблера бывают четырех типов:
команды или инструкции , представляющие собой символические аналоги машинных команд.
В процессе трансляции инструкции ассемблера преобразуются в соответствующие команды системы команд микропроцессора;
макрокоманды — оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями;
директивы , являющиеся указанием транслятору ассемблера на выполнение некоторых действий. У директив нет аналогов в машинном представлении;
строки комментариев , содержащие любые символы, в том числе и буквы русского алфавита. Комментарии игнорируются транслятором.
26. Тақырып: Программаның логикасы және ұйымдастырылуы
Достарыңызбен бөлісу: |