100h адресінен бастап бір-бірінің артынан“INT 21h ““INT 20h” (CDh21hCDh20h). Екі инструкцияны ендіреміз, біз енді барлық уақытта 100 h адресінен программаны бастаймыз.
Бізде бір инструкция болған кезде “R” командасы арқылы оны “промистать” етенек, бірақ бізде енді екі инструкция. Оны көру үшін “И” командасы бар. (ағылшынша айтқанда “unassemble”). Бейск командасыында “list” жұмыс істейді.
-u100
3970:0100CD21 INT 21
3970:0102CD20INT 20
3970:0104D98 D460250B8ESC 09,[DI+0246][DI+B850]
3970:010A8DOOJEA AX,[BX+SI]
3970:010C50PunsAX
3970:010DE82A23CADD243A
3970:0110 8BE5MOVSP, BP
3970:0112 8EC41A ADD243A
3970:0115 5DPOP BP
3970:0116 C3 RET
3970:0117 55 Pusn BP
3970:0118 83ECO2 SuB SP, + 02
3970:011B 8BECMOV BP, SP
3970:011D823EOEO000 emd Byte ptr (000Е), 00
Тізімдегі ендірілген бірінші екі инструкция, ол инструкциялар бір қазір ендірген. Қалған инструкциялар жадта алдыңғы программадан қалған. Біздің программа өскен сайын экранға шыққан кодтарда көбейеді.
АН регистріне 02h мәнін қоямыз, ал DD регистріне барлық басқа символдың кодын (алдыңғы АХ және ДХ регистрін өзгерткендей), одан соң “G” командасын енгіземіз, экранда символды үлкейту үшін
Мысалы: егер сіз DJ ге 41h санды ендірсеңіз, онда көреміз:
-G-
A
Prodgam terminated normally
-Экранға бірнеше символды шығарып көрейік регистрлердің жаңа жолын үйренуіне өткенше
Программаларды ендіру.
Осы жерден бастап, программалардың үлкен бөлігі ұзындығына ең болмағанда бір инструкция болады және ол программаларды көру үшін, біз разсемблирование (“И”) инструкциясын қолданамыз, сондықтан біздің срңғы программамыз мына түрде шығады:
3970:0100 CD21INT21
3970:0102 CD20 INT 20
Осыған дейін біз программалар инструкциясын сан түрінде ендірдік.
Мысалы: CDh, 21h. Бірақ бұл өте қиын жұмыс, болғандай, инструкцияны енгізудің оңай жолы барекен. Debud программасында разассемблирование командасына адам оқитын ькоманда бар инструкцияларды.
Сонымен программаның түсініксіз санын ендіру үшін, біз ассемблирование командасын орындасақ болады, келесі енгізуде:
-А100
3970:0100 INT21
3970:0102 INT 20
3970:0104
Инструкцияны енгізіп болған соң “Enter” клавишін басамыз, және Debug ке шақыру шығады.
“А” командасы Debug ке мәлімдейді. Біз инструкцияны мнемоникалық формада енгізгіміз келгенің, ал 100 санды командада білдіреді енгізу инструкциясы 100h ұяшықтан басталады. Ассемблирование командасы программаға көп жеңілдік туғызады.
Бұрын біз тек Debug пен жұмыс істейтін едік, біз барлық уақытта Debug арқылы программаны енгізбейміз. Программаның өзі AH және DL регистрлерін установка етеді “INT 21h” инструкциясынан алдын. Оның істеуін білу үшін, біз тағы бір MOV инструкцияны үйренейік MOV инструкциясын қолданып программалар құрамыз DOS тан келетін. Келешекте біз MOV инструкциясын қолданамыз сандарды AH және DL регистріне енгізу үшін. MOV ті сандарды регистрлер арасына жіберуін үйренеміз. 1234h ті АХ ке жазайық (12h ті АН регистріне және 34h ті AL регистріне) және ABCDh ті DX ке. (АВh ті DH-қа және СDh ті DL-ге). “А” командасы арқылы инструкцияны енгіземіз:
396F: 010088D4MOVAH,DL
Бұл инструкция санды DL ден АН жібереді, АН-қа көшіріп, AL бұл жерде қолданбайды. Егер сіз осы қатарды трассировка жасасаңыз, сонда көресіз AX=CD 34h және DX=ABCDh. Тек АН ауысты. Енді 0 да тек DL дің копиясы бар.
“LET AH = DL” бейсиктегі оператор сияқты MOV инструкциясы санды екінші регистірден бірінші регистрге жібереді, сондықтан біз АН жазамыз DL алдында. MOV инструкциясының формасын қолданайық санды көшіру үшін екі регистр арасына.
Мысалы: IP ді переустановка жасап келесіні енгіземіз:
396F: 010089C3MOV BX,AX
Барлық бөлімді қосып үзін программа құрайық. Ол жұлдызшаны “*” енгізеді, барлық операцияны өзі орындап, бізден регистрлердың (АН және DL) установкасын сұрамай. Программа MOV инструкциясын қолданады AH және DL регистрін установить ету үшін, INT 21h DOS тан шақырудан алдын:
396F: 0100B 402 MOVAH,D2
396F: 0102B22A MOVDL,2A
396F: 0104CD21 INT21
396F: 0106CD20 INT20
Программаны ендіріңіз және оны “U” (“U100”) командасымен тексеріңіз. Көріңіз IP 100h ұяшыққа көрсетіп тұрғанның, одан кейін “G” командасымен жіберіп көрініз. Нәтижеде экранда “*” символы шығу керек.
-G
Program terminated normally
—