- •Дәрістік сабақ конспектілері Дәріс №1. Деректердің берілуі
- •1 Сурет. Адрестік кеңістікті тарату кестесі
- •3 Сурет. .Com программаларының жадыда орналасуы
- •Дәріс №3. Микропроцессордың пайдаланушы регистрлері
- •Жалпы міндетті регистрлер
- •Сегменттік регистрлер
- •Басқару және күйлер регистрлері
- •Күйлер белгісі
- •Жүйелік белгілер
- •Дәріс №4. Микропроцессордың жүйелік регистрлері
- •Жүйелік адрес регистрлері
- •Жөндеу регистрлері
- •Дәріс №5. Операндтарды адресациялау әдістері
- •Дәріс №7. І80х86 микропроцессор командалар жүйесіне шолу. Арифметикалық командалар Екілік сандарды қосу
- •Екілік сандарды азайту
- •Сандарды көбейту
- •Imul операнд
- •Екілік –ондық сандармен орындалатын арифметикалық операциялар
- •Жинақталған bcd-сандармен орындалатын арифметикалық операциялар Жинақталған bcd-сандарды қосу
- •Жинақталған bcd-сандарды азайту
- •Бүтінсан операцияларын орындау үшін қосымшы командалар
- •Типті ауыстыру командалары
- •Дәріс №8. Екілік разрядтармен жұмыс командалары
- •Көпмодулдік программаларды ұйымдастыру
- •Макродирективалар
- •While және rept директивалары
- •Irp директивасы
- •Irpc директивасы
- •Шартқа байланысты компиляция директивалары
- •Шартқа байланысты компиляция директиваларының жалпы синтаксисі келесі құрамдағы синтаксистік конструкцияда берілген:
- •Дәріс № 14. Wіndows операциялық жүйесінде программалау негіздері
- •Дәріс № 15. Консольды қолданба
Сандарды көбейту
Таңбасыз сандарды көбейту командасы:
MUL операнд
Операнд жады ұяшығында немесе жалпы міндетті регистрдің бірінде орналаса, оның өлшемі 8, 16 немесе 32 бит болады. Командада бір ғана операнд көрсетілген. Екінші операнд көсетілмей берілген. Оның орны жасырын көбейткіш өлшеміне байланысты болады. Өйткені көбейту нәтижесі оның көбейткішнің өлшемінен бірнеші рет көп болғандықтан оны болжау үшін жасалған. Көбейткіштердің өлшемін және екінші операнд пен нәтижені орналастыратын регистрлер:
Байт * |
AL |
= AX |
Сөз * |
AX |
= DX:AX |
Екілік сөз * |
EAX |
= EDX:EAX |
Таңбасыз бүтін сандарды көбейту командасы:
Imul операнд
Бұл команда MUL командасына ұқсас. IMUL командасының ерекшелігі, ол таңбаны қалыптастырады. Егер нәтиже кішкентай болса және бір регистрге орналасса (яғни CF = OF = 0 болса), онда екінші регистрге (үлкен бөлікке) таңба жазылады— бұл регистрдің барлық биттері кіші бөліктің үлкен битінің (таңба разряды) мәнімен толтырылады. Басқа жағдайда (егер CF = OF = 1) нәтиже таңбасы ретінде үлкен бөліктің таңба биті алынады. i486 және одан жоғарғы микропроцессорларында IMUL командасы операндтарға орын берудің кең тараған түрлерін қолданады. Бұл қолдануға ыңғайлы болу үшін жасалған.
Деление чисел
Таңбасыз сандарды бөлу командасы:
DIV бөлінгіш
Бөлінгіш жады ұяшығында немесе жалпы міндетті регистрдің бірінде орналаса, оның өлшемі 8, 16 немесе 32 бит болады. Бөлгіштің орны көбейту командасындағыдай жасырын, ол да операнд өлшеміне байланысты болады. Бөлу командасының нәтижесі болып бөлінді мен қалдық мәндері табылады. Бөлу орындалған кездегі нәтиже мен операндтардың орналасуы:
Бөлінгіш |
Бөлгіш |
Бөлінді |
Қалдық |
AX |
Байт (регистр немесе жады ұяшығы) |
AL |
AH |
DX: AX |
Сөз (регистр немесе жады ұяшығы) |
AX |
DX |
EDX: EAX |
Екілік сөз (регистр немесе жады ұяшығы) |
EAX |
EDX |
Бөлу командасы орындалғаннан кейін белгілер өзгермейді, бірақ 0 нөмірлі «0-ге бөлу» үзуі, кездесуі мүмкін. DIV командасында 0-ге бөлу үзуі келесі жағдайларда болуы мүмкін:
Бөлінгіш 0 тең;
Бөлінді оған бөлінген разрядтық торға сыймайды.
Мысалы. Сандарды бөлу
del _b label byte
del dw 29876
delt db 45
...
xor ax, ax
;келесі екі команданы mov ax, del бір командасымен ауыстыруға болады.
mov ah, del_b ; ah бөлінгіштің үлкен байты
mov al, del_b+1 ; al бөлінгіштің кіші байты
div delt ; al — бөлінді, ah — қалдық
...
таңбалы сандарды бөлу командасы:
IDIV бөлінгіш
Бұл команда үшін жоғарыда барлық таңбалы сандарға және командаларға байланысты айтылған тәртіптер орындалады. Мұнда тек IDIV командасын қолданғанда кездесетін 0-ге бөлу қай кезде пайда болатындығын қарастырып кетейік:
- Бөлінгіш 0 тең;
- Бөлінді оған бөлінген разрядтық торға сыймайды.
