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


Практикалық дағдыларды қалыптастыруға арналған программа



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

Практикалық дағдыларды қалыптастыруға арналған программа
Барлық ASCII-символдарын экранға шығаратын программа (16 жол, әр жолда 16 символдан баспаға беру).

org 100h

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

1

2

begin:

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

mov cx,256

; санағыш мәнін береміз (256 символ)

mov dl,0

; бірінші символ – 00 кодымен

mov ah,2

; «символды шығару» функциясы

cloop: int 21h

; шақыру

inc dl

; DL регистрінің мәнін 1-ге арттыру – келесі символ

test dl,0Fh

; егер DL регистрі 16-ға еселі болмаса

jnz continue_loop;

; циклді жалғастыру

push dx

; басқа жағдайда: символды сақтау

mov dl,0Dh

; CR баспаға беру

int 21h

; DOS шақыру

mov dl,0Ah

; LF баспаға беру

152

1

2

int 21h

; DOS шақыру

pop dx

; ағымдағы символ қалыпқа келтіру

continue_loop:

; белгі

loop cloop

; циклді жалғастыру

ret

; СОМ-файлды аяқтау

end begin

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

82-сурет. Программаның орындалу нәтижесі
Тапсырмалар:
  • Зертханалық жұмыста келтірілген барлық мысалдарды орындаңыз.
  • Практика үшін берілген мысалдың құрылымын талдаңыз.
  • Ассемблер тіліндегі циклдік ауысуларды ұйымдастырудың шарттарын үйреніңіз.
  • Экранға «!!!!!!!!!! Hello!!!!!!!!!!» сөзін баспаға беретін программа ко-

  • дын жазыңыз (3 әдіс бойынша).



Шығарылатын мәліметтер

Есептеу формуласы

А

B

С

Циклдік ауысу

D=A+B+C

101

345

121

Hello world

D=A-B+C

578

152

149

Good Bye

D=A+B-C

333

223

16

Группа

D=A-B+C

1502

834

1

Зертханалық жұмыс

D=A-B-C

1056

33

125

153
Бақылау сұрақтары:
  • Loop командасы арқылы циклді ұйымдастыру?
  • Cx регистрінің маңызы?
  • Cx регистрінің командаларды максималды қайталау саны?
  • Jmp командасы арқылы циклді ұйымдастыру ерекшелігі?
  • Jmp командаларының түрлері?
  • dec және jnz командалары арқылы циклдерді ұйымдастыру ерекшелігі?

  • Тапсырмалар нұсқалары:
    (K  1) * 4, N  2



2 * N  1,
1. M  N - 3 * K  I/2, 2  N  4
N  4
I  3

(I * I * I)/(I * I  2), 1  I  3
2. M  I * I  4 * I - 7, I  1
4 * I - 7,


I * 4  J,

I  4 * J,
I  J
3. M  2 * I - (J  J/2), I  J
I  J
N  7
N  20
K * 4,
4. M   - K)/2,
(N

N  1,
7  N  20

5. M  I * 2  J * J/4, I  1
2 * N  1, - 2  I  1

I * K  K/2, I  2
(J  I) * 3,
I  2

6. M  2 * I * I  K, I  0

3* I/5 - 2, I* I  16
5* I* I -1, 5  I* I  16
3 * I * I * I - K, 0  I  2

2 * I* I  I, I* I  5
7. M  
3.9. Сандарды баспаға шығарудың әдістері мен тәсілдері
Жұмыстың мақсаты: сандарды екілік, он алтылық және ондық кодта шығару әдістерін игеру.
1. DH регистріне жазылған екілік кодтағы санды шығару.
Орындалу әдістемесі
Сандағы биттерді тізбектей отырып талдау керек. Бұл жұ- мыста тек DH ‘0’-ді (егер шығарып тасталса) шығару, егер орна- тылған болса, онда ‘1’ болады.
Есептерді шешу алгоритмі:
  • бір биттің мәнін талдау;
  • биттің мәнін баспаға беру;
  • келесі битке көшу. Сонымен, 8 рет (БАЙТ) – ЦИКЛ.

  • Битті талдау: мәндерді талдау барысында программистер, әдетте TEST командасын пайдаланады, бірақ қазіргі зертхана- лық жұмыста SHL командасын пайдаланамыз.
    154


8. M  J * (I  1), I  J
J  I * I/J, I  J

- 2 * J * J  2, J  2
7 * J  8, 2  J  5
2 * J - I, I  J

2 * J * J  3, J  5
9. M  

2 * I * I * J, I  1
10. M  4 * I - 6, 1  I  7

3 * I - J  3, (J  I)  5
3 * I  J/2, I  7


J  2,
11. M  I * J,

7 * K  J,
5 * J  K, J  K
J  K
2  (J  I)  5 (J  I)  2
J  K
K,
12. M  
155
SHL командасы операндтың барлық биттерін сол жаққа ығыстыру орындалады. Операндтың үлкен биті CF флагына тү- седі. Команда келесі форматта жазылады:
SHL операнд, 1
1 битке ығыстырылады. Операндтың кіші битіне 0 жүктеле- ді. Онда команда келесі форматта:
SHL операнд,CL
жазыла алады.
CL регистр санағышта көрсетілген биттердің санына ығыс- тыру орындалады, CF флагынан өткенде операндтың үлкен бит- тері ығыстыру нәтижесінде жоғалады, ал кішілері нөлмен то- лықтырылады. SHL командасының операнды ретінде кез келген регистр (сегменттіктен басқа) немесе байт және сөз өлшемді жа- ды ұяшығы пайдаланылады. Операнд ретінде тікелей мәнін қоюға болмайды. Әрбір солға қарай ығыстыру таңбалы санды 2-ге көбейткенге тең, сондықтан SHL командасын 2 дәрежесіне шығару үшін пайдаланған ыңғайлы. Команда келесі флагтарға: OF, SF, ZF, PF және CF әсер етеді. Егер CF флагы нөл болса, белгіге көшу, ал басқа жағдайда осы командадан кейін келе жат- қан команда орындалады.
Мысал:

org 100h

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

1

2

begin:

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

mov DH,<55>

; dh регистріне кез келген ASCII-кодының символын енгіземіз

mov AH,2

; АН регистріне «(2) жолды шығар» функциясының нө- мірін орналастырамыз

mov CX,8

; цикл айнымалысын инициализациялау

@1: mov DL,'0'

; DL регистріне '0' символының кодын жазамыз

shl DH, 1

; 1 битке жылжу

jnc @2

; егер '0' болса, көшу

inc DL

; '1' символының коды '0' символының кодынан бірге артық деген фактіні пайдаланамыз



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




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

    Басты бет