Циклдық жылжыту командалары
Циклдық солға жылжыту командасы ROL әр битты солға жылжытады. Жоғарғы бит төменгі битқа және ауыстыру жалаушасына көшіріледі. Команданың синтаксисі SHL командасының синтаксисі сияқты.
Циклдық жылжыту командасының жай жылжыту командасынан ерекшелігі: бит ешқайда жоғалмайды, регистрлердің бір ұшынан ығыстырылған бит келесі ұшынан қайта жазылады.
Келесі мысалды жоғарғы бит тасымалдау жалаушасына және 0 нөмірлі төменгі битке көшіріледі:
MOV AL,40h ;AL=01000000b
ROL AL,1 ;AL=10000000b,CF=0
ROL AL,1 ;AL=00000001b,CF=1
ROL AL,1 ;AL=00000010b,CF=0
ROL командасы операндтың жоғарғы және төменгі бөліктерін тасымалдау үшін ыңғайлы. Осындай алмасу келесі программа мәтінінде көрсетілген.
Операндтың жоғарғы және төменгі биттарын алмастыру
.286
.DATA
Byteval DB 0Fh
wordval DW 1234h
.CODE
MOV AL,26h
ROL AL,4 ;AL=62h
ROL byteval,4 ;byteval=F0h
MOV AX,0203h
ROL AX,8 ;AX=0302h
ROL wordval,8 ;wordval=3412h
Циклдық оңға жылжыту командасы ROR әр битты оңға жылжытады. Төменгі бит тасымалдау жалаушасына және жоғарғы битқа көшіріледі. Команда синтаксисі SHL командасының синтаксисі сияқты.
Келесі мысалда төменгі бит ауыстыру жалаушасына және нәтиженің жоғарғы битына көшіріледі.
MOV AL,01h ;AL=00000001b
ROR AL,1 ;AL=10000000b,CF=1
ROR AL,1 ;AL=01000000b,CF=0
Көшіріп, циклдық солға жылжыту командасы RCL әр битты солға жылжытады және жоғарғы битты тасымалдау жалаушасына көшіреді. Ал тасымалдау жалаушасындағы бит төменгі битқа көшіріледі.
Келесі мысалда CLC командасы ауыстыру жалаушасының мәнін алып тастайды. Бірінші RCL командасы BL регистрінің жоғарғы битын ауыстыру жалаушасына орнатады және қалған биттардың барлығын солға жылжытады. Екінші RCL командасы тасымалдау жалаушасын төменгі битқа орналастырады және қалған биттардың барлығын солға жылжытады.
CLC ;CF=0
MOVC BL,8h ;BL=10001000b
RCL BL,1 ;BL=00010000b,CF=1
RCL BL,1 ;BL=00100001b,CF=0
Көшіріп, циклдық солға жылжыту командасы RCR әр битты оңға жылжытады және төменгі битты ауыстыру жалаушасына көшіреді. Ауыстыру жалаушасы нәтиженің жоғарғы битына көшіріледі.
Келесі мысалда STC командасы ауыстыру жалаушасының күйін циклдік жылжыту операциясынан алдында орнатады:
STC ;CF=1
MOV AH,10h ;AH=00010000b,CF=1
RCR AH,1 ;AH=10001000b,CF=0
Дебиеттер тізімі
Негізгі әдебиеттер:
1. Голубь Н.Г. Искусство программирования на Ассемблере [Текст] / Н.Г. Голубь.- 3-е изд., перераб. и дополн.- СПб.: Питер, 2006.- 820с
2. Introduction to Assembly Language Programming: Pentium and RISC processors/ Sivarama P.Dandamudi.-2nd ed.
3. Assembly-Language Developer System, Version 6.1, for MS-DOS and Windows Operating System Microsoft Corpotation.
4. Юров В. Assembler: Практикум. - СПб Питер,2001 Assembler. Учебник для вузов. 2-е изд. – СПб.:Питерб 2008.-637 с.:ил.
5. Программирование на языке ассемблер IBM_PC.–М.: «ДИАЛОГ-МИФИ», 1999.– 288с.,
6. Ассемблер для 32. Самоучитель: - М. Издательский дом «Вильямс», 2007. 368с.:ил. Г.И. Галисеев.
7. Макроассемблер: Создание и отладка программ. М.: Майор, 2001.-192с.-(Мой компьютер), В. Н. Пильщиков.
8. Фараонов В. В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. - М.: издательство «ОМД Групп», 2003. – 616 с., ил
9. Ассемблер: программирование и анализ коректности машинных прграмм. – К.: Издательская группа BHV, 2000., Пустоваров В.И.
Қосымша әдебиеттер:
Assembler:Специальный справочник. СПб: Питер, 2000, В. Юриев
Введение системное прграммирование: Пер.С англ. – М.: Мир,1988, Бек Л.
Язык ассемблер для процессоров INTEL, Кип Р. Ирвин.
Брэдли Д. Программирование на языке ассемблера для персональной ЭВМ фирмы IВМ: Пер. В англ. – М.: Радио и связь, 1988. – 448 с.
Скэнлон Л. Персональные ЭВМ ІВМ РС и ХТ. Программирование на языке ассемблера: Пер. В англ. – М.: Радио и связь, 1991. -336 с.
Абель П. Язык Ассемблера для ІВМ РС и программирования: Пер. с анлг. – М.: Высшая школа, 1992. – 477 с.
Нортон П., Сохуэ Д. Язык ассемблера для ІВМ РС: Пер. с анлг. –М.: Издательство «Компьютер»; Финансы и статистика, 1992. -352 с.
Использование Turbo Assemler при разработке программ. – Киев: «Диалектика», 1994. -288 с.
Лямин Л. В. Макроассемблер МАSM. – М.: Радио и связь, 1994. – 320 с.
Хомоненко А. Д и др. Delphi 7 / Под общ. Ред. А.Д. Хомоненко – СПб.: БХВ-Петербург, 2004.–1216 с.:ил
Культин Н. Основы программирования в Delphi 5. – СПб: БХВ-Петербург, 2003 – 608с.
Фаронов В.В. Delphi. Программирование на языке высокого уровня: Учебник для вузов – СПб.:Питер, 2004.-640 с.:ил.
Иванова Г.С., Ничушкина Т.Н., Пугачев Е.К. Объектно-ориентированное программирование: Учеб. Для вузов/ Под ред. Г.С.Ивановой.-М.: Изд-во МГТУ им. Н.Э.Баумана, 2001.-320с.,ил.(Сер. Информатика втехническом университете).
Дәріс №1.
Тақырыбы.Кіріспе.
Жоспары. Ассемблер тілі деген не? Оны оқудың қажеттілігі. Миропроцессорлардың түрлері. Олардың ерекшеліктері мен құрылымы.
Жалпы программалау процесін меңгеру үшін алдымен жоғары дәрежелі программалау тілдеріі (Паскаль, Си, Delphi, Java т.б.) оқылады. Бұл тілдерде алгоритмдерді жүзеге асырудың, сол сияқты, жылжымалы объектілік модульдердің (машина тіліндегі программа кодының) жасалуының мен қолданылуының көптеген мәселелері адамға беймәлім болып келеді. Ал, Ассемблер тілін оқу программалауды үйренумен қатар жоғары дәрежелі тілдердің компьютердің аппараттық жабдықтарымен қалайша байланыста болатынын жете түсінуге мүмкіндік береді. Сондықтан, ассемблер тілін меңгеру процессорда информацияның өңделу процесін толық түсінуге мүмкіндік беріп, программа құрушыға процессорды және операциялық жүйені басқару, сол сияқты құрылғыларға тікелей қатынау жолдарын толықтай ашады.
Ассемблер тілі әр жеке командасы процессордың командасына аударылатын төменгі деңгейлі тіл. Ол процессордың архитектурасымен тікелей байланысты. Процессордың архитектурасына өзгерістер енгізілген сайын ассемблерде жаңартылып, толықтырылып отырады. Әр прорессорлар топтары үшін өзіне лайықты ассемблер қолданылады.
Бұл күнгі, программалау жолдарын айтарлықтай жеңілдетуге бағыттылған, программалық құралдардың қарқынды даму кезеңінде Ассемблерді білу қажет пе деген сауал туатыны сөзсіз. Әрине, жүйелік программалаушылар (айталық, жүйелік, қолданбалы программалық құралдар, компьютерлік ойындар жазушылар немесе хакерлер) үшін Ассемблерді білу керектігі күмән туғызбайды. Ал қолданбалы программалаушылардың білуі қажет пе? Әрине, қажет. Іс жүзінде кез келген программалау тілдерінде ассемблерлік кіріктірмелер жасауға болады. Көптеген алгоритмдік тілдерінде программалау орталары өз модульдерінде Ассемблер модульдерін пайдалануға мүмкіндік береді. Осылайша жоғарғы деңгейлі программалаудың стандартты құралдарының мүмкіндігі шектелген жағдайлар немесе программаның тиімділігін арттыру жолдары жүзеге асырылады.
Осы курста Intel бірегейлі микропроцес-сорларының негізіне жасалған персоналды компьютерлерге арналған Ассемблер тілінде программалау қарастырылады. Мұнда мәліметтер мен командалардың компьютер жадында кескінделуі, 16- және 32- разрядты программалау негіздері, мәліметтерді енгізу-шығару жолдары, макроқұрылымдарды пайдалану мәселелері толығымен баяндалған. Сонымен қатар, компьютер архитектурусының программалауға қатысты элементтері: процессордың құрылымы мен жұмыс жасау принципі; регистрлердің түрлері мен қолданылуы; компьютер жадының ұйымдастырылу жолдары баяндалады.