Бастапқы модульді 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командасының жұмыс істеу алгоритмін сипаттаңыз

Билет

Наши рекомендации