3.8. Циклдердің жұмысымен танысу
Жұмыстың мақсаты: программадағы циклдердің құрылы- мымен және іске асырылуымен таныстыру.
Қысқаша теориялық мәліметтер
Кез келген программалау тілінде программаның қандай да бір бөлігін көп рет орындауға мүмкіндік беретін циклдер – ең ыңғайлы құрылымдардың бірі. 86 МП командалар жүйесінде циклдер loop (тұзақ) командасының көмегімен іске асырылады. Көп жағдайларда циклдегі қадамдар саны СХ регистріндегі мә- ліметтермен анықталады, сондықтан максималды қадамдар са- ны 64 К анықталады. Циклдерді пайдалану орындалатын прог- рамманың кодын азайтады. Ассемблерде жалпы жағдайда кез келген цикл шартты көшу ретінде жазылады.
LOOР командасы арқылы циклдерді ұйымдастыру (Бі- рінші әдіс)
Loop командасы (ағыл. тұзақ) СХ (санағыш) регистріндегі
мән үшін декрементті орындай отырып, көрсетілген белгіге алға немесе кейін сол программалық сегментте - 128... + 127 байт аралығында көшеді. Әдетте белгі цикл денесінің бірінші сөйле- мінің алдына орналасады, ал loop командасы циклдің соңғы ко- мандасы болып есептеледі. СХ регистрінің мәні – таңбасыз бү- тін сан, сондықтан циклге енгізілген топтардың қайталануының
147
80-сурет. Программаның орындалу нәтижесі
148
максималды саны – 65536 (егер көшу алдындағы мәні СХ=0). Команда процессордың флагына әсер етпейді.
Команда
|
Атқаратын қызметі
|
Процессор
|
LOOP белгі
|
Циклді ұйымдастыру
|
8086
|
Ассемблер тіліндегі циклдік көшулерді ұйымдастырудың қарапайым мысалы:
org 100h
|
; СОМ – файлдың басы
|
begin:
|
; программа кодының басталу белгісі
|
mov cx,10
|
; CX регистріне (санағыш) қайталану санын енгіземіз (са- нау 10-нан бастап 0-ге дейін)
|
Label1:
|
; белгіні құрамыз (Label – белгі)
|
mov ah,9
|
; АН регистріне 9 жолды жылжытамыз
|
mov dx,offset String
|
Мәліметтер сегментінің басталуынан салыстырмалы String белгісінің ығыстырылуын DX регистріне орналасты- рады
|
int 21h
|
; «жолды шығару» функциясы
|
loop Label1
|
; loop операторы CX бірге азайтады, егер ол нөлге тең бол- маса, Label1 жолына көшеді
|
ret
|
; «программаны аяқтау» функциясы
|
string db 'SALEM
$сызба
|
; баспаға берілетін мәліметтердің жолы
|
end begin
|
; программа кодының аяқталу белгісі
|
149
Достарыңызбен бөлісу: |