Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы по СП (1-20) / 17 / ASM_17
.TXT**********************************************************************
‘€‘’…ЊЌЋ… ЏђЋѓђЂЊЊ€ђЋ‚ЂЌ€…
**********************************************************************
*******************
*** ’Ґ¬ 17 ***
*******************
**********************************************************************
‚‘’ђЋ…ЌЌ›‰ Ђ‘‘…ЊЃ‹…ђЌ›‰ ЉЋ„ ў џ‡›Љ… PASCAL
**********************************************************************
–Ґ«м а Ў®вл:
€§гзЁвм ¬Ґе Ё§¬л ЇЁб Ёп Є®¤ п§лЄҐ бᥬЎ«Ґа
ўгваЁ Є®¤ п§лЄҐ Џ бЄ «м.
1. ‡ ¤ ЁҐ ЇаҐ¤ў аЁвҐ«мго Ї®¤Ј®в®ўЄг
Ћ§ Є®¬Ёвмбп б ᮤҐа¦ ЁҐ¬ агЄ®ў®¤бвў
€§гзЁвм ЇаЁўҐ¤Ґл© ⥮аҐвЁзҐбЄЁ© ¬ вҐаЁ «
‚лЇ®«Ёвм Їа ЄвЁзҐбЄго з бвм а Ў®вл
‘®бв ўЁвм ®взҐв ® а Ў®вҐ
ЏаҐ¤кпўЁвм १г«мв вл а Ў®вл ЇаҐЇ®¤ ў ⥫о
2. Ља вЄЁҐ ⥮аҐвЁзҐбЄЁҐ ᢥ¤ҐЁп
2.1. ЂбᥬЎ«ҐалҐ ўбв ўЄЁ ў Їа®Ја ¬¬г Џ бЄ «Ґ
Њ®¦® ўбв ўЁвм бᥬЎ«Ґал© Є®¤ ў «оЎ®¬ ¬Ґб⥠Їа®Ја ¬¬л. Ќ з «® бᥬЎ«Ґа®Ј®
Є®¤ ®в¬Ґз Ґв ASM, § Є зЁў Ґв END. Њ®¦® ЇЁб вм ҐбЄ®«мЄ® Є®¬ ¤ ®¤®©
бва®ЄҐ, а §¤Ґ«пп Ёе в®зЄ®© б § Їпв®©, Ё«Ё ®в¤Ґ«мле бва®Є е. ‹®Є «млҐ
¬ҐвЄЁ ¤®«¦л зЁ вмбп б @, ЇаЁзҐ¬ ®Ўкпў«пвм Ёе § а ҐҐ Ґ 㦮. „®бвгЇ Є
ЇҐаҐ¬Ґл¬ Џ бЄ «п ўлЇ®«пвм Ї® Ёе Ё¬Ґ ¬ Ё«Ё ¤аҐб ¬ (㦮 б®Ў«о¤ вм а §¬Ґа).
ЏаЁ¬Ґа бᥬЎ«Ґа®© ўбв ўЄЁ:
program AsmPas1;
var
i: Integer;
s: String;
BEGIN
i:=2;
Write('i befire : ',i);
asm
mov bx,i
mov al,34
mul bl
mov i,ax
end;
WriteLn(', and after: ',i);
asm
lea di,s
mov ax,SEG @data
mov es,ax
mov cx,16
mov al,cl
cld
stosb
mov al,31h
@1: stosb; inc al; LOOP @1
end;
WriteLn('S: ',S)
END.
ѓагЇЇг Є®¬ ¤ п§лЄҐ бᥬЎ«Ґа ¬®¦® ўбв ўЁвм ў «оЎ®Ґ ¬Ґбв® Їа®Ја ¬¬л.
Ќ зЁ Ґвбп ЈагЇЇ ¤ЁаҐЄвЁў®© ASM Ё § Є зЁў Ґвбп ¤ЁаҐЄвЁў®© END. Љ®¬ ¤л ¬®¦®
ЇЁб вм ®¤®© бва®ЄҐ, а §¤Ґ«пп Ёе в®зЄ®© б § Їпв®©. Љ®¬¬Ґв аЁЁ б«Ґ¤гҐв
ЇЁб вм ў бвЁ«Ґ Џ бЄ «п - ў дЁЈгале бЄ®ЎЄ е {} Ё«Ё ў бЄ®ЎЄ е (* ... *).
2.2. Љ®¬Ї®®ўЄ Їа®Ја ¬¬ п§лЄҐ Џ бЄ «м Ё п§лЄҐ бᥬЎ«Ґа
‡¤Ґбм Ї®Є § ®, Є Є ¬®¦® гбв ®ўЁвм бўп§м ¬Ґ¦¤г Їа®Ја ¬¬ ¬Ё п§лЄҐ Џ бЄ «м
б Їа®Ја ¬¬ ¬Ё п§лЄҐ бᥬЎ«Ґа . Ќ аЁбгЄҐ ¤ ЇаЁ¬Ґа бўп§Ё Їа®бв®© Џ бЄ «м-
Їа®Ја ¬¬л б бᥬЎ«Ґа®© Ї®¤Їа®Ја ¬¬®©. Џ бЄ «м-Їа®Ја ¬¬г Ё бᥬЎ«Ґа п
Їа®Ја ¬¬г 㦮 бЄ®¬ЇЁ«Ёа®ў вм ¤«п Ї®«гзҐЁп ®ЎкҐЄвле ¬®¤г«Ґ©. “вЁ«Ёв LINK
Є®¬Ї®гҐв ў¬Ґб⥠нвЁ ¤ў ¬®¤г«п ў ®¤Ё ўлЇ®«Ё¬л© EXE-¬®¤г«м.
--------------------------------------------------
program pascal (input,output);
procedure move_cursor(const row: integer;
const col: integer); extern;
var
temp_row: integer;
temp_col: integer;
begin
write('Enter cursor row:');
readln(temp_row);
write('Enter cursor column:');
readln(temp_col);
move_cursor(temprow,temp_col );
write('New cursor location');
end.
==================================================
TITLE MOVCUR Џ®¤Їа®Ја ¬¬ п§лЄҐ бᥬЎ«Ґа ,
; ўл§лў Ґ¬ п Ё§ Їа®Ја ¬¬л Џ бЄ «Ґ
PUBLIC MOVE_CURSOR
;-------------------------------------------------
; MOVE_CURSOR: “бв ў«Ёў Ґв Єгаб®а
; Ї® ЇҐаҐ¤ л¬ Ї а ¬Ґва ¬
; Џ а ¬Ґвал: const row ‘ва®Є Ё бв®«ЎҐж
; const col ¤«п гбв ®ўЄЁ Єгаб®а
; ‚®§ўа й Ґ¬®Ґ § 票Ґ: ЋвбгвбвўгҐв
;-------------------------------------------------
CODESEG SEGMENT PARA PUBLIC 'CODE'
MOVE_CURSOR PROC FAR
ASSUME CS:CODESEG
ROWWPAR EQU 8 ;Џ а ¬Ґва "бва®Є "
COLPAR EQU 6 ;Џ а ¬Ґва "бв®«ЎҐж"
PUSH BP ;‘®еа Ёвм ॣЁбва BP
MOV BP,SP ;“бв ®ўЁвм BP Ї а ¬Ґвал
MOV SI,[BP+ROWPAR] ;SI гЄ §лў Ґв бва®Єг
MOV DH,[SI] ;Џ®¬ҐбвЁвм бв®«ЎҐж ў DL
MOV AH,02 ;”гЄжЁп гбв ®ўЄЁ Єгаб®а
SUB BH,BH ;‘ва Ёж #0
INT 10H
POP BP ;‚Ґагвмбп
RET 4 ; ў ўл§лў ойго Їа®Ја ¬¬г
MOVE_CURSOR ENDP
CODESEG ENDS
END
‚ Џ бЄ «м-Їа®Ја ¬¬Ґ ®ЇаҐ¤Ґ«Ґл ¤ўҐ ЇҐаҐ¬ҐлҐ: temp_row Ё temp_col, Є®в®алҐ
ᮤҐа¦ в ўўҐ¤ҐлҐ б Є« ўЁ вгал § 票п бва®ЄЁ Ё Є®«®ЄЁ ᮮ⢥вб⢥®.
Џа®Ја ¬¬ ЇҐаҐ¤ Ґв ¤аҐб ЇҐаҐ¬Ґле temp_row Ё temp_col ў ўЁ¤Ґ Ї а ¬Ґва®ў ў
бᥬЎ«Ґаго Ї®¤Їа®Ја ¬¬г ¤«п гбв ®ўЄЁ Єгаб®а Ї® нвЁ¬ Є®®а¤Ё в ¬. Џ бЄ «м-
Їа®Ја ¬¬ ®ЇаҐ¤Ґ«пҐв Ё¬п бᥬЎ«Ґа®© Ї®¤Їа®Ја ¬¬л ў ®ЇҐа в®аҐ procedure Є Є
move_cursor Ё ®ЇаҐ¤Ґ«пҐв ¤ў Ї а ¬Ґва Є Є extern (ўҐиЁҐ). ЋЇҐа в®а ў
Џ бЄ «м-Їа®Ја ¬¬Ґ, Є®в®ал© ўл§лў Ґв бᥬЎ«Ґаго Їа®Ја ¬¬г Ї® Ё¬ҐЁ Ё ЇҐаҐ¤ Ґв
Ї а ¬Ґвал, Ё¬ҐҐв ўЁ¤:
move_cursor (temp_row,temp_col);
—ҐаҐ§ б⥪ ЇҐаҐ¤ овбп б«Ґ¤гойЁҐ ўҐ«ЁзЁл: гЄ § вҐ«м Ў«®Є ўл§лў о饩 Їа®Ја ¬¬л,
гЄ § ⥫м ᥣ¬Ґв ў®§ўа в , ᬥ饨Ґ ў®§ўа в , ¤аҐб ¤ўге ЇҐаҐ¤ ў Ґ¬ле
Ї а ¬Ґва®ў. ‘¬ҐйҐЁп ¤«п Є ¦¤®Ј® н«Ґ¬Ґв ў б⥪Ґв Є®ўл:
00 “Є § вҐ«м Ў«®Є ўл§лў о饩 Їа®Ја ¬¬л
02 “Є § ⥫м ᥣ¬Ґв ў®§ўа в
04 “Є § ⥫м б¬ҐйҐЁп ў®§ўа в
06 Ђ¤аҐб ўв®а®Ј® Ї а ¬Ґва
08 Ђ¤аҐб ЇҐаў®Ј® Ї а ¬Ґва
’ Є Є Є бᥬЎ«Ґа п Ї®¤Їа®Ја ¬¬ Ўг¤Ґв ЁбЇ®«м§®ў вм ॣЁбва BP, ҐЈ® Ґ®Ўе®¤Ё¬®
б®еа Ёвм ў б⥪Ґ ¤«п Ї®б«Ґ¤го饣® ў®ббв ®ў«ҐЁп ЇаЁ ў®§ўа ⥠ў ўл§лў ойго
Џ бЄ «м-Їа®Ја ¬¬г.
ђҐЈЁбва SP ®Ўлз® ¤аҐбгҐв н«Ґ¬Ґвл б⥪ . Ќ® нв®в ॣЁбва Ґ«м§п ЁбЇ®«м§®ў вм
Є Є Ё¤ҐЄбл©, Ё Ї®б«Ґ б®еа ҐЁп бв а®Ј® § 票п ॣЁбва BP Ґ®Ўе®¤Ё¬®
ЇҐаҐб« вм ¤аҐб Ё§ ॣЁбва SP ў BP. ќв®в и Ј Ї®§ў®«пҐв ЁбЇ®«м§®ў вм ॣЁбва BP
Є Є Ё¤ҐЄбл© аҐЈЁбва ¤«п ¤®бвгЇ Є н«Ґ¬Ґв ¬ ў б⥪Ґ.
‘«Ґ¤гойЁ© и Ј - Ї®«гзЁвм ¤®бвгЇ Є ¤аҐб ¬ ¤ўге ЇҐаҐ¤ ле Ї а ¬Ґва®ў ў б⥪Ґ.
ЏҐаўл© Ї а ¬Ґва ( ¤аҐб бва®ЄЁ) 室Ёвбп ў б⥪Ґ Ї® ᬥ饨о 08 Ё ¬®¦Ґв
¤аҐб®ў вмбп Ї® BP+08. ‚в®а®© Ї а ¬Ґва ( ¤аҐб бв®«Ўж ) 室Ёвбп ў б⥪Ґ Ї®
ᬥ饨о 06 Ё ¬®¦Ґв ¤аҐб®ў вмбп Ї® BP+06.
„ў ¤аҐб Ё§ б⥪ ¤®«¦л ЇҐаҐ¤ ў вмбп ў ®¤Ё Ё§ Ё¤ҐЄбле ॣЁбва®ў - BX, DI
Ё«Ё SI. ‚ ЇаЁ¬ҐаҐ ¤аҐб бва®ЄЁ ЇҐаҐбл« Ґвбп Ё§ [BP+08] ў ॣЁбва SI, § ⥬
ᮤҐа¦Ё¬®Ґ Ё§ [SI] (§ 票Ґ бва®ЄЁ) ЇҐаҐбл« Ґвбп ў ॣЁбва DH.
‡ 票Ґ бв®«Ўж ЇҐаҐбл« Ґвбп «®ЈЁзл¬ бЇ®б®Ў®¬ ў ॣЁбва DL. ‡ ⥬
Ї®¤Їа®Ја ¬¬ ЁбЇ®«м§гҐв § 票п бва®ЄЁ Ё бв®«Ўж ў ॣЁбвॠDX ЇаЁ ўл§®ўҐ Ѓ‘‚‚
¤«п гбв ®ўЄЁ Єгаб®а . ЏаЁ ўл室Ґ Ї®¤Їа®Ја ¬¬ ў®ббв ў«Ёў Ґв ॣЁбва BP.
Љ®¬ ¤ RET Ё¬ҐҐв ®ЇҐа ¤, § 票Ґ Є®в®а®Ј® ў¤ў®Ґ Ў®«миҐ зЁб« Ї а ¬Ґва®ў
(§¤Ґбм 2е2, Ё«Ё 4). Џ а ¬Ґвал ўв®¬ вЁзҐбЄЁ ўлў®¤пвбп Ё§ б⥪ , Ё гЇа ў«ҐЁҐ
ЇҐаҐе®¤Ёв ў ўл§лў ойго Їа®Ја ¬¬г.
…б«Ё Ї®¤Їа®Ја ¬¬Ґ ЇаҐ¤бв®Ёв Ё§¬ҐЁвм ᥣ¬Ґвл© аҐЈЁбва, в® Ґ®Ўе®¤Ё¬®
б®еа Ёвм ҐЈ® § 票Ґ Є®¬ ¤®© PUSH ўе®¤Ґ Ё ў®ббв ®ўЁвм Є®¬ ¤®© POP
ўл室Ґ. Њ®¦® в Є¦Ґ ЁбЇ®«м§®ў вм б⥪ ¤«п ЇҐаҐ¤ зЁ ўҐ«ЁзЁ Ё§ Ї®¤Їа®Ја ¬¬л ў
ўл§лў ойго Їа®Ја ¬¬г. ђ бᬮваҐ п Ї®¤Їа®Ја ¬¬ Ґ ў®§ўа й Ґв § 票©, ® ў
п§лЄҐ Џ бЄ «м ЇаҐ¤Ї®« Ј Ґвбп, зв® Ї®¤Їа®Ја ¬¬ ў®§ўа й Ґв ®¤® б«®ў® ў ॣЁбваҐ
AX Ё«Ё ®¤® ¤ў®©®Ґ б«®ў® ў ॣЁбва®ў®© Ї ॠDX:AX.
‚ १г«мв ⥠Є®¬Ї®®ўЄЁ ¤ўге Їа®Ја ¬¬ Ўг¤Ґв Ї®бв஥ Є ав Є®¬Ї®®ўЄЁ, Ј¤Ґ
ЇҐаўл© н«Ґ¬Ґв PASCAL ЇаҐ¤бв ў«пҐв Џ бЄ «м-Їа®Ја ¬¬г, ўв®а®© н«Ґ¬Ґв CODESEG
(Ё¬п ᥣ¬Ґв Є®¤ ) ЇаҐ¤бв ў«пҐв бᥬЎ«Ґаго Ї®¤Їа®Ја ¬¬г. „ «ҐҐ б«Ґ¤гҐв
ҐбЄ®«мЄ® Ї®¤Їа®Ја ¬¬ ¤«п Џ бЄ «м-Їа®Ја ¬¬л.
3. ‘®¤Ґа¦ ЁҐ ®взҐв
1) ®¬Ґа Ё §ў ЁҐ а Ў®вл
2) 楫м а Ў®вл
3) Ё¤ЁўЁ¤г «м®Ґ § ¤ ЁҐ а Ў®вг
4) гЄ § ЁҐ Ё¬Ґ Ёб室®Ј® Ё ЁбЇ®«пҐ¬®Ј® д ©«®ў
5) ўлў®¤л
ЋвзҐв ЇаҐ¤бв ў«пҐвбп ў ўЁ¤Ґ ⥪бв®ў®Ј® д ©« , ўлЇ®«Ґ®Ј® ў д®а¬ ⥠DOS
(Є®¤®ў п бва Ёж 866). Љ ®взҐвг ¤®«¦л ЇаЁ« Ј вмбп д ©« Ёб室®Ј® Є®¤
Їа®Ја ¬¬л Ё а Ў®зЁ© ЁбЇ®«пҐ¬л© д ©«.
4. ‡ ¤ ЁҐ а Ў®вг
1. ђ §®Ўа вмбп ў ЇаЁўҐ¤Ґле ¬ вҐаЁ « е.
2. ЏаЁ Ї®¤Ј®в®ўЄҐ Є а Ў®вҐ б з « б®бв ўЁвм Їа®Ја ¬¬г a
п§лЄҐ Turbo Pascal, ўЄ«оз ойго ў ᥡп бᥬЎ«Ґаго ўбв ўЄг.
ЏаЁ н⮬ ЁбЇ®«м§®ў вм бў®© ў аЁ в Ї® ЇаЁ«®¦ҐЁо "mathema.docx"
(¬®¦® ЁбЇ®«м§®ў вм да Ј¬Ґвл бў®Ґ© Їа®Ја ¬¬л Ї® ⥬Ґ "€бЇ®«м§®ў ЁҐ
ўҐиЁе Їа®жҐ¤га"). ‡ Їа®бл ўў®¤ ўе®¤ле ¤ ле ¤«п ўлзЁб«ҐЁп, Ёе ўў®¤
Ё ўлў®¤ १г«мв в ўлзЁб«ҐЁп ®ЎҐбЇҐзЁвм б।бвў ¬Ё Џ бЄ «п.
3. Џ®¤Ј®в®ўЁвм Ґ ¬ҐҐҐ ваҐе вҐбв®ўле Ў®а®ў Ёб室ле ¤ ле,
¤Ґ¬®бваЁагойЁе Їа ўЁ«м®бвм а Ў®вл Їа®Ја ¬¬л.
4. ‚ўҐбвЁ Ё ®в« ¤Ёвм Їа®Ја ¬¬г б Ї®¬®ймо бᥬЎ«Ґа TASM
(Ґб«Ё вॡгҐвбп) Ё Є®¬ЇЁ«пв®а Turbo Pascal.
5. ‘®бв ўЁвм ўв®аго Ї®аЈа ¬¬г, ®в«Ёзго ⥬, зв® бᥬЎ«Ґа п з бвм
®д®а¬«пҐвбп Є Є ўҐипп Ї®¤Їа®Ја ¬¬ Џ бЄ «м-Їа®Ја ¬¬л.
6. Џ®¤Ј®в®ўЁвм Ґ ¬ҐҐҐ ваҐе вҐбв®ўле Ў®а®ў Ёб室ле
¤ ле, ¤Ґ¬®бваЁагойЁе Їа ўЁ«м®бвм а Ў®вл Їа®Ја ¬¬л.
7. ‚ўҐбвЁ Ё ®в« ¤Ёвм Їа®Ја ¬¬г б Ї®¬®ймо бᥬЎ«Ґа TASM
(Ґб«Ё вॡгҐвбп) Ё Є®¬ЇЁ«пв®а Turbo Pascal.
Џа®¤Ґ¬®бваЁа®ў вм ЇаҐЇ®¤ ў ⥫о а Ў®вг Їа®Ја ¬¬ ў ўЁ¤Ґ
ўлЇ®«ҐЁп Ї®¤Ј®в®ў«Ґле вҐбв®ўле ЇаЁ¬Ґа®ў.
8. Ћд®а¬Ёвм ®взҐв Ї® а Ў®вҐ. ЋЎ аг¦ҐлҐ ЇаЁ ®в« ¤ЄҐ ®иЁЎЄЁ
§ ЇЁб вм ў ®взҐв. ЋЇЁб вм ў ®взҐвҐ १г«мв вл а Ў®вл Їа®Ја ¬¬.
**********************************************************************
**********************************************************************
Соседние файлы в папке 17