Бастапы модульді TD-де жмыс істеу шін андай опциямен трансляциялау керек?
Программаны тексеру кезінде єрт‰рлі жµндегіштерді ќолдануѓа болады. Ќазіргі кездегі жµндегіштер программаныњ орындалу процесінде жалпы міндетті регистрлердіњ немесе айнымалылардыњ мєндерін баќылауѓа, µзгертуге м‰мкіндік береді. Сондай аќ, жадыныњ єрт‰рлі бµліктерін кµруге болады. Оларѓа Microsoft фирмасыныњ сw - Code View, Borland фирмасыныњ td, td286, td386 - TurboDebugger жµндегіштерін жатќызуѓа болады.
Ассемблер тілінде жазылан программа єрќайсысы єдетте бір жолды алатын операторлар тізбегінен трады. Операторлар 2 топќа блінеді: командалар жне директивалар (псевдокомандалар). Трансляция барысында командалар машиналы кода аударылады, ал директиваны трансляциялау бірден іске аса береді.
Ассемблер тілінде жазылан программа келесі трде болады:
[ Белгі :] Мнемокод [Операндтар] [; Т‰сініктемелер]
Билет
1.Сегментке рсат алу. Assume директивасы р программа жалпы жадайда кез келген сегменттер санынан труы ммкін, біра ол тек ана негізгі ш сегментке – код, мліметтер жне стек ана тікелей р±ќсат ала алады. Операциялы жйе программа сегменттерін жедел жадыда белгілі бір физикалы адрестер бойынша орналастырады, сонан со осы адрестер мнін аныталан жерлерге орнытырады. Наты режимде бл адрестер сйкес сегменттік регистрлерге, ал оралан режимде олар арнайы ж‰йелік дескрипторлы кестелер элементтеріне орналастырылады. Сегмент ішінде программа адрестерге сегмент басына атысты сызыты, яни 0-ден бастап сегмент лшеміне те болатын адреспен аятап, ќаратпа жасайды. Микропроцессордыњ сегмент ішіндегі мєліметтерге р±ќсат алу ‰шін ќолданатын б±л салыстырмалы адрес, немесе ыѓысу, тиімді деп аталады.
Assume директивасы. директиваларды (псевдокомандаларды) кмегімен сегменттер мен пройедураларды анытауа, командалар мен мліметтер элементтеріне ат беруге, жадты жмысшы ауматарын анытауа жне т.с.с. рекеттерді орындауа болады. Директивалардв жазылу трлері:Жиі кездесетін директиваларды трлері :SEGMENT ENDS – негізгі прграмманы сегменттерге бледі, сегментті басын жне аяын білдіреді. Сегмент трлерін анытау шін ASSUME директивасы олданылады. Оны жазылу трі: Мндаы, сегмент_регистрі – DS, CS, SS, ES сегмент регистріні аты. Егер assume директивасында мєліметтер сегментініњ ES регистріне сйкестігі кµрсетілсе
assume ES:data
(бл жадайда мєліметтер сегменті командалар сегментіні алдында орналасу керек), онда бл сегменттіњ µрісіне ќаратпа жасау командалары ES сегменті ‰шін ауыстыру префиксін ќосумен трансляцияланады.
Тура жєне жанама шартсыз кшу. Шартсыз кшу 5 т‰рде ќолданылуы м‰мкін jmpкомандасыны кмегімен жзеге асады Тура ыса (Short) кшу
Командасында кµшу ќажет белгі айќын т‰рде кµрсетілетін кµшу тура деп аталады. Белгі сол программалы сегментте болуы керек, б±л жадайда онымен белгіленген команда jmp-а дейін де, кейін де бола алады. ыса кшу командасы жадыны 2 байтын алады. Бірінші байтта – операцияны коды (EBh), ал екінші байтта – кшу нктесіне ыысу жазылады. Кшу нктесіне дейінгі ара ашыты кезекті командадан, демек jmp командасынан кейінгі командадан саналады. Кµшу алѓа да, артќа да жасалатындыќтан, ыѓысу тањбасы бар сан ретінде ќарастырылады, демек кµшу ењ кµбі 127 байт алѓа немесе 128 байт артќа жасалуы м‰мкін. Тура ыса кшу келесідей рєсімделеді:
Code segment ... jmp short go ; Код ЕВ dd ... go: ... code ends
Жанама жаын (ішкі сегменттік) кшу.Тура кшу командаларынан айырмашылыы – жанама кшу командалары адрестеудіњ ртрлі дістерін олдана алады. Олар шін кшу адресі айќын т‰рде белгі трінде крсетілмейді, ол немесе жадыда, немесе регистрлерді біреуінде болады. Б±л кµшу адресін µзгертуге, сондай аќ белгілі абсолютті адрес бойынша кµшуді жасауѓа м‰мкіндік береді. Кµшу адресі мєліметтер сегментініњ ±яшыѓында саќталѓан жаѓдайды ќарастырайыќ. Егер кшу жаќын болса, онда адресті ±яшыќ бір сзден трады жне онда тек ана кшу нктесіне ыѓысу болады.
code segment … jmp DS: go_addr
… go: ; кµшу нктес … code ends data segment go__addr dw go ; кµшу адресі (сз) ... data ends
go кшу нктесі команда сегментіні кез-келген жерінде бола алады. Команда кодында dddd командасы осы ±яшыќтан т±ратын мєліметтер сегментінде go_addr сзіні салыстырмалы адресін білдіреді.
3. mov командасын олдануа андай шектеулер енгізілген? mov командасымен бірінші операндты орнына екінші операндты мєні тасымалданады. Бл команда жалауларды µзгертпейді.
movАХ, 500 ; АХ :=500
movBL, DH ; BL:=DH
Талап: тасымалданатын операндтарды µлшемдері (типтері) бір-біріне сйкес келетінін адаалау керек.
Келесілерді орындауѓа болмайды:
1. бір жадыдан екінші жадыа тасымалдауѓа болмайды (аралыќ буфер ретінде осы кезењде р±ќсатты кез келген жалпы міндет регистрін ќолдану керек);
2. сегменттік регистрге жадыдан тікелей мєнді ж‰ктеуге (аралыќ объект ќолдану керек: жалпы міндет регистрі немесе стек).
3. бір сегменттік регистр рамын баса сегменттік регистрге ауыстыруѓа. Бл, командалар ж‰йесінде сйкес операция кодыныњ жотыымен тсіндіріледі. Біра м±ндай єрекеттіњ ажеттілігі жиі туындайды. Мндай тасымалдауды орындау шін, аралыќ ретінде барлы жалпы міндет регистрлерін олдануа болады. es регистрін ds регистріндегі мєнмен инициализациялау мысалы:
mov ax, ds
Билет
1.Циклды йымдастыратын командалар тобы.
Логикалы командалар кмегімен орнату, тастау, терістеу немесе белгілі бір мєнге тексеру маќсатымен операндта бµлек биттерді кµрсету м‰мкіндігі бар. Биттермен м±ндай ж±мысты ±йымдастыру ‰шін екінші операнd маска ролін ойнайды. Б±л масканыњ бірге орнатылѓан биттері кµмегімен бірінші операндты белгілі бір операцияѓа ќажет биттері аныќталады. циклды йымдастыратын loop командасы айсыбір адрес бойынша орналасан командаа басаруды беруден баса есх/сх регистріні мнін талдайды жєне бірге азайтады;
2. Логикалы командаларды таѓайындалуы
Микропроцессордыњ командалар ж‰йесі мєліметтерді логикалыќ т‰рлендіру ќ±ралдарынан т±рады. Логикалы деп, негізінде формальді логика ережелері жататын мєліметтерді т‰рлендіру т‰сініледі. Формальді логика аиат жне жалан пікірлері дегейінде жмыс істейді. Микропроцессор шін б±л сєйкесінше 1 жне 0 білдіреді. Ж‰йелік дегейде жмыс істеу шін ењ тменгі дегейде – биттік дегейде жмыс істеу м‰мкіндігі болуы керек. Б±л м‰мкіндіктерді логикалы командалар жне логикалы операциялар береді: оларды айырмашылыы логикалы командалар программаныњ орындалуы кезењінде, ал логикалы операциялар оныњ трансляциясы кезењінде єрекет жасайды.
Жалпы жадайда, ассемблер командасыныњ операнды µз кезегінде операторлар мен операндтардыњ комбинациясы болатын амал болып табылады. Б±л операторларды ішінде амалдыњ объекттерімен логикалыќ операцияларды іске асыратын операторлар болуы м‰мкін.
Логикалы командалар кмегімен орнату, тастау, терістеу немесе белгілі бір мєнге тексеру маќсатымен операндта бµлек биттерді кµрсету м‰мкіндігі бар. Биттермен м±ндай ж±мысты ±йымдастыру ‰шін екінші операнd маска ролін ойнайды. Б±л масканыњ бірге орнатылѓан биттері кµмегімен бірінші операндты белгілі бір операцияѓа ќажет биттері аныќталады.
3.addкомандасыны жмыс істеу алгоритмін сипаттаыз
Билет