М. З. Якубова техника ғылымдарының кандидаты, доцент


-сурет. Программаның орындалу нәтижесі Оналтылық санау жүйесінде байттың мәнін шығару Есептеу әдісінің алгоритмі



бет80/141
Дата26.09.2023
өлшемі3.68 Mb.
#478578
1   ...   76   77   78   79   80   81   82   83   ...   141
КОМПЬЮТЕРЛІК ЖҮЙЕЛЕР АРХИТЕКТУРАСЫ

83-сурет. Программаның орындалу нәтижесі
Оналтылық санау жүйесінде байттың мәнін шығару Есептеу әдісінің алгоритмі:
DH регистрінде баспаға беретін байт орналассын және
«0123456789ABCDEF» символдар кестесі берілсін. Байт екі оналтылық цифрдан тұрады. Осыны ескере отырып, есепті ке- лесідей етіп шешеміз: осы кестеден баспаға екі символды шыға- рамыз. Алдымен, санның үлкен жарты байтына тең болатын символды, ал одан кейін кіші жарты байтқа тең символды шыға- рамыз. Есепті шешу барысында екі мәселені қарастырамыз:
  • AL регистріне қажетті нөмірлі символды жазамыз. Ығыс-

  • тыруы бар жанама регистрлік адресациялау режимін қол- данамыз;
  • әр жарты байттың мәнін BX регистріне жазамыз.

  • 156

1

2

@2: int 21h

; символды шақыру, үзуді орындау

LOOP @1

; @1 белгісіне көшу

int 21h

; үзуді орындау – символды шақыру

end begin

; программа кодының аяқталу белгісі

Ескерту: берілген талдау әдісінде санның бастапқы мәні тү- сіп қалады. Басқа жағдайда, ROL командасын пайдалануға бо- лады, бірақ байт үшін 8 рет.
Байттың мәнін ондық санау жүйесінде баспаға беру
Орындалу әдістемесі
Баспаға беретін байттың мәнін DH регистріне жазамыз. Бі- рақ қазір цифр символын экранға шығарудың басқа әдісін қа-
157
Есепті шешудің қарапайым әдісі
Мысал:

org 100h

; СОМ – файлдың басталуы

begin:

; программа кодының басталу белгісі

mov dh, 10

; dh регистріне 10 санын жазамыз

mov bl, dh

; bl регистріне 10 жазамыз

xor bh, bh

; вх нөлге теңестіреміз

and bl, 0F0h

; dh-ті 0f0h-ға логикалық (биттік) көбейту орындаймыз

shr bl, 4

; 4 битке оң жаққа қарай ығыстырамыз

mov al, table [bx]

; al регистріне мәліметтер жолын енгіземіз

int 29h

; үзуді шақыру, символды шақыру

mov bl, dh

; bl регистріне dh регистрінің мәнін жаза- мыз

and bl, 0Fh

; dh регистрін 0fh логикалық (биттік) кө- бейту орындаймыз

mov al, table [bx]

; al регистріне мәліметтер жолының мәнін енгіземіз

int 29h

; үзуді шақырамыз, символды шақыру

mov al, 13

; al регистріне 13 санын жазамыз

int 29h

; үзуді шақырамыз, символды шақыру

mov al, 10

; al регистріне 10 санын жазамыз

int 29h

; үзуді шақырамыз, символды шақыру

ret

; «программаны аяқтау» функциясы

table db '0123456789ABCDEF'

; баспаға беретін мәліметтерден тұратын жол

end begin

; программа кодының аяқталу белгісі

растырамыз. Бұл жердегі мәселе: бір немесе үш цифрды бейне- леу керек пе? Байт 0-ден 255-ке дейінгі мәндерді қабылдайды. Позициялық санау жүйесін қолдана отырып, сандарды белгілі бір санау жүйесінде жазу үшін санды негізіне бөлудің нәтижесін есептеп, қалдықтарын кері ретпен жазып отырады.
Мысалы:
Сан = 251.
10-ға бөлеміз. Бүтін бөлігі 25, "1" қалдық.
Тағы да 10-ға бөлеміз. Бүтін бөлігі 2, "5" қалдық. Тағы да 10-ға бөлеміз. Бүтін 0, "2" қалдық.
Экранға: "2", "5", "1" сандарын шығарамыз.
Есепті программаның стегін пайдалана отырып шығарамыз. Қалдықтарды PUSH операторын пайдалана отырып, стекке ор- наластырамыз. Мұнымен қатар стекке орналастырылған қал- дықтардың санын да есептеп отырамыз. CX регистрі санағыш. Кейін оны циклді ұйымдастыру үшін пайдаланамыз, ол жерде қалдықтарды стектен POP операторы арқылы шақырамыз. Стек- тің жұмысына тоқталатын болсақ, POP операторы PUSH опера- торымен енгізілген соңғы сөзді шығарады. Ескеретіні, PUSH операторы стекке сөзді (WORD) немесе қос сөзді (DWORD) ор- наластырады. POP операторы да осыған ұқсас жұмыс істейді.


Достарыңызбен бөлісу:
1   ...   76   77   78   79   80   81   82   83   ...   141




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет