№
|
Тақырыбы және қысқаша мазмұны
|
Аудит. сағат саны
|
Қолданылатын әдебиет
|
№
|
беті
|
1.
|
Санау жүйелері
|
2
|
|
|
2.
|
Бір санау жүйеден екіншісіне өту
|
2
|
|
|
3.
|
Бит және байт ұғымдары. Мәліметтердің жадта сақтау. ASCII стандарты.
|
2
|
|
|
4.
|
Екілік санау жүйеде арифметика.
|
2
|
|
|
5.
|
Debug программасы, оның мүмкіншіліктері.
|
2
|
|
|
6.
|
Оналтылық санау жүйесінің арифметикасы.
|
2
|
|
|
7.
|
Ондық санау жүйеден оналтылық санау жүйеге өту.
|
2
|
|
|
8.
|
Регистр түсінігі. Жад.
|
2
|
|
|
9.
|
Сигмент түсінігі.
|
2
|
|
|
10.
|
Debug программасында қосу және алу амалдары.
|
2
|
|
|
11.
|
Debug программасында көбейту және бөлу амалдары.
|
2
|
|
|
12.
|
Экранға символдарды шығару.
|
2
|
|
|
13.
|
Екі қатарлы программалар. Регистрлер аралық мәліметтерді жіберу.
|
2
|
|
|
14.
|
Екілік сандарды экранға шығару.
|
2
|
|
|
15.
|
Циклдер бірлестігі
|
2
|
|
|
16.
|
Оналтылық санау жүйесіндегі сандарды экранға шығару.
|
2
|
|
|
17.
|
Жылжыту инструкциясы.
|
2
|
|
|
18.
|
Логикалық амалдар.
|
2
|
|
|
19
|
Символдарды клавіатура жәрдемінде енгізу
|
2
|
|
|
20.
|
Символдарды енгізу
|
2
|
|
|
21.
|
Бір және екі цифрадан тұратын оналтылық санау жүйесін салыстырып оқу.
|
2
|
|
|
22.
|
Процедуралар.
|
2
|
|
|
23.
|
Стек және қайтару адресі.
|
2
|
|
|
24.
|
PUSH инструкциясының қолданылуы
|
2
|
|
|
25.
|
POP инструкциясының қолданылуы
|
2
|
|
|
26.
|
Оналтылық санау жүйесін салыстыру оқудың жай әдісі.
|
2
|
|
|
Барлығы:
|
52
|
|
|
Лекция 1.
Тақырыбы: Санау жүйелері.
Жоспары: 1. Санау жүйелері туралы түсінік.
2. Екілік, сегіздік, ондық және оналтылық санау жүйелері.
1. Санау жүйелері.
Күнделікті өмірде біз ондық санау жүйесінен пайдаланағанымыз үшін барлық сандарды ондық санау жүйеде түсінеміз. Біз бала күнімізден ондық санау жүйесіне үйренгенбіз және барлық есептеулерде осы санау жүйесін қолданамыз. Ондық санау жүйесінің принциптерін және оларда түрлі амалар орындау заңдылықтарын негіздеуде біріншілерден болып, Ал-Хоразмий өзінің “Хисаб ал Хинд” жазбасында қолданған және оны есептеулерде пайдалануды ұсынған. Оған дейін ғалымдар сандарды сөз арқылы жазып келген және сол кездегі заманға сай Рим цифраларын қолданып келген, бырақ бұл цифралар позицион болмағаны үшін есептеулер қиындықтар туғызған. Сонымен, ондық санау жүйесі араб цифралары деп қабылданған 10 цифрадан олар 0,1,2,3,4,5,6,7,8,9 дан тұрады. Бүгінгі күнде барлық сандар осы 10 цифралар жәрдемінде жазылады.
Бұл санау жүйеден басқа, екілік, сегіздік, оналтылық санау жүйелері де бар. Кей деректерге сенсек, ежелгі Вавилондықтарда 60 тық санау жүйесінен де пайдаланған.
Екілік санау жүйесі есептеулерді автоматтандыруда қолдану өте қолайлы. Екілік санау жүйесінің маңызы да электрон есептеу машиналарының дамуымен артты. Екілік санау жүйесі тек 0,1 сандарынан тұрады. Екілік санау жүйесі тек осы екі сан көмегімен сипатталады.
Сегіздік санау жүйесі де ЭЕМ қолданады. Сегіздік санау жүйесі барлық сандар тек сегіз цифралар көмегімен сипатталады олар 0,1,2,3,4,5,6,7.
Оналтылық санау жүйенің де ЭЕМ- да қолдану ерекше. Бұл санау жүйеде ондық санау жүйенің цифраларын және латын әріптерін қолданады. Бұл санау жүйедегі сандарға он алты цифраларда (10 цифра және алты латын әріп) тұрады. Олар 0,1,2,3,4,5,6,7,8,9,А,B,C,D,E,F.
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
-
Assembler автор В. Юров Москва 2001
Лекция 2.
Тақырыбы: Бір санау жүйеден екіншісіне өту.
Жаспары: 1. Бір санау жүйеден екінші санау жүйеге өту.
2. Екілік, сегіздік, ондық және оналтылық санау жүйелері.
Бір санау жүйеден екінші санау жүйеге өтуден алдын ондық санау жүйеге өтіп соң екінші санау жүйеге өткізген қолайлы.
Мысалы: Оналтылық санау жүйе, сегіздік санау жүйеге өткізуден алдын оналтылықтан ондыққа соң ондықтан сегіздікке өткізген жөн.
Бірақ бір санау жүйеден екінші санау жүйеге өтуде санның мәні өзгермей қалады тек оның көрінісі ғана өзгеретіне көңіл бөлген дұрыс.
Ондық санау жүйедегі бір санды екінші санау жүйесіне (мысалы: екілік санау жүйеге) өткізуде сол санды ізбе-із сол санау жүйеге тиісті санға (мысалы: екілік санау жүйеде екілік санына) бөлу қажет соң қалдықтарды оңнан солға қарай жазып келеміз.
Мысалы: Ондықтағы 76 саннын екілік санау жүйеге өткізу және екіліктен ондыққа қайта өткізу.
76 санды 2 ге бөліп шығамыз бұл екілікте 1001100 тен
(1001100)2=(76)10
0*20+0*21+1*22+1*23+0*24+0*25+1*26=0+0+4+8+0+0+64=76
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
2. Assembler автор В. Юров Москва 2001
Лекция 3.
Тақырыбы: Бит және байт ұғымдары. Мәліметтердің жадта сақталуы. ASCII стандарты.
Жоспары: 1. Бит ұғымы.
2. Байт ұғымы.
3. ASCII.
4. Мәліметтердің жатқа сақталуы.
Компьютердің бағдарламаларды орындауы мәліметтерді уақытша жедел жатқа сақтап тұрады. Бағдарламашылар жадыны оның көлемімен өлшейді. Компьютерлер жады бағдарламаларды орындауда есептеуде қолданылатын регистр қатарынан тұрады. Компьютер жадындағы минимал мәлімет өлшемін бит деп атайды. Бұл жаттың әр бір ұяшығын білдіреді. Ұяшыққа мәлімет жазылған немесе жазылмаған 1 немесе 0 қосылған немесе қосылмаған бар немесе жоқ т.б. болады.
Сегіз бит бірлестігі 256 түрлі комбинация қосылған (11111111) және өшірілген (0000000) береді.
Мысалы:А әріпі 0,1 000001 көрінісінде символы 00101010 көрінісінде жадна сақталады.
1 байт=8 бит
1 кбайт=1024 байт
1 мегабайт=1024 кбайт
1 гегабайт=1024 мбайт
Бүкіл әлемде микро компьютерді қолдануда стандартау мақсатында ASCII (American Standard Сode of Information Interchange) құрылған. Бұл американдық апарат алмасу стандарт кодын білдіреді. Осы принципке негізделіп . Мысалы: 0,1000001 биттерін А әріпін түсінеді. Компьютер құрылғылары арасындағы апарат алмасу процесі осы принципке негізделіп жүргізіледі. DC (дербес компьютер) процессорлары 16-лық санау жүйедегі биттік мәндерінде жадта және регисторларда қолданылады.
Мәліметтер компьютер жадында биттік көрінісінде сақталғандықтан әрбір биттік орнына жазылған 1 немесе жазылмаған 0 көрінісінде сақталады.
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
2. Assembler автор В. Юров Москва 2001
Лекция 4.
Тақырыбы: Екілік санау жүйеде арифметика.
Жоспары: 1. Екілік санау жүйе.
2. Екілік санау жүйенің арифметикасы.
Бізге ондық сан берілді. Ондық санды біз екілікке өткіземіз. Екілікке өткізу үшін берілген санды екіге бөліп шығамыз. Соң қалдықтарды оңнан солға қарай жазып келеміз, шыққан сан екілік санау жүйесі деп аталады.
Мысалы:
16 ондық сан осыны екілікке өткізу керек.
16 2
16 8 2 (16)10 (10000)2
0 8 4 2
0 4 2 2
0 2 1
0
Екілік санау жүйеде арифметика.
Егер 1 мен 0 қосылса 1 болады.
Егер 0 мен 0 қосылса 0 болады.
Егер 1 мен 1 қосылса 0 болады кейін сол жағына 1 қосылады.
0+0=0 1+0=1 1+1=10
Мысалы:
16 16:2:2:2:2 18:2:2:2:2
18
34
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
2. Assembler автор В. Юров Москва 2001
Лекция 5.
Тақырыбы: Debиg программасы, оның мүмкіншіліктері
Жоспары:
1. Debиg.
-
Debиg програмасының мүмкіншіліктері
Біздің программа не себептен Dеbиg деп аталады? ‘Buds’ (дословио насекомые) ағылшын тілде айтқанда программада қате бар деп білдіреді. Жұмыс істеп тұрған программада бұл қателер жоқ, жұмыс істемей тұрған программа (Limrind) сол уақытта бір қатесі болады (вид). Debиg программасын қолдана отырып әр қадамды программаға, қарап отыра қалай программа жұмыс істеп жатыр әр сол жерде біз қатені тауып туралауға болады. Бұл процесс отладка деп аталады (Lebuddind), осы жерден Debug программасының аты шыққан.
Компьютерлік фольклормен “Lebuddind” термині (дословию “обезжучивание”, обезнасекаливание) Гарвардский университеттің Марк 1 компьютері жұмыс істемей қойды, сол күннен бастап ол шықты.
Приличание: мысалыны ендірген соң “Enter” клавишін басамыз, осы жерде біз көреміз компьютердің жауабын, компьютердің жауаптары кітаппен тура келмеуі мүмкін өйткені сіздердің компьютерлеріңіз басқа, кітап жазылған компьютер басқа.
Белгілеп қояық барлық мысалдарда бас әріп қолданады. Бас әріпті қолданғанымыз “I” мен “S” .... ажырату үшін, егер сіз деп мысалыны кіші әріппен жазсақ қате болдмайды.
Енді Dos програмасын іске қосайық, Dos тап кейін атын теріп (бұл мысалда “А” сияқты болып көрінеді):
А>> Debug
--
шығып тұрған дефис ол біздің командаға шыққан жауап, ол Dеbug программасын шығарғаны, сол уақытта “А”-ол Dos шақырғаны. Бұл білдіреді : Debид программасы сіздің командаңызды күтіп тұр.
: Debиg тан шығып, Dos қа қайту үшін “Q” енгіземіз (англ. “Quit”) дефистің алдында одан, соң “Enter” басамыз. Енді программадан шығып, қайтадан қайтып көреміз....
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
2. Assembler автор В. Юров Москва 2001
Лекция 6.
Тақырыбы: Оналтылық санау жүйесінің арифметикасы
Жоспары:
-
Оналтылық санау жүйе.
-
Оның арифметикасы.
Біз Debug программасын қолданамыз “Н” деп аталатын. “Н” – бұл қысқаша ағылшынша “Nexarit - hmetic” (“оналтылық арифметика”). “Н” командасы екі оналтылық санды қосады және алады. Мысалы ретінде көрейік “Н” қалай жұмыс істейді, 2+3 деп бастайық. Біз білеміз 2+3=5 ондықта. Ақиқат па бұл оналтылық санға? Debug программасында тұрғанымызды анықтаймыз, содаң соң дефистен кейін мына тексті енгізіңіз:
-Н32
0005 0001
Debug қосу (0005) және алу (0001) 3 және 2 енгізеді “Н” командасы екі санның қосуын және алуын есептейді. Әзірше нәтижелері бір оналтылықтада, ондықтада. Бірақ алда сюрпризге жолығуымыз мүмкін.
Мысалы: Не болады егер біз “Н23” деп ендірсек, демек қоссақ және алсақ 2 мен 3,
3 пен 2 емес.
Егер біз бұны орындасақ онда:
-Н32
0005 FFFF
-1 орнына FFFF шығады, 2-3. FFFF – оналтылық сан (-1 тең.
1) Тоғызға бірді қосып көрейік 10 деген ондық санды береді
-Н91
000А 0008
Тоғызға бірді қосқанда А-ға тең ба? Иә: А – оналтылық сан 10-ға тең. Егер біз 10 нан да үлкен санды шығарғымыз келеді:
Мысалы 15:
-Н96
000F 0003
Егер сіздер қалған санды шығаратын болсаңыз онда сіз 16 санды көресіз 0 ден F
(0 ден 9 және А дан F). “Оналтылық” деген 16 деген саннан шыққан.
0 ден 9 сандар ондыққа да оналтылыққа да бірдей. Оналтылық сандар А дан F ондықта
10-нан 15-ке дейінгі санды білдіреді.
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
2. Assembler автор В. Юров Москва 2001
Лекция 7.
Тақырыбы: Ондық санау жүйеден оналтылық санау жүйеге өту. Теріс сандар.
Жоспар:
1 Ондық санау жүйеден оналтылық санау жүйеге өту.
2. Теріс сандар.
Бұл тақырыпта біз ондық санау жүйені оналтылық санау жүйеге өткізуді үйренеміз. Ондықтан оналтылыққа өткізгенде біз мектеп математикасын қолданамыз. Бізге бөлу тақырыбын өткенде біз мысалы 9-ді 2-ге бөлетін едік, 1 қалдық. Қалдықты ондықтан оналтылыққа өткізгенде қолданамыз.
Мысалы: ондық санды ізбе-із бөлгенде нәтижеде не шығатының көрейік 493 ті 10ға бөлгенде
493/10=49 қалдық 3
49/10=4 қалдық 9
4/10=0 қалдық 4
493 шығады.
493 саны қалдықтардан шығады.
Алдын біз білдік, оналтылық санды ондыққа ауыстыру үшін тек дәрежесін 10ді 16ға ауыстырсақ болады.
Мысалы:
1069/16=66 қалдық 13
66/16=4 қалдық 2
4/16=0 қалдық 4
42Dh
Ондық санды оналтылыққа өткізу үшін оны 10ға емес 16ға бөлсек боладыма? Иә болады ондық санау жүйені оналтылыққа ауыстыру осы жолмен.
Мысалы: 493 санның оналтылық эквивалентін табайық. Пәсте көрсетілгендей 16ға бөлейік:
493/16=30 қалдық 13(Dh)
30/16=1қалдық 14(Eh)
1/16=0 қалдық 1(1h)
493 1EDh
Ондық санау жүйедегі 493 саны оналтылық эквивалентте 1Edh болып табылады. Басқаша айтқанда 16 бөліп жауабы қалдықтардан оналтылық санау жүйе шығады.
2. Теріс сандар.
Егер сіздердің естеріңізде болса, бізде FFFFh деген сан бар. FFFFh санды біз –1 тең дедік. Егер біз FFFFh ондық санау жүйеге ауыстырсақ онда 65535 шығады. Бұндай бола ма?
FFFFh саны теріс саны болып есептелеме?
Солай болса, онда біз FFFFh қасамыз, біздін есебіміз бойынша –1 және 5, жауабы 4 болуы керек, өйткені 5-1=4. Осылай шығады ма? Debug программасын қолдана
“Н” 5 және FFFFh қосқанда шығады:
-Н 5 FFFF
0004 0006
-
Debug FFFFh –1 сияқты. Бірақ FFFFh барлық біз жазатын программада –1 болмайды.
Екі ондық санды қосқанда біз 1 алдағы үяшыққа өткіземіз мұндайды жиы қолданамыз
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
2. Assembler автор В. Юров Москва 2001
Лекция 8-9.
Тақырыбы: Регистр түсінігі. Жад. Сигмент түсінігі
Жоспары:
1. Регистр түсінігі.
-
Жад.
-
Сигмент түсінігі
Процесорларды арифметикалық есептеулерді қамсыздандыру және жадты адрестеу үшін программалар орындауда 14 регисторлар да пайдаланылады. Әр бір регистр бір сөз (16 бит) ұзындығынан тұрады және бір атпен адрестеледі. Регистор биті оңнан сол жаққа қарай номерлеу қабылдаған: 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0.
Сигменттік регистрлар CS, SS, DS, ES
Қолданған сигмент деп аталатын әр бір сигменттік регистр 64 кбайт көлемді жад адресімен қамтамасыз етеді. Сигменттік регисторлар 4ке бөлінеді. CS, SS, DS, ES
-
Регистор CS сигментік регистр коды сигмент кодының бастапқы адресінен тұрады,
осы адрес және көрсеткіш командасының (IP) мәні орындауда таңдаоған команданың адресін анықтайды жай программаларды орындауда CS регистрі үшін нұсқау көрсету қажетті емес.
-
Регистр DS сигмент мәліметтердің регистірі сигменттер мәліметі бастапқы
адресінен тұрады. Бұл адрес командада анықталған болады және мәліметтер сигменттерінде нақты ұяшықты көрсетеді.
-
Регистр SS стек сигментінің регистірі стек сигментінің бастапқы адресінен тұрады.
-
Регистр ES қатарлық типтерге байланысты кейбір амалдар жадтағы адрестерді
басқару үшін қосымша сигменті регисторларды пайдаланылады. Берілген контексте ES регистры DI регистр индексімен байланысты. Егер ES регистрын қолдану қажет болмаса ассемблерлік программаларды инициалдау қажет.
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
2. Assembler автор В. Юров Москва 2001
Лекция 10.
Тақырыбы: Debug программасында қосу және алу амалдары.
Жоспары:
-
Debug программасында қосу.
-
Debug программасында алу.
Енді регистрлер осылай жазылу керек.
AX=03A7 BX=092A CX=00000 DX=0000 SP=FFEE BD=0000 S1=0000 DI=0000
DS=3756 ES=3756 SS=3756 CS=3756 IP=0100 NV UP DI PL NZ NA PO NC
3756:0100 01D8 ADD AX, BX
ADD инструкциясы компьютер жадының керекті жерде орналасқан. Бұл үшінші қатардан белгілі. Бірінші екі сан 3756:0100 ол адресі (100h) бірінші санның инструкциясы. Бұдан кейін біз екі байтты көріп тұрмыз ADD:01D8 көрсетілген.
Байт 01h тең 100h адресі арқылы орналасқан соңында машина тілінде сообщение орналасқан. Бұны Debug қосу инструкциясы дейді. Инструкция орнатылып болған соң Debugке қай жерде орналасқанын айту керек.
Микропроцессор CS, IP арнайы регистірде сегмент номерімен жылжу адресін табады. Біз оны келесі листингтен көре аламыз. Экранға шыққан регистрлерге қарап біз Debug CS =3756 деп орнатқанын көреміз. Осылайша біздің инструкциямыздың басының толық адресі 3756 : 0100. Бұл адрестің келесі бөлігі (3756 сегментінің ішіндегі жылжытулар) инструкция көрсеткіш –IP регистірінде сақталады. Микропроцессор ІР регистрынан алынған жылжытуды біздің бірінші инструкцияда табу үшін пайдаланады. ІР регетріне бірінші инструкцияның адресін жазып ІР=0100 жазып біз микропроцессірге оны қай жерде іздеу керектігін хабарлаймыз. Бірақ ІР регистрі 100 h та установлен. Debug әр инструкцияны ендіріп болған соң, регистрлерді дұрыс установка болған соң біз Debug тен оның орындауын сұраймыз. Ол үшін біз Debug команlасын қолданамыз “Т” (ағылшынша “Trace”), бұл команда бір қадамда бір инструкцияны орындайды, одан кейін регистрлердің мазмұнын көрсетеді. Әр IP-ді ендірген сайын келесі инструкцияны көрсетеді, біздің жағдайда 102h көрсетеді. Біз 102 h ешқандай инструкцияны қолданбадық сондықтан біз соңғы қатарда, алдыңғы программадан қалған инструкцияны көреміз. қолданбадық сондықтан біз соңғы қатарда, алдынғы программадан қалған инструкцияны көреміз.
“Т” командасы арқылы Debug тан инструкцияның орындауын сұрайық.
-Т
АХ=OCD1 BX=092A CX=00000 DX=0000 SP=FFEE BD=0000
SI=0000 DI=0000
DS=3756 ES=3756 SS=3756 CS=0102 IP=0102 NV UP DI PL NZ NА РО NC
3756:0102 AC LOPSB
AX ренистрі CD1h санына тең, ол 3А7h және 92Аh қосындысы ал IP регистрі 102h адтесін көрсетеді, сондықтан регистрлердің соңғы қатарында 100h емес 102h адресінде орналасқан инструкцияны көреміз. Алда айтып кеткендей инструкция көрсеткіші CS регистрімен бірге келесі микропроцссор орындайды, инструкцияны көрсетеді.
Егер біз қайтадан “Т” енгізсек онда келесі инструкция орындалады. Бірақ оны қазыр орындамау керек өйткені сіздің микропроцессорыңыз “асылып” қалуы мүмкін.
Егер енген инструкцияны тағы орындағымыз келсе, 92Ah және CD1h жаңадан шыққан жауапты АХ-те сақтасақ?
Микропроцесорге келесі инструкцияны қай жерден табатымызды түсіндіру үшін не істеуіміз керек, сөйтіп ол келесі инструкциямыз “ADD AX, BX” , болу керек 100h адресінде орналасқан.
IP регистрінің мәнің 100-ге өзгерте аламыз ба? Өзгертіп көрейік “R” командасын қолдайық IP-ді 100 устанавить ету үшін, одан соң регистерлердің распечаткасын көрейік.
АХ=OCD1 BX=092A CX=00000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=3756 ES=3756 SS=3756 CS=3756 IP=0100 NV UP DI PL N2 NA PO NC 3756:0100 ADD AX BX
Қайтадан .T” командасын ендіріңіз, сөйтіп көрейік Ах регистірі 15 FBh санды қабылдағанын.
Көріп тұрғандай листингтың төменгі жағдайда орналасқан Ipрегистірін тексеру қажет сол инструксияға сәйкес. Сонымен сіздер сенімді боласыздар микропроцессордың керекті инструкциясын орындап жатқанына.
Алу амалы.
Вх-тен Ах инструкциясының алуын жазайық, алу амалын орындап болған соң Ах регистірінің нәтижесі 3А7h тең болады онда біз бастаған орнымызға келеміз. Сонымен біздер көресіздер қалай эканомдап 2 байтты ендіргенді.
ADD инструкциясына 2 байтты ендірген кезде екірет ,,E” командасын енгізетінедік бірінші рет 0100h-ден екінші адреске. Бірақ біз екінші байтты ендіре аламыз тағы бір ,,E” командасын қолданбай ақ, егер біз прабел арқылы ажыратсақ екінші байтты. Ендіріп болған соң ,,Enter” клавишін басыңыз. Бұл амалды біздің алу инструкйиясында қолданып көріңіз:
-E 100
3756:0100 01.29 08.08.
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
2. Assembler автор В. Юров Москва 2001
Лекция 11.
Тақырыбы: Debug программасында көбейту және бөлу амалдары.
Жоспары: 1. Debug программасында көбейту.
2. Debug программасында бөлу.
Біз көрдік қалай Debug программасы екі сайды қосты және алды. Енді бұл программаны көбейтіп және бөлгенін көреміз. Көбейту инструкциясы “MUL” деп аталады, ал машиналық код көбейту үшін АХ-ті ВХ-Ғ7h E3h. Жадқа ендіргеннен алдын MUL инструкциясын қысқаша айтып кетейік.
MUL инструкциясы жауабын қай жерде сақтайды? АХ регистрінде ма? Тек ол жерде емес ; абай болу керек. Екі ноалты биттық санна көбейтсек 32 разрядты жауап береді, сондықтан MUL инструкциясы жауабын екі регистрде DХ және АХ-те сақтайды. Үлкен 16 бит DХ регистрінде орналасқан, ал кіші АХ регистрінде. Бұл регистрді былай жазсақ болады. DX:AX.
Debug программасына және микропроцесорге қайтайық. Ғ7h E3h көбейту инструкциясын енгізейік 0100 h адресіндегі дей қосу және бөлу инструкциясындағыдай, AX=7C4Bh және BX=100h. Сіздер инструкцияны “NUL BX” сияқты регистрін листитте көресіздер, АХ регистріне с...... . Сөзді көбейткенде микропроцессор әр қашан регистрді көбейтеді, аты инструкцияда көрсетілгендей. АХ регистріне, жауабын 2 регистрде сақтайды DX:AX.
Көбейту инструкциясын көбейтуден алдын, көбейтуді қолмен көбейтейік. Қалай санаймыз 100h* 7C4Bh? 100h көбеиту деген ол ое алтылы санның оң жағына 3 нөлді жазамыз. Сонымен 100h* 7C4Bh=7C4B000h. Бұл жауап ұзын бір сөйлемде сыйдыру үшін, сондықтан оны екі сөзге бөлеміз 007ch және 4B00h. Инструкцияны қосу үшін Debud қолданайық. Сіздер көресіздер. DX 007Ch сөзді, ал АХ 4В00h сөзді. Басқаша айтқанда микропроцессор DX:AX регистрінде сөздің көбейту инструкцияда жауабын қайтарады. Екі сөздің көбейту жауабы екі сөзден үлкен болмайды, бірақ көбіне бір сөзден үлкен болады. Сөзді көбейту инструкциясы жауабын екі регитде DX:AX деп қайтарады. Бөлген кезде не болады? Санды бөлген кезде микропроцессор жауапты да, бөлгеннен қалған қалдықты да сақтайды. F7h F3h инструкциясына көрсетейік 0100h адресінде (және 101h). NUL инструкциясы сияқты, DIV DX:AX регистрін қолданады, шыққан нәтижені “DIV BX”
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
2. Assembler автор В. Юров Москва 2001
Лекция 12.
Тақырыбы: Экранға символдарды шығару.
Жоспары:
-
INT инструкциясы.
-
Экранға символды шығару.
Dos- та символды экранға шығарғаннан бастайық, одан кейін бірнеше инструкциядан тұратын программа құрайық.
Төрт математикалық инструкцияларға ADD, SUB, MUL және DIV біз “INT” атты жаңа инструкцияны қосамыз (ағылшынша “Interrupt” - прерывание). INT Бейсиктегі Gosub операторына сияқты. DOSта символды экранға шығару үшін INT инструкциясын қолданамыз.
INT инструкциясы қандай жұмыс істейтінің көру үшін бір мысал көрейік. Debud – ті қосайық одан кейін 20h-AX-ке және 41h-ке. INT инструкциясы DOS-ғы функцияда мынандай INT 21 h машиналық кодта CDh 21h. Соңғы тақырыптағыдай DIV инструкциясы сияқты, ол екі байтты инструкция. “INT21h” ;жадқа ендіріп 100h адресінен бастап “R” командасын қолданайық анықтау үшін “INT21h” инструкциясы осылай оқылама. (100h IP-ді енгізуді ұмытпаңыз егер сіз оны әле істемесеңіз).
Енді біз дайынбыз бұл инструкцияны орындауға, бірақ өткен тақырыптағыдай трассировка командасын қолдана алмаймыз. Өйткені ол бір қадамда бір инструкцияны орындайды, ал INT инструкциясы DOS-тан үлкен программаны шақырады, бірнеше амалдарды орындайтын. Сонымен INT Бейсиктегі программалардай жұмыс істейді, COSUB операторы көмегімен подпрограммаларды шақырады.
Бір қатардан тұратын программаны жіберейік. Бірақ 102h адресінде орналасқан жерде инструкция орындалар алдын тоқтайды. Біз оны Debud “С” командасы арқылы орындаймыз. (қысқаша айтқанда ағылшынша “Go”), адрестен алдын жазылатын, осы жерде тоқтайық.
-G102
AX=0241 , BX=0000 , CX=00000 , DX=0000 , SP=FFEE , BP=0000 , SI=0000 , DI=0000
DS=3970 , ES=3970 , SS=3970 , CS=3970 , IP=0102 , NV VP DI PL NS NA PO NC
3970:0102 SBE5 MOV SP, BPDOS “А” әріпін ендіреді,одан кейін біздің программаға қайтты естеріңізде болсын 102h адресінде орналасқан инструкция басқапрограммадан берілгені болып табылады, сонымен сіздің листингіңіздің соңғы қатары басқаша болып көрінуі мүмкін.
Программа екі инструкциядан тұрады, екіншісі 102h адресінде орналасқан. Мынадай болып жазылады:
INT21
MOV SB, BP
Келешекте біз бұл екінші инструкцияны ауыстырамыз, белгілі бір инструкцияға, бірақ қазір біз Debud біздің программаны қостық, ол екінші инструкцияға жеткенде орындалуын тоқтатайық, содан соң регистрлердің мазмұнын көрейік.
Debug тек оналтылық санмен жұмыс істейді. Кестеден бір символды алайық ол кодты оналтылық формаға ауыстырайық. Енді аударғанымызды тексерейік, DL регистріне ауыстырған оналтылық санды ендірейік. INT инструкциясы арқылы (естеріңізде болсын IP установкасы 100h-та). Біз “G102” команданы орындауға жоқпыз, тек трассировка еттік не болғаның көру үшін. Егер сіз өзіңіз орындап көргіңіз келсе бұндай процедураны, алысқа бармаңыз онда сіздің компьютеріңіз түсініксіз болады. Бірнеше қадамды трассировка етіп болған соң Debug-тен шығып кетіңіз “Q” командасы арқылы. Бұл компьютердің түсініксіздігін тоқтатады.
-R
AX=0200 BX=092A CX=00000 DX=0041 SP=FFEE BP=0000
SI=0000 DI=0000
DS=3970 ES=3970 SS=3970 CS=3970 IP=0100 NV UP DI PL NZ
NA PO NC
3970:0100 CD21 INT21
-T
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
2. Assembler автор В. Юров Москва 2001
Лекция13.
Тақырыбы: Екі қатарлы программалар. Регистрлер аралық мәліметтерді жіберу.
Жоспары:
1. Екі қатарлы программалар.
2. Регистрлер аралық мәліметтерді жіберу.
100h адресінен бастап бір-бірінің артынан “INT 21h “ “INT 20h” (CDh21h CDh20h). Екі инструкцияны ендіреміз, біз енді барлық уақытта 100 h адресінен программаны бастаймыз.
Бізде бір инструкция болған кезде “R” командасы арқылы оны “промистать” етенек, бірақ бізде енді екі инструкция. Оны көру үшін “И” командасы бар. (ағылшынша айтқанда “unassemble”). Бейск командасыында “list” жұмыс істейді.
-u100
3970:0100 CD21 INT 21
3970:0102 CD20 INT 20
3970:0104 D98 D460250B8 ESC 09,[DI+0246][DI+B850]
3970:010A 8DOO JEA AX,[BX+SI]
3970:010C 50 Puns AX
3970:010D E82A23 CADD 243A
3970:0110 8BE5 MOV SP, BP
3970:0112 8EC41A ADD 243A
3970:0115 5D POP BP
3970:0116 C3 RET
3970:0117 55 Pusn BP
3970:0118 83ECO2 SuB SP, + 02
3970:011B 8BEC MOV BP, SP
3970:011D 823EOEO000 emd Byte ptr (000Е), 00
Тізімдегі ендірілген бірінші екі инструкция, ол инструкциялар бір қазір ендірген. Қалған инструкциялар жадта алдыңғы программадан қалған. Біздің программа өскен сайын экранға шыққан кодтарда көбейеді.
АН регистріне 02h мәнін қоямыз, ал DD регистріне барлық басқа символдың кодын (алдыңғы АХ және ДХ регистрін өзгерткендей), одан соң “G” командасын енгіземіз, экранда символды үлкейту үшін
Мысалы: егер сіз DJ ге 41h санды ендірсеңіз, онда көреміз:
-G-
A
Prodgam terminated normally
-Экранға бірнеше символды шығарып көрейік регистрлердің жаңа жолын үйренуіне өткенше
Программаларды ендіру.
Осы жерден бастап, программалардың үлкен бөлігі ұзындығына ең болмағанда бір инструкция болады және ол программаларды көру үшін, біз разсемблирование (“И”) инструкциясын қолданамыз, сондықтан біздің срңғы программамыз мына түрде шығады:
3970:0100 CD21 INT 21
3970:0102 CD20 INT 20
Осыған дейін біз программалар инструкциясын сан түрінде ендірдік.
Мысалы: CDh, 21h. Бірақ бұл өте қиын жұмыс, болғандай, инструкцияны енгізудің оңай жолы барекен. Debud программасында разассемблирование командасына адам оқитын ькоманда бар инструкцияларды.
Сонымен программаның түсініксіз санын ендіру үшін, біз ассемблирование командасын орындасақ болады, келесі енгізуде:
-А100
3970:0100 INT 21
3970:0102 INT 20
3970:0104
Инструкцияны енгізіп болған соң “Enter” клавишін басамыз, және Debug ке шақыру шығады.
“А” командасы Debug ке мәлімдейді. Біз инструкцияны мнемоникалық формада енгізгіміз келгенің, ал 100 санды командада білдіреді енгізу инструкциясы 100h ұяшықтан басталады. Ассемблирование командасы программаға көп жеңілдік туғызады.
Бұрын біз тек Debug пен жұмыс істейтін едік, біз барлық уақытта Debug арқылы программаны енгізбейміз. Программаның өзі AH және DL регистрлерін установка етеді “INT 21h” инструкциясынан алдын. Оның істеуін білу үшін, біз тағы бір MOV инструкцияны үйренейік MOV инструкциясын қолданып программалар құрамыз DOS тан келетін. Келешекте біз MOV инструкциясын қолданамыз сандарды AH және DL регистріне енгізу үшін. MOV ті сандарды регистрлер арасына жіберуін үйренеміз. 1234h ті АХ ке жазайық (12h ті АН регистріне және 34h ті AL регистріне) және ABCDh ті DX ке. (АВh ті DH-қа және СDh ті DL-ге). “А” командасы арқылы инструкцияны енгіземіз:
396F: 0100 88D4 MOV AH,DL
Бұл инструкция санды DL ден АН жібереді, АН-қа көшіріп, AL бұл жерде қолданбайды. Егер сіз осы қатарды трассировка жасасаңыз, сонда көресіз AX=CD 34h және DX=ABCDh. Тек АН ауысты. Енді 0 да тек DL дің копиясы бар.
“LET AH = DL” бейсиктегі оператор сияқты MOV инструкциясы санды екінші регистірден бірінші регистрге жібереді, сондықтан біз АН жазамыз DL алдында. MOV инструкциясының формасын қолданайық санды көшіру үшін екі регистр арасына.
Мысалы: IP ді переустановка жасап келесіні енгіземіз:
396F: 0100 89C3 MOV BX,AX
Барлық бөлімді қосып үзін программа құрайық. Ол жұлдызшаны “*” енгізеді, барлық операцияны өзі орындап, бізден регистрлердың (АН және DL) установкасын сұрамай. Программа MOV инструкциясын қолданады AH және DL регистрін установить ету үшін, INT 21h DOS тан шақырудан алдын:
396F: 0100 B 402 MOV AH,D2
396F: 0102 B22A MOV DL,2A
396F: 0104 CD21 INT 21
396F: 0106 CD20 INT 20
Программаны ендіріңіз және оны “U” (“U100”) командасымен тексеріңіз. Көріңіз IP 100h ұяшыққа көрсетіп тұрғанның, одан кейін “G” командасымен жіберіп көрініз. Нәтижеде экранда “*” символы шығу керек.
-G
Program terminated normally
-
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
2. Assembler автор В. Юров Москва 2001
Лекция 14.
Тақырыбы: Екілік сандарды экранға шығару.
Жоспары:
-
Екілік сандар.
-
Екілік сандарды экранға шығару.
Біз көрдік қалай болады екілік санау жүйдегі санды цифраға одан соң қалай оны ASCII символына ауыстыру. Егер біз INT 21h инструкцияны қоссақ цифрды шығаруға, онда біздін программа бітеді. Төменде программа берілген. Бұл жерде бірінші инструкция AH 02 орналасқан INT21h функциясын шақыру үшін (02 DOSқа хабарлайды DL регистрінен символды енгізу қажеттілігін):
3985: 0100 B402 MOV AH,02
3985: 0102 B90800 MOV CX,0008
3985: 0105 B200 MOV DL,00
3985: 0107 DOD3 RCL BL,1
3985: 0109 80D230 ADC DL,30
3985: 010C CD21 INT 21
3985: 010E E2F5 LOOP 0105
3985: 0110 CD20 INT 20
Біз алдын көрдік қалай бұл программаның бөлімдері жұмыс істейді жеке, ал енді барлық бөлімді жинайық. BL циклдік жылжуды қолданайық (“RCL BL,1” командасы арқылы) екілікте негізетін санды таңдайық BL регистрінде жіберіп, одан кейін программаны енгіземіз “G” командасы арқылы. INT 20h инструкциясы орындалып болған соң “G” командасы регистрде алдын болған мәнді қайтарады, сондықтан BL екілікте еңгізілген сан болады. “ADC DL,30” инструкция мәнді “0” немесе “1” символына.
Біріншіден “MOV DL,0” инструкциясы DL нөлге теңдейді, одан кейін ADC инструкциясы 30h-ті DL-ге қосады, соңында перенос қосылады. 30h ол ASCII кодының нөлі, “ADC DL,30” “0” символдың коды болады, немесе код “1” жалаудың установкасы (CY).
Трассировка етіңіз программаны нәтижесін көру үшін. Естеріңізде болсын, абай болуыңызды әр қадамды режимде “Т” командасы жұмыс істегенде. Программа құрамында “INT 21h” инструкциясы, алдын сіз көргендей, бірінші рет “INT 21h” кездескендей, DOS үлкен жұмыс атқарады бұл инструкцияға. Сосын сіздерге “INT 21” де “Т” қолданбауыңыз болады.
“INT 20” программа соңына дейін қатысты трассировка болмайды басқа қалған барлық инструкцияны трассировка етуіңіз болады. Трассировка уақытында әр циклді өткен сайын “INT 21h” инструкциясына еңгізесіздер “G10E”. Бұл программа Debug ке программаның орындалуы жалғастыруын мәлімдейді, IP еңгізілген адрестің мәніне жеткенше.
Сонымен Debug “INT 21h” инструкциясынын орындайды трассировкалау LOOP инструкциясы 10Е адресіне жеткенде тоқтайды, трассировкаға қайтаруына рұхсат етеді.
Біткен соң программаны тоқтатамыз “INT 20h” инструкциясына жеткен соң “G” командасын ендіріп.
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
2. Assembler автор В. Юров Москва 2001
Лекция №15.
Тақырыбы: Циклдер бірлестігі.
Жоспары:
1. Циклдер бірлестігі.
Айтып өтілгендей, RCL инструкциясының мүмкіндігі байттардыциклдық жылжытумен ғана шектелмейді. Ол бүтін бір сөздерді де жылжыта алады. Біз бұл мүмкіндікті LOOP инструкциясын демокстрация жасауға қолданамыз.
Бұл инструкцияның іс-әрекеті Бейсиктегі FOR – NEXT цикліне ұқсас.
FOR – NEXT цикліндегі сияқты LOOP инструкциясына циклді қанша рет қайталау керектігін хабарлауымыз қажет. Біз бұны СХ регистіріне қайталау. Санын ендіру арқылы орындаймыз. Әрбір қайталауда 8088 микропроцессоры СХ регистірінен 1-ді алып тастайды,ал СХ 0-ге тең болған уақытта LOOP циклді аяқтайды.
Неліктен дәл СХ регистірін қолданамыз ?
СХ регистірдегі “С” әріпі “Счётчик” (англ Count) дегенді білдіреді.
Бұл регистірді жалпы қолдануға арналған регистрлер сияқты жалпы мақсатта қолдануға болады, сонымен қатар амалдарды қайталау керек болған жағдайларда да қолдана аламыз.
Төменде қарапайым программа келтірілген. Бұл программада ВХ регистірінің мәні солға қарай BL –ді BH 8 рет жылжытады.
Цикл 106 в() адресінен басталып LOOK листі бойынша аяқталады LOOK 106 k кейінгі жазылған сан RKL листінің адресін білдіреді.
Біз программаны іске қосқанда LOOP CX ті 1-ге кемітеді сосын, егер СХ 0-ге тең болмаса 106 L адресіне өтеді. “RCL BX 1” инструкциясы 8 рет орындалады. Өйткені цикл басынан басталардан алдын СХ ке 8 саны ендіріледі.
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
2. Assembler автор В. Юров Москва 2001
Лекция 16.
Тақырыбы: Оналтылық санау жүйесіндегі сандарды экранға шығару.
Жоспары:
1. Оналтылық санау жүйе
2. Оналтылық санау жүйесінде сандарды экранға шығару.
Алдын біз екілік санау жүйесінің экранға шығару жолын оңайттың 0 және “1” символы сияқты. Енді біз санды оналтылықта шығарумен айналысамыз. Жұмысымыз қиындайды бір инструкцияларды бірнеше рет жазамыз. Алдынғы тақырыпта біз процедураларменнемесе подпрограммалармен танысамыз олар біздін жұмысымызды жеңілдетеді. Енді біз пайдалыинструкциялармен танысамыз, оналтылықтағы санды енгізуін көреміз.
Соңғы тақырыпта біз жалаулар соңғы арифметикалық операцияда статус сақтайды. Сегіз жалау бар, керегінше біз оларды үйренеміз.
Ескертеміз СУ дегеніміз 1-ге тең жылжу жалауы білдіреді, басқаша айтқанда сол уақытта ендірілген №С сияқты білдіреді жылжу жалауы 0 тең немесе жоқ. Барлық жалауға ақиқат білдіреді, ал 0 ақиқат еместі білдіреді. Мысалы: Егер сіз алу операциясын орындаған болсаңыз 0 нәтижесімен, онда жалау, нөл жалауы деп аталатын (ағыл. “Zero Flad”), 1-ге енеді ақиқат болып, сіздер оны регистірлердің распечаткасында ZR сияқты көресіздер (ағыл. “Zero” -ноп). Басқаша айтқанда 0 нөлдің жалауы 0-дегенді (ағыл. “Not Zero”-не ноль).
Жолаудың нолі тексеретін мысал көрейік. Бұл үшін SUB нисір-сы арқылы бір саннан біреуін алуды ендірейік. Егер сандар тең болса, онда жауабы нолге тең, жолаудың нолі дисплейде ZR сияқты болып шығады.
Келесі алу инструкциясын ендірейік:
396 F: 0100 2908 SUB AX, BX
Әртүрлі санмен трассировкажасаныз, жалаудын коліне қарап (ZR және NZ). Егер сіздер бірдей санды (F 5 h төмендегі мысалдағыдай) AX және BX регистіәріне ендірсеңіз, онда ноль жалауы бір алу операциясынан кейін қойылады және келесіде шығып кетеді:
Мысал:
-R
AX=00F5 BX=00F5 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000
DI=0000
DS=0CDE ES=0CDE SS=0CDE CS=0CDE IP=0100 NV UP DI PL NZ
NA PO NC
0CDE:0100 29D8 SUB AX,BX
-T
AX=0000 BX=00F5 CX=0000 DX=0000 SP=FFEE BP=0000 CI=0000 DI=0000 DS=0CDE
ES=0CDE SS=0CDE CS=0CDE IP=0102 NV UP DI PL ZR NA PO NC
0CDE:0102 3F AAF
-R IP
IP 0102
:100
-R
AX=0000 BX=00F5 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000
DI=0000
DS=0CDE ES=0CDE SS=0CDE CS=0CDE IP=0100 NV UP DI PL ZR
NA PO NC
0CDE:0100 29D8 SUB AX,BX
-T
AX=FF0B BX=00F5 CX=0000 DX= 0000 SP=FFEE BP=0000 SI=0000
DI=0000
DS=0CDE ES=0CDE SS=0CDE CS=0CDE IP=0102 OV UP DI PL NZ
NA PO NC
0CDE:0102 3F AAS
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
2. Assembler автор В. Юров Москва 2001
Лекция №17.
Тақырыбы: Жылжыту инструкциясы.
Жоспары:
1. Жылжыту инструкциясы.
Біздің программа барлық оналтылық санмен жұмыс істейді, бір саннан тұратын, егер біз 2 цифрлы 16 санды печаттау керек болса, онда қадамдар санын көбейту керек. Әр бір цифрды ерекшелеу керек.(олар 4 бит жарты байт деп аталады). Бұл бөлімде біз ажырату мүмкіндігін көрсетеміз, кейінгі бөлімде 2-ші цифраны кішіні логикалық амалдармен айрылуын көрсетеміз. RCL инструкциясы байт немесе сөзді солға қарай жылжыту.
Соңғы рет біз “RCL BL,1” инструкциясын пайдаландық, онда бір саны BL бір битке жылжытуды білдіреді, хабарлайды микропроцессор 8088ге.
RCL BL,2 инструкциясын жазалмаймыз, оны тек бір битке жылжытамыз
(RCL BL, 2 инструкциясы микропроцессор 8088 жұмыс істемейді. Ол тек 10286 IBM AT жақсы жұмыс істейді. Біз программаларды 8088 микропроцессорда жазамыз).
CL регисторын бір битке жылжыту үшін ол регисторге жылжыту счетчик қоямыз.
Бұл жерде CL регисторы CX регисторы сияқты LOOP инструкциясында қайталану циклында қолданған.
Жылжыту санын жазуға 8битті регистор CL болады, 16рет жылжытқанша.
Сөйтіп қалай бұл байланысты 2цифралы 16-қ санмен?
Бұл жердегі план Байтты DL ге оңға қарай 4 битке жылжыту. Оны орындау үшін, бұл жерде басқа жылжыту инструкциясын қолданамыз SHR деп аталатын (қысқаша айтқанда ағылшынша SHIFT RIGHT-логикалық оңға қарай жылжыту).SHR ды қолдана отырып соңғы оң жақтағы тетраэдаға,үлкен 4 битті 16 санды жылжытамыз. (4битті ) 0 0110110 1“SHR DL 1” инструкциясы.
DL гі 4 битті 0-ге теңеу керек, бұл регистр байтпен бірдей болу үшін оң жақтағы тетрадаға жылжытады.
Егер біз “SHR DL,1” енгізсек, онда инструкция байтты DL-ге оңға қарай 1 битке жылжытады. Сол уақытта ол 0 битті жолауына жылжытады битке жазып (үлкен немесе соңғы сол жақтағы битті DL-ге ). Егер бұл операцианы тағы 3 рет қайталасақ, онда қажетті шығады: төрт үлкен бит, 4 кіші биттің орнына жылжыды. Олардың орнына нолдер шығады.
Барлық логикалық жылжуды бір инструкциясы мен орындаймыз CL регистрін қолдана жылжыту счетчигі етіп CL де 4 орындау инструкциясын алдынажазсақ, онда DL үлкен16 лық санмен бірдей болады десек болады.
Мысалы: 4 ке CL ,5 DH ті DL ге енгізіп трансировка жасаймыз кейінгі жылжыту инструкциясына.
3985:0100 D2EA SHR DL, CL
Бұл жерде DL, 05H тең болу керек, өйткені ол 1 сан 5DH сөйтіп оны алдыңғы қолданған программа арқылы экранға шығарамыз. Қазіргі уақыттағы программаларды жинап, санды BL регистрін бірінші оның он алтылық санын печаттайтын. Мысалы:
3985: 0100 B 402 MOV AH, 02
3985: 0102 88DA MOV DL,BL
3985: 0104 B104 MOV CL,04
3985: 0106 D2EA SHR DL,CL
3985: 0108 80C230 ADD DL,30
3985: 010B 80FA3A CMP DL,3A
3985: 010E 7C03 JL O10F
3985: 0110 80C207 ADD DL,07
3985: 0113 CD21 INT 21
3985: 0115 CD20 INT 20
Енгізіп болған соң траcсировка жасаймыз.
Әдебиеттер:
-
Язык ассемблера для IBM PC автор П. Нортон, Д. Соухэ Москва 1993
2. Assembler автор В. Юров Москва 2001
Достарыңызбен бөлісу: |