Assembler proqramlaşdırma dili

Turbo Debugger sazlayıcı proqramı və onunla işin təşkili

Turbo Debugger sazlayıcı proqramı və onunla işin təşkili

Proqramda sintaksis səhvlərin aradan qaldırılması hələ heçdə onun düzgün işləməsinin qarantı deyil. Bunun üçün də proqramın işlənməsi prosesinin əsas mərhələsi onun sazlanmasıdır.

Assemblerin bu dildə yazılmış proqramın sazlanması üçün sazlayıcı vasitəsi olmadığından aftonom sazla­yıcılardan istifadə olunur. Hal-hazırda çoxlu sayda sazla­yıcı proqramlar işlənib hazırlanmışdır. Ümumi halda av­tonom sazlayıcıların köməyi ilə (ilkin modulun hansı dildə tərtib olunmasından asılı olmayaraq) yaradılmış icra modu­lunu araşdırmaq olar. Turbo Debugger (TD) sazlayıcısının işinin əsas momentlərini nəzərdən keçirək

Turbo Debugger, Borland International firması tərəfin­dən işlənilmiş sazlayıcı proqram olub, Pascal, C, Assembler dilində yazılmış proqramların pəncərə mühitində sazlaması prosesini yerinə yetirir. O, məntiqi səhvlərin yerini və səbə­bini aşkar etməyə imkan verir.

Turbo Debuggerin əsas fuksiyasına aşağıdakılar daxil­dir;

1. Mətndə məntiqi səhvlərin yerini təyin etmək;

2. Məntiqi səhvlərin səbəblərini təyin etmək.

TD aşağıda göstərilən bir neçə əsas imkanlara malikdir:

1) Proqramı düz istiqamətdə icra (tarsirovka) edir. Yəni, proqramı ardıcıl olaraq addım-addım icra edir. Bu zaman hər addımda bir maşın əmri icra olunur;

2) Əks istiqamətdə proqramı addım-addım icra edir;

3) Proqramın addım-addım icrasında MP-nin aparat vasitələrinin vəziyyətinin dəyişilməsini müəyyənləşdirir.

TD ilkin modulda səhvlərin düzəldilməsi imkanına malik deyil. Ancaq o, proqramda səhvlərin mənbəyini və yerini təyin edir. Səhv vəziyyətlərin səbəbləri təyin olunduqdan sonra sazlayıcı proqramın işini bitirmədən, birbaşa səhvləri maşın kodunda aradan qaldırmağa imkan verir və proqramı icra olunmaq üçün işə salır. Sazlayıcı işini başa çatdırdıqdan sonra bu dəyişikliklər saxlanılmır. Bu səbəbdən də onları təkrar ilkin modulda qeyd edərək onun təkrar yükləmə modulunu yaratmaq lazımdır.

Yükləmə modulunun alınması prosesinin düzgün təşkilində aşağıdakı əsas anlarını nəzərə almaq lazımdır:

1) İlkin proqramda proqramın icraya başladığı birinci əmrin nişanı mütləq təyin olunmalıdır. Belə nişan kimi xüsusi nişan və ya prosedurun adı ola bilər. Bu nişanın adı proqramın sonundakı END direktivində də operand kimi göstərilməlidir:

END nişanın_adı

Məsələn: nişan kimi main prosedurasının adını götürmək olar;

1) İlkin modulu /zi parametrini göstərməklə translyasiya etmək:

TASM /zi ilkin _modulun _adı , , ,

2) Yükləyici modulun alınması zamanı /v opsiyasın­dan istifadə etmək:

TLINK /v obyekt_ modulunun_adı

Bu əməliyyat sazlama informasiyasının icra faylında saxlanmasının lazım olduğunu göstərir;

3) Sazlayıcını işə saldıqda əmrlər sətrini

TD icra_ modulunun_ adı

kimi yazmaq daha əlverişlidir.

TD.EXE sazlayıcı faylının özünü, məntiqi olaraq, ilkin faylın və TASM.EXE, TLİNK.EXE, RTM.EXE fayl­larının yerləşdirildiyi kataloqda yerləşdirmək məqsədə uyğundur.

Bizim proqram üçünTD.EXE proqramını işə saldıqda əmr sətrini

TD TEST1 ↵

kimi göstərmək olar.

Yuxarıdakı göstərişləri düzgün yerinə yetirdikdən sonra ekranda TD sazlayıcısının Module adlanan pəncərəsi açılacaqdır. Bu pəncərədə, sazlanacaq proqram mətninə uyğun TEST1.ASM ilkin proqram mətinini görmək olar (bu TASM və TLINK proqramlarının icrası zamanı uyğun olaraq /zi və /v opsiyalarını istifadə etməklə alınır). Onların tətbiqi Assembler kodunda istifadə olunan simvolik adlar haqqındakı informasiyanın saxlanmasına imkan yaradır.


Module pəncərəsində icra kursoru adlanan üçbucaq (►) şə­kilində kursor olur və o, birinci icra olunacaq əmri

gös­tərir. Odur ki, proqramın birinci icra olunan əmrin nişanı (və ya prosedur adı) olmalıdır. Bu proqrama giriş nöqtəsi adlanır. Həmin nişan proqramın sonunda End opera­torunda operand kimi göstərilməlidir. Mürəkkəb proqramlarda əsasən başlanğıcda prosedur və ya makroəmr yazılır. Belə halda da birinci icra olunan əmrin nişanını mütləq göstərmək lazımdır.

Sazlayıcının ekranında bir və ya bir neçə pəncərə olur. İstənilən anda bunlardan yalnız biri aktiv ola bilər. İxtiyari pəncərəni aktivləşdirmək üçün, tələb olunan pəncərənin istənilən nöqtəsində mausun düyməsini sıxmaq lazımdır. Sazlayıcının işi sistem menyusunun köməyi ilə idarə olunur.

İki tip belə menyu var:

1) Qlobal menyu – ekranın yuxarı hissəsində yerləşir və ona həmişə müraciət etmək olar. Bunun üçün F10 düyməsini sıxmaq sonra isə bu menyunun lazımı altmenyusunu seçmək olar.

2) Lokal menyu – sazlyıcının hər bir pəncərənin, onun xüsusiyyətini nəzərə alan, özünün xüsusi menyusu olur. Həmin menyunu çağırmaq üçün, pəncərədə mausun sağ düyməsini (yaxud pəncərəni aktivləşdirib, Alt+F10) sıxmaq lazımdır.

Bu əməliyyatları yerinə yetirdikdən sonra, bizim proqramın düzgünlüyünü yoxlamaq olar.

Aydındır ki, Assembler proqramının düzgünlüyü mikroprosessor səviyyəsində yoxlanılır. Bu halda proqramçını proqramın mikroprosessor tərəfindən necə istifadə etməsi və mikroprosessorun resurslarının vəziyyətinin necə dəyişilməsi maraqlandırır.

Sazlayıcıda proqramı aşağıdakı dörd movcud rejimləridən birindən istifadə etməklə icra edə bilərik:

Şərtsiz icra rejimi (F9 düyməsini sıxmaqla aktivləşdirmək olar);

Addım-addım icra rejimi (F7 və ya F8 düyməsini sıxmaqla aktivləşdirmək olar);

- Kursorun cari vəziyyətinə qədər icra rejimi (F4 düyməsini sıxmaqla aktivləşdirmək olar );

Kəsilmə nöqtəsini təyin etməklə icra rejimi (və ya nəzarət nöqtələrinə görə icra rejimi) F2 (dayandırmaq üçün Ctrl+F2);

Bu rejimləri ətraflı nəzərdən keçirək.

- Şərtsiz icra rejimindən proqramın tam işləməsinə (xırda detalları nəzərə almadan) baxmaq tələbi yarandıqda istifadə olunur. Bu rejimdə proqramı işə buraxmaq üçün F9 düyməsini sıxmaq lazımdır. Alınan nəticəyə baxmaq üçün istifadəçi pənçərəsində (Window> User Screen) və ya klaviaturadan Alt+F5 düyməsini sıxmaqla açmaq olar. Hər hansı problem yarandıqda və ya proqramın işini tam araşdırmaq tələbi yarandıqda, sazlayıcının aşağıdakı üç rejimindən istifadə olunur.

Addım-adım icra rejimində proqramın işini addım-addım izləmək mümkündür. Bu rejimdə, proqramın əmrlərini ardıcıl olaraq bir-bir icra etmək və hər bir icra olunan əmrin nəticəsini müşahidə etmək mümkündür. Bu rejimi aktivləşdirmək üçün F7 (Run>Trace into) və ya F8 (Run>Step over) düymələrini sıxmaq lazımdır. Hər iki düymə addım-addım icra rejimini aktivləşdirir. F7 düyməsini sıxdıqda sazlayıcı bütün əmrləri bir-bir icra edir (prosedur və ya kəsilmələrin əmrlərini də daxil olmaqla). F8 – də prosedur və ya kəsilmələrə bir əmr kimi baxılaraq icra olunur və sonra idarə proqramın növbəti əmrinə ötürülür. Qeyd edək ki, bu rejimdə işlədikdə Module pəncərəsindən başqa, daha bir səmərəli CPU (MP-nin vəziyyəti) pəncərəsindən istifadə etmək daha əlverişlidir. CPU pəncərəsini əsas menyudan View>CPU əmri ilə açmaq olar.

Bu pəncərə mikroprosessorun vəziyyətinin təsvirini verir və 5 tabelli altpəncərədən ibarətdir(aşağıdakı şəkilə bax);

1) Bu pəncərədə ilkin proqram mətni maşın əmrləri (dizassembləşdirilmiş formada) şəklində verilir. Bu proqramın Module pəncərəsindəki maşın formatıdır. Addım-addım sazlanmanı birbaşa bu pəncərədə aparmaq olar və burada cari əmr sətri işıqlandırılır;

2) Registers pəncərəsi – mikroprosessorun registrlər pəncərəsi olub, burada cari registrlərin məzmunun təsviri göstərilir. (Susmaya görə yalnız i 8086 registrlərinin məz­munu göstərilir). i486 və ya Pentium registrlərinin məzmu­nuna baxmaq üçün onların təsvir rejimini vermək lazımdır. Bu məqsədlə Mausun sağ düyməsini registrlər alt pən­cə­rəsi sahəsində sıxıb, lokal menyunu çağırıb, me­nyudakı Registers 32-bit göstərişindən <yes> əmrini vermək lazım­dır;

3) Bayraqlar pəncərəsi. Bu pəncərədə, mikroproses­so­run bayraqlarının mnemonik adları və bayraqların cari və­ziyyətinin təsviri verilir;

4) Stack (stek) pəncərəsi. Bu pəncərədə Stek üçün ayrılmış yaddaşın məzmununun təsviri göstərilir. Stek sahəsinin ünvanı SS və SP registrlərinin məzmununa əsəsən təyin olunur.


Əməli yaddaşın Dump (yaddaşda verilənlələrin yerləşməsi) pəncərəsi. Pəncərənin sol tərəfində göstərilən komponentlərin köməyi ilə təyin olunan ünvana görə yaddaş sahəsinin məzmununu göstərir. Pəncərədə yaddaşın ixtiyarı sahəsinin məzmununu

görmək olar. Bunun üçün Mausun sağ düyməsini sıxmaqla açılan lokal menyudan lazımı əmri seçmək lazımdır (GO TO DS: 0000 ↵).

Bu altpəncərələrdən bəzilərini ayrıca pəncərə kimi ekrana çıxarmaq olar. Demək olar ki, ilkin mətnlə Module pəncərəsində işləmək CPU pəncərəsində dizassemb­lerləşdirilmiş formada işləməkdən daha məqsədə uyğundur. Qeyd edək ki, bu pəncərələrin köməyilə aşağıdakı əməliy­yatları yerinə yetirmək mümkündür:

Kursorun cari vəziyyətinə qədər icra rejimində, proq­ramın istənilən yerindən proqramı addım-addım icra et­mək olar. Bu rejimdən proqramın hər hansı hissəsinin fəa­liyyətinin düzgünlüyünü yoxlamaq lazım gəldikdə isti­fadə olunur. Bu rejimi aktivləşdirmək üçün proqramın tələb olunan sətrində kursoru qeyd edib, F4 düyməsini sıxmaq lazımdır. Onda proqram həmin nöqtəyə qədər işləyərək dayanacaq. Sonra isə lazım gələrsə addım-addım sazlama rejiminə keçmək olar.

-Kəsilmə nöqtəsini əvvəlcədən təyin etməklə icra rejimində – proqramı dəqiq təyin olunmuş kəsilmə nöqtələrində icrasını dayandırmaq mümkündür. Proqramın icrasından əvvəl bu nöqtələri proqramda təyin etmək lazımdır. Bunun üçün tələb olunan sətrə keçib, F2 düyməsini sıxmaq lazımdır. Bu zaman seçilmiş sətr başqa rənglə işıqlanır. Əvvəlcədən təyin olunmuş kəsilmə nöqtələrini ləğv etmək olar. Ona görə lazım olmayan sətri seçib, F2 düyməsini təkrar sıxmaq lazımdır. Kəsilmə nöqtəsi qeyd olunduqda sonra proqramı icra etmək üçün F9 düyməsini sıxmaq lazımdır. Proqramın icrası birinci kəsilmə nöqtəsində dayanacaqdır. Bu vaxt mikroprosessorun və yaddaşın cari vəziyyətinə baxmaq və proqramı addım-addım sazlama rejimində və ya yeni kəsilmə nöqtəsinə qədər icrasını yenidən davam etdirmək olar. İstənilən rejimlərdə CTRL+F2 düyməsini sıxmaqla proqramın icrasını dayandırmaq (kəsmək) olar.