Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы по СП (1-20) / 05 / ASM_05
.txt **********************************************************************
‘€‘’…ЊЌЋ… ЏђЋѓђЂЊЊ€ђЋ‚ЂЌ€…
**********************************************************************
*******************
*** ’Ґ¬ 05 ***
*******************
**********************************************************************
„‚Ћ€—Ќ›… Ђђ€”Њ…’€—…‘Љ€… ‚›—€‘‹…Ќ€џ - ђЂ‡‚…’‚‹…ЌЌ›… ЏђЋѓђЂЊЊ›
**********************************************************************
–Ґ«м а Ў®вл:
Ќ ЇЁб вм п§лЄҐ бᥬЎ«Ґа Ё ўлЇ®«Ёвм ўҐвўпйгобп Їа®Ја ¬¬г ¤«п
ўлзЁб«ҐЁп § ¤ ®Ј® «ЈҐЎа ЁзҐбЄ®Ј® ўла ¦ҐЁп. Џа®Ја ¬¬ ¤®«¦
а Ў®в вм б ¤ўгеЎ ©в®ўл¬Ё зЁб« ¬Ё.
1. ‡ ¤ ЁҐ ЇаҐ¤ў аЁвҐ«мго Ї®¤Ј®в®ўЄг
Ћ§ Є®¬Ёвмбп б ᮤҐа¦ ЁҐ¬ агЄ®ў®¤бвў
€§гзЁвм ЇаЁўҐ¤Ґл© ⥮аҐвЁзҐбЄЁ© ¬ вҐаЁ «
‚лЇ®«Ёвм Їа ЄвЁзҐбЄго з бвм а Ў®вл
‘®бв ўЁвм ®взҐв ® а Ў®вҐ
ЏаҐ¤кпўЁвм १г«мв вл а Ў®вл ЇаҐЇ®¤ ў ⥫о
Џа®Ја ¬¬ Ё¬ҐҐв е а ЄвҐа г祡®©, Ї®н⮬㠨Є ЄЁе Їа®ўҐа®Є Ё«Ё ॠЄжЁ©
ЇаҐўл襨Ґ ¤Ё Ї §® Ё«Ё ®иЁЎЄЁ ўў®¤ ЇаҐ¤гб¬ ваЁў вм Ґ б«Ґ¤гҐв.
2. Ља вЄЁҐ ⥮аҐвЁзҐбЄЁҐ ᢥ¤ҐЁп
2.1. Љ®¬ ¤л ЇҐаҐе®¤®ў
ЏаҐ¦¤Ґ а бб¬ ваЁў «Ёбм Їа®Ја ¬¬л, Ј¤Ґ ўлЇ®«ҐЁҐ Їа®жҐбб®а®¬ Є®¬ ¤ и«® ў
бва®Ј®© Ї®б«Ґ¤®ў ⥫м®бвЁ: Є ¦¤ п б«Ґ¤гой п Є®¬ ¤ ўлЇ®«п« бм ба §г Ї®б«Ґ
Є®¬ ¤л ЇаҐ¤л¤г饩. ’ Є, ЇаЁ а бᬮв२Ё Їа®Ја ¬¬л
. . .
MOV AX,[BaseCount]
ADD AX,2
. . .
PUSH AX
. . .
Ўл« Ї®« п 㢥८бвм, зв® Є®¬ ¤ ADD ўлЇ®«Ёвбп ҐЇ®б।б⢥® Ї®б«Ґ
Є®¬ ¤л MOV, Ї®§¤ҐҐ Ўг¤Ґв ўлЇ®«Ґ Є®¬ ¤ PUSH.
…б«Ё Ўл нвЁ¬ ўбҐ ®Ја ЁзЁў «®бм, в® Їа®Ја ¬¬л Ўл«Ё Ўл ¤®ў®«м® ЇаЁ¬ЁвЁўл.
‚Ґбм¬ ў ¦® «ЁзЁҐ Є®¬ ¤, Є®в®алҐ ¬®Јгв ўлЇ®«пвм ў Їа®Ја ¬¬Ґ ЇҐаҐе®¤л
(ўҐвў«ҐЁп) Є®¬ ¤л, Ґ б«Ґ¤гойЁҐ § ⥪г饩 Є®¬ ¤®© ҐЇ®б।б⢥®.
‘в®«м ¦Ґ ў ¦ ў®§¬®¦®бвм ўлЇ®«ҐЁп ў Їа®Ја ¬¬Ґ гб«®ў®Ј® ЇҐаҐе®¤ - ў
§ ўЁбЁ¬®бвЁ ®в б®бв®пЁп Їа®жҐбб®а Ё«Ё ®в १г«мв в ®ЇҐа жЁЁ.
Ќ Ў®а Є®¬ ¤ Їа®жҐбб®а ᮤҐа¦Ёв Є®¬ ¤л ¤«п ®Ў®Ёе ўЁ¤®ў ЇҐаҐе®¤®ў. Љ ⮬㠦Ґ
ЇаҐ¤гᬮваҐл бЇҐжЁ «млҐ Є®¬ ¤л ЇҐаҐе®¤®ў ¤«п ®ЎҐбЇҐзҐЁп Ї®ўв®а塞®©
®Ўа Ў®вЄЁ ®ЇаҐ¤Ґ«Ґ®© з бвЁ Є®¤ .
ЃҐ§гб«®ўлҐ ЇҐаҐе®¤л
Ћб®ў п Є®¬ ¤ ЇҐаҐе®¤ ў Ў®аҐ в ЄЁе Є®¬ ¤ - Є®¬ ¤ JMP. Ћ гЄ §лў Ґв,
зв® ўб«Ґ¤ § Ґ© 㦮 ўлЇ®«ЁвмЄ®¬ ¤г, гЄ§ го ¬ҐвЄ®©. Ќ ЇаЁ¬Ґа, Ї®б«Ґ
§ ўҐаиҐЁп ўлЇ®«ҐЁп да Ј¬Ґв Їа®Ја ¬¬л:
. . .
MOV AX,1
JMP AddTwoToAX
AddOneToAx:
INC AX
JMP AXIsSet
AddTwoToAX:
ADD AX,2
AXIsSet:
. . .
ॣЁбва AX Ўг¤Ґв ᮤҐа¦ вм § 票Ґ 3, Є®¬ ¤л ADD Ё JMP, б«Ґ¤гойЁҐ § ¬ҐвЄ®©
AddOneToAX, ЁЄ®Ј¤ Ґ Ўг¤гв ўлЇ®«пвмбп. ‡¤Ґбм Є®¬ ¤
JMP AddTwoToAX
гЄ §лў Ґв Їа®жҐбб®аг, з⮠㦮 гбв ®ўЁвм гЄ § вҐ«м Є®¬ ¤ IP ў § 票Ґ
б¬ҐйҐЁп ¬ҐвЄЁ AddTwoToAX; Ї®н⮬г б«Ґ¤го饩 ўлЇ®«пҐ¬®© Є®¬ ¤®© Ўг¤Ґв Є®¬ ¤
ADD AX,2
€®Ј¤ б®ў¬Ґбв® б Є®¬ ¤®© JMP ЁбЇ®«м§гҐвбп ®ЇҐа в®а SHORT. „«п гЄ § Ёп
楫Ґўго ¬ҐвЄг Є®¬ ¤ JMP ®Ўлз® ЁбЇ®«м§гҐв 16-ЎЁв®ў®Ґ ᬥ饨Ґ. ЋЇҐа в®а SHORT
гЄ §лў Ґв бᥬЎ«Ґаг, з⮠㦮 ЁбЇ®«м§®ў вм Ґ 16-ЎЁв®ў®Ґ, 8-ЎЁв®ў®Ґ
ᬥ饨Ґ (зв® Ї®§ў®«пҐв бнЄ®®¬Ёвм ў Є®¬ ¤Ґ JMP ®¤Ё Ў ©в). Ќ ЇаЁ¬Ґа,
Ї®б«Ґ¤Ё© да Ј¬Ґв Їа®Ја ¬¬л ¬®¦® ЇҐаҐЇЁб вм в Є, зв® ® бв Ґв ¤ў Ў ©в
Є®а®зҐ:
. . .
MOV AX,1
JMP SHORT AddTwoToAX
AddOneToAx:
INC AX
JMP SHORT AXIsSet
AddTwoToAX:
ADD AX,2
AXIsSet:
. . .
ЌҐ¤®бв в®Є ЁбЇ®«м§®ў Ёп ®ЇҐа в®а SHORT б®бв®Ёв ў ⮬, зв® Є®а®вЄЁҐ ЇҐаҐе®¤л
¬®Јгв ЇҐаҐ¤ ў вм гЇа ў«ҐЁҐ ¬ҐвЄЁ, ®вбв®пйЁҐ ®в Є®¬ ¤л JMP Ґ ¤ «ҐҐ 祬
128 Ў ©в®ў, Ї®н⮬㠨®Ј¤ бᥬЎ«Ґа ¬®¦Ґв б®®Ўй вм, зв® ¬ҐвЄ Ґ¤®бвЁ¦Ё¬ б
Ї®¬®ймо Є®а®вЄ®Ј® ЇҐаҐе®¤ . Љ ⮬㠦Ґ ®ЇҐа в®а SHORT Ё¬ҐҐв б¬лб« ЁбЇ®«м§®ў вм
«Ёим ¤«п ббл«®Є ўЇҐаҐ¤, Ї®бЄ®«мЄг ¤«п ЇҐаҐе®¤®ў § ¤ ( ЇаҐ¤иҐбвўгойЁҐ ¬ҐвЄЁ)
бᥬЎ«Ґа ўв®¬ вЁзҐбЄЁ ЁбЇ®«м§гҐв Є®а®вЄЁҐ ЇҐаҐе®¤л, Ґб«Ё ¬ҐвЄг ¬®¦®
ЇҐаҐ©вЁ б Ї®¬®ймо Є®а®вЄ®Ј® ЇҐаҐе®¤ , Ё ¤«ЁлҐ - ў Їа®вЁў®¬ б«гз Ґ.
Љ®¬ ¤г JMP ¬®¦® ЁбЇ®«м§®ў вм ¤«п ЇҐаҐе®¤ ў ¤агЈ®© ᥣ¬Ґв Є®¤ , § Јаг¦ п ў
®¤®© Є®¬ ¤Ґ ॣЁбва CS Ё ॣЁбва IP. Ќ ЇаЁ¬Ґа, ў Їа®Ја ¬¬Ґ:
. . .
CSeg1 SEGMENT
ASSUME CS:Cseg1
. . .
FarTarget LABEL FAR
. . .
CSeg1 ENDS
. . .
CSeg2 SEGMENT
ASSUME CS:CSeg2
. . .
JMP FarTarget ; ЇҐаҐе®¤ ¤ «мҐЈ® вЁЇ
. . .
CSeg2 ENDS
. . .
ўлЇ®«пҐвбп ЇҐаҐе®¤ ¤ «мҐЈ® вЁЇ .
…б«Ё 㦮, зв®Ўл ¬ҐвЄ ЇаЁг¤ЁвҐ«м® Ї®Ё¬ « бм Є Є ¬ҐвЄ ¤ «мҐЈ® вЁЇ , ¬®¦®
ЁбЇ®«м§®ў вм ®ЇҐа в®а FAR PTR. Ќ ЇаЁ¬Ґа, ў® да Ј¬ҐвҐ Їа®Ја ¬¬л:
. . .
JMP FAR PTR NearLabel
NOP
NearLabel:
. . .
ўлЇ®«пҐвбп ЇҐаҐе®¤ ¤ «мҐЈ® вЁЇ ¬ҐвЄг NearLabel, е®вп нв ¬ҐвЄ 室Ёвбп
ў ⮬ ¦Ґ ᥣ¬ҐвҐ Є®¤ , зв® Є®¬ ¤ JMP.
Ќ Є®Ґж, ¬®¦® ўлЇ®«Ёвм ЇҐаҐе®¤ Ї® ¤аҐбг, § ЇЁб ®¬г ў ॣЁбвॠЁ«Ё ў
ЇҐаҐ¬Ґ®© Ї ¬пвЁ. Ќ ЇаЁ¬Ґа:
. . .
MOV AX,OFFSET TestLabel
JMP AX
. . .
TestLabel:
. . .
‡¤Ґбм ўлЇ®«пҐвбп ЇҐаҐе®¤ ¬ҐвЄг TestLabel, в Є ¦Ґ Є Є ў б«Ґ¤го饬 да Ј¬ҐвҐ:
. .
.DATA
JumpTarget DW TestLabel
. .
.CODE
. . .
JMP [JumpTarget]
. . .
TestLabel:
. . .
ЏаЁ¬Ґз ЁҐ. ‡¤Ґбм ЁбЇ®«м§®ў л ¤ЁаҐЄвЁўл TASM ¤«п ०Ё¬ Ideal, а Ў®в б Є®Ё¬
Ґ ЇаҐ¤Ї®« Ј Ґвбп
“б«®ўлҐ ЇҐаҐе®¤л
ЋЇЁб лҐ Є®¬ ¤л ЇҐаҐе®¤®ў - «Ёим з бвм в®Ј®, зв® вॡгҐвбп ¤«п ЇЁб Ёп
Їа®Ја ¬¬. ЌҐ®Ўе®¤Ё¬ ў®§¬®¦®бвм ЇЁб вм Їа®Ја ¬¬л, ¬®ЈгйЁҐ ЇаЁЁ¬ вм аҐиҐЁп.
ќв® ¤Ґ« Ґвбп б Ї®¬®ймо Є®¬ ¤ гб«®ўле ЇҐаҐе®¤®ў.
Љ®¬ ¤ гб«®ў®Ј® ЇҐаҐе®¤ ¬®¦Ґв ўлЇ®«пвм Ё«Ё Ґ ўлЇ®«пвм ЇҐаҐе®¤ 楫Ґўго
¬ҐвЄг - ў § ўЁбЁ¬®бвЁ ®в б®бв®пЁп ॣЁбва ЇаЁ§ Є®ў (д« Ј®ў). ђ бᬮваЁ¬
ЇаЁ¬Ґа:
. .
MOV AH,1 ; дгЄжЁп DOS ўў®¤ б Є« ўЁ вгал
INT 21H ; Ї®«гзЁвм б«Ґ¤гойго ¦ вго Є« ўЁиг
CMP AL,'A' ; Ўл« ¦ в ЎгЄў "A"?
JE AWasTyped ; ¤ , ®Ўа Ў®в вм ҐҐ
MOV [TampByte], AL ; Ґв, б®еа Ёвм бЁ¬ў®«
. . .
AWasTyped:
PUSH AX ; б®еа Ёвм бЁ¬ў®« ў б⥪Ґ
. . .
‘ з « ў Їа®Ја ¬¬Ґ б Ї®¬®ймо дгЄжЁЁ DOS (Ї® ЇаҐалў Ёо INT 21H)
ў®бЇаЁЁ¬ Ґвбп ¦ в п Є« ўЁи . ‡ ⥬ ¤«п ба ўҐЁп ўўҐ¤Ґ®Ј® бЁ¬ў®« б
бЁ¬ў®«®¬ A ЁбЇ®«м§гҐвбп Є®¬ ¤ CMP. ЏаЁ§ Є г«п гбв ў«Ёў Ґвбп, «Ёим Ґб«Ё
ॣЁбва AL ᮤҐа¦Ёв бЁ¬ў®« A.
‡ ¬ҐвмвҐ, зв® Є®¬ ¤ JE Ґбвм Є®¬ ¤ гб«®ў®Ј® ЇҐаҐе®¤ , Є®в®а п ўлЇ®«пҐв
ЇҐаҐ¤ зг гЇа ў«ҐЁп, «Ёим Ґб«Ё ЇаЁ§ Є г«п а ўҐ 1. € зҐ ўлЇ®«пҐвбп Є®¬ ¤ ,
ҐЇ®б।б⢥® б«Ґ¤гой п § JE (§¤Ґбм - Є®¬ ¤ MOV). ЏаЁ§ Є г«п Ўг¤Ґв
гбв ®ў«Ґ «Ёим ЇаЁ ¦ вЁЁ Є« ўЁиЁ A, Ё «Ёим в®Ј¤ Їа®жҐбб®а ЇҐаҐ©¤Ґв Є
ўлЇ®«ҐЁо Є®¬ ¤л б ¬ҐвЄ®© AWasTyped - Є®¬ ¤л PUSH.
Ќ Ў®а Є®¬ ¤ Їа®жҐбб®а ЇаҐ¤гб¬ ваЁў Ґв а §®®Ўа §лҐ Є®¬ ¤л гб«®ўле
ЇҐаҐе®¤®ў, зв® Ї®§ў®«пҐв ўлЇ®«Ёвм ЇҐаҐе®¤ Ї®звЁ Ї® «оЎ®¬г ЇаЁ§ Єг Ё«Ё
Є®¬ЎЁ жЁЁ ЇаЁ§ Є®ў. Њ®¦® ўлЇ®«Ёвм гб«®ўл© ЇҐаҐе®¤ Ї® б®бв®пЁо г«п,
ЇҐаҐ®б , Ї® § Єг, Ї® ЇҐаҐЇ®«ҐЁо Ё Ї® Є®¬ЎЁ жЁЁ ЇаЁ§ Є®ў, Ї®Є §лў ойЁе
१г«мв вл ®ЇҐа жЁ© зЁбҐ« б® § Є ¬Ё. ЏҐаҐзҐм ®б®ўле Є®¬ ¤ гб«®ўле
ЇҐаҐе®¤®ў ¤ ў в Ў«ЁжҐ Ё¦Ґ.
Љ®¬ ¤л гб«®ўле ЇҐаҐе®¤®ў ’ Ў«Ёж
-----------------------------------------------------------------
Ќ §ў ЁҐ ‡ 票Ґ Џа®ўҐапҐ¬лҐ д« ЈЁ
-----------------------------------------------------------------
JB/JNAE ЏҐаҐ©вЁ, Ґб«Ё ¬ҐмиҐ / ЇҐаҐ©вЁ, Ґб«Ё CF = 1
Ґ Ў®«миҐ Ё«Ё а ў®
JAE/JNB ЏҐаҐ©вЁ, Ґб«Ё Ў®«миҐ Ё«Ё а ў® / CF = 0
ЇҐаҐ©вЁ, Ґб«Ё Ґ ¬ҐмиҐ
JBE/JNA ЏҐаҐ©вЁ, Ґб«Ё ¬ҐмиҐ Ё«Ё а ў® / CF = 1 Ё«Ё ZF = 1
ЇҐаҐ©вЁ, Ґб«Ё Ґ Ў®«миҐ
JA/JNBE ЏҐаҐ©вЁ, Ґб«Ё Ў®«миҐ / ЇҐаҐ©вЁ, Ґб«Ё CF = 0 Ё ZF = 0
Ґ ¬ҐмиҐ Ё«Ё а ў®
JE/JZ ЏҐаҐ©вЁ, Ґб«Ё а ў® ZF = 1
JNE/JNZ ЏҐаҐ©вЁ, Ґб«Ё Ґ а ў® ZF = 0
JL/JNGE ЏҐаҐ©вЁ, Ґб«Ё ¬ҐмиҐ зҐ¬ / ЇҐаҐ©вЁ, SF = OF
Ґб«Ё Ґ Ў®«миҐ зҐ¬ Ё«Ё а ў®
JGE/JNL ЏҐаҐ©вЁ, Ґб«Ё Ў®«миҐ зҐ¬ Ё«Ё а ў® / SF = OF
ЇҐаҐ©вЁ, Ґб«Ё Ґ ¬ҐмиҐ зҐ¬
JLE/JNLE ЏҐаҐ©вЁ, Ґб«Ё ¬ҐмиҐ зҐ¬ Ё«Ё а ў® / ZF = 1 Ё«Ё SF = OF
ЇҐаҐ©вЁ, Ґб«Ё Ґ Ў®«миҐ, 祬
JG/JNLE ЏҐаҐ©вЁ, Ґб«Ё Ў®«миҐ зҐ¬ / ЇҐаҐ©вЁ, ZF = 0 Ё«Ё SF = OF
Ґб«Ё Ґ ¬ҐмиҐ зҐ¬ Ё«Ё а ў®
JP/JPE ЏҐаҐ©вЁ Ї® зҐв®бвЁ PF = 1
JNP/JPO ЏҐаҐ©вЁ Ї® ҐзҐв®бвЁ PF = 0
JS ЏҐаҐ©вЁ Ї® § Єг SF = 1
JNS ЏҐаҐ©вЁ, Ґб«Ё § Є Ґ гбв ®ў«Ґ SF = 0
JC ЏҐаҐ©вЁ ЇаЁ «ЁзЁЁ ЇҐаҐ®б CF = 1
JNC ЏҐаҐ©вЁ ЇаЁ ®вбгвбвўЁЁ ЇҐаҐ®б CF = 0
JO ЏҐаҐ©вЁ Ї® ЇҐаҐЇ®«ҐЁо OF = 1
JNO ЏҐаҐ©вЁ ЇаЁ ®вбгвбвўЁЁ ЇҐаҐЇ®«ҐЁп OF = 0
-----------------------------------------------------------------
CF - д« Ј ЇҐаҐ®б , SF - д« Ј § Є , OF - д« Ј ЇҐаҐЇ®«ҐЁп,
ZF - д« Ј г«п, PF - д« Ј зҐв®бвЁ
ЌҐб¬®вап ЈЁЎЄ®бвм, Є®¬ ¤л гб«®ў®Ј® ЇҐаҐе®¤ Ё¬Ґов бҐамҐ§лҐ ®Ја ЁзҐЁп,
ЁЎ® ЇҐаҐе®¤л ў Ёе ўбҐЈ¤ Є®а®вЄЁҐ: гЄ § п ¬ҐвЄ ¤®«¦ ®вбв®пвм ®в Є®¬ ¤л
ЇҐаҐе®¤ Ґ Ў®«ҐҐ 祬 128 Ў ©в®ў. Ќ ЇаЁ¬Ґа, Ґў®§¬®¦® бᥬЎ«Ёа®ў вм:
. . .
JumpTarget:
. . .
DB 1000 DUP (?)
. . .
DEC AX
JNZ JumpTarget
. . .
ЁЎ® ¬ҐвЄ JumpTarget ®вбв®Ёв ®в Є®¬ ¤л JNZ Ў®«ҐҐ 祬 1000 Ў ©в®ў. ‚ в Є®¬
б«гз Ґ 㦮 ᤥ« вм б«Ґ¤го饥:
. . .
JumpTarget:
. . .
DB 1000 DUP (?)
. . .
DEC AX
JNZ SkipJump
JMP JumpTarget
SkipJump:
. . .
Ј¤Ґ гб«®ўл© ЇҐаҐе®¤ ЇҐаҐе®¤ ЇаЁ¬ҐпҐвбп, зв®Ўл ®ЇаҐ¤Ґ«Ёвм, 㦮 «Ё ўлЇ®«Ёвм
¤«Ёл© ЎҐ§гб«®ўл© ЇҐаҐе®¤.
2.2. ЏаЁ¬Ґа Їа®Ја ¬¬л ¤«п 16-ЎЁв®ў®Ј® а §ўҐвў«Ґ®Ј® ¬ ⥬ вЁзҐбЄ®Ј® ўлзЁб«ҐЁп
Џа®Ја ¬¬лҐ ⥪бвл ўбв ў«Ґл ў ®Ўа ¬«ҐЁҐ - б Їа®ЇгбЄ®¬ ҐЈ® з бвЁ, ® 祬 Ўл«®
бЄ § ® ЇаЁ ®ЇЁб ЁЁ ®Ўа ¬«ҐЁп.
TITLE ALGBRAN (EXE) ; ўл§®ў Їа®Ја ¬¬л
;----------------------------------------
STACKSG SEGMENT PARA STACK 'Stack'
DW 32 DUP(?)
STACKSG ENDS
;----------------------------------------
DATASG SEGMENT PARA 'Data'
UVAR DW (?) ; ЇҐаҐ¬Ґ п U
XVAR DW ??? ; ЇҐаҐ¬Ґ п X
YVAR DW ??? ; ЇҐаҐ¬Ґ п Y
ASCVAL DB ' ','$' ; и Ў«® ўлў®¤
AUX DW (?) ; ўбЇ®¬®Ј ⥫м п
XY DW (?) ; ¤«п Їа®Ё§ўҐ¤ҐЁп XY
CON DW 1 ; Є®бв в -Ґ¤ЁЁж
EXIT DW (?) ; ўл室 Ї® «оЎ®© Є« ўЁиҐ
DATASG ENDS
;----------------------------------------
CODESG SEGMENT PARA 'Code'
BEGIN PROC FAR
ASSUME CS:CODESG, DS:DATASG, SS:STACKSG
PUSH DS
XOR AX,AX ; § ЇЁб вм ў б⥪
PUSH AX ; г«Ґў®© ¤аҐб
MOV AX,DATASG ; Ї®¬ҐбвЁвм ¤аҐб
MOV DS,AX ; DATASG ў ॣЁбва DS
LEA SI,ASCVAL
;----------------------------------------
; Џа®Ја ¬¬ ўлзЁб«ҐЁп ўла ¦ҐЁп
;
; U = (X + Y)^2 - XY, Ґб«Ё XY > 0
; U = (X + Y)^2 + XY, Ґб«Ё XY < 0
; U = (X + Y)^2 + 1, Ґб«Ё XY = 0
;
;----------------------------------------
; ўлзЁб«ҐЁҐ Єў ¤а в б㬬л X Ё Y
;----------------------------------------
MOV AX,XVAR ; ўлзЁб«ҐЁҐ X+Y
ADD AX,YVAR
MOV AUX,AX ; § Ї®¬Ё ЁҐ б㬬л
IMUL AUX ; ў®§ўҐ¤ҐЁҐ ў Єў ¤а в
MOV AUX,AX ; § Ї®¬Ё ЁҐ १г«мв в
;----------------------------------------
; ўлзЁб«ҐЁҐ Їа®Ё§ўҐ¤ҐЁп X Ё Y
;----------------------------------------
MOV AX,XVAR ; ўлзЁб«ҐЁҐ XY
MOV XY,AX
MOV AX,YVAR
IMUL XY
MOV XY,AX ; § Ї®¬Ё ЁҐ XY
;----------------------------------------
; Їа®ўҐаЄ § зҐЁп Їа®Ё§ўҐ¤ҐЁп
;----------------------------------------
JZ ZERO
JS MINUS
JMP PLUS
;----------------------------------------
; ўлзЁб«ҐЁҐ १г«мв в
;----------------------------------------
MINUS:
MOV AX,AUX ; ў®ббв ®ў«ҐЁҐ § 票п
ADD AX,XY ; б«®¦ҐЁҐ б Їа®Ё§ўҐ¤ҐЁҐ¬
JMP RES ; ЇҐаҐе®¤ Є § ўҐа襨о
PLUS:
MOV AX,AUX ; ў®ббв ®ў«ҐЁҐ § 票п
SUB AX,XY ; ўлзЁв ЁҐ Їа®Ё§ўҐ¤ҐЁп
JMP RES ; ЇҐаҐе®¤ Є § ўҐа襨о
ZERO:
MOV AX,AUX ; ў®ббв ®ў«ҐЁҐ § 票п
ADD AX,CON ; б«®¦ҐЁҐ б Є®бв в®©
RES: ; § ўҐа襨Ґ ўлзЁб«ҐЁп
MOV UVAR,AX ; § Ї®¬Ё ЁҐ १г«мв в
;----------------------------------------
; ўл§®ў Ї®¤Їа®Ја ¬¬л ўлў®¤ १г«мв в
;----------------------------------------
CALL SCRLIN ; ўл§®ў Ї®¤Їа®Ја ¬¬л
RET ; § ўҐа襨Ґ Їа®Ја ¬¬л
BEGIN ENDP
CODESG ENDS
END BEGIN
3. ‘®¤Ґа¦ ЁҐ ®взҐв
1) ®¬Ґа Ё §ў ЁҐ а Ў®вл
2) 楫м а Ў®вл
3) Ё¤ЁўЁ¤г «м®Ґ § ¤ ЁҐ а Ў®вг
4) гЄ § ЁҐ Ё¬Ґ Ёб室®Ј® Ё ЁбЇ®«пҐ¬®Ј® д ©«®ў
5) ўлў®¤л
ЋвзҐв ЇаҐ¤бв ў«пҐвбп ў ўЁ¤Ґ ⥪бв®ў®Ј® д ©« , ўлЇ®«Ґ®Ј® ў д®а¬ ⥠DOS
(Є®¤®ў п бва Ёж 866). Љ ®взҐвг ¤®«¦л ЇаЁ« Ј вмбп д ©« Ёб室®Ј® Є®¤
Їа®Ја ¬¬л Ё а Ў®зЁ© ЁбЇ®«пҐ¬л© д ©«.
4. ‡ ¤ ЁҐ а Ў®вг
1. ‘Є®ЇЁа®ў вм Ё§ гЄ § ®Ј® Є в «®Ј ⥪бв ®Ўа ¬«ҐЁп Їа®Ја ¬¬л
EXE_FORM.ASM, Ё§¬ҐЁў Ґ¬г Ё¬п Ї® гᬮв२о, ў бў®© а Ў®зЁ© Є в «®Ј.
2. ‚ўҐбвЁ ў нв®в ⥪бв г¦лҐ ¤®Ї®«ҐЁп Ё Ё§¬ҐҐЁп.
3. ‚бв ўЁвм ў ⥪бв Їа®Ја ¬¬л § 票п г¦ле ЇҐаҐ¬Ґле Ї® б®Ўб⢥®¬г ўлЎ®аг
(® Ґ б«ЁиЄ®¬ ЇаЁ¬ЁвЁўлҐ). …б«Ё Їа®Ја ¬¬ ᮤҐа¦Ёв Є®¬ ¤л ¤Ґ«ҐЁп,
б«Ґ¤гҐв Ї®¤®Ўа вм нвЁ § 票п в Є, зв®Ўл ¤Ґ«ҐЁҐ ¤ ў «® 楫®зЁб«Ґл©
१г«мв в. Ќг¦® б«Ґ¤Ёвм, зв®Ўл ўбҐ Ёбе®¤лҐ Ё Їа®¬Ґ¦гв®злҐ § зҐЁп Ґ
ЇаҐўли «Ё ЇаҐ¤Ґ«®ў ¤ўгеЎ ©в®ўле зЁбҐ«.
4. ЂбᥬЎ«Ёа®ў вм Їа®Ја ¬¬г Ё гЎҐ¤Ёвмбп ў ®вбгвбвўЁЁ ®иЁЎ®Є.
5. ‘Є®¬Ї®®ў вм Їа®Ја ¬¬г.
6. ‚лЇ®«Ёвм Ї®«гзҐл© EXE-¬®¤г«м Ё Їа®ўҐаЁвм १г«мв в ўлзЁб«ҐЁ©.
‡ ЇЁб вм १г«мв в ўлзЁб«ҐЁ© ў ®взҐв.
5. ‚ аЁ вл § ¤ Ё©
01. (X + Y)^2 - 2*X*Y, Ґб«Ё X*Y > 0
(X + Y)^2 + X*Y, Ґб«Ё X*Y < 0
(X + Y) + 1, Ґб«Ё X*Y = 0
02. A*X*Y + (X^2 - Y)^2, Ґб«Ё X/Y > 0
A*X*Y + (X*Y^2 ), Ґб«Ё X/Y < 0
(X^2 + Y^2), Ґб«Ё X = 0
11, Ґб«Ё Y = 0
03. X^2 + Y^2 + 3*X, Ґб«Ё X - Y = 0
(X - Y)^2 + 2*X, Ґб«Ё X - Y > 0
(Y - X)^2 + X, Ґб«Ё X - Y < 0
04. X + Y/2, Ґб«Ё Y зҐв®Ґ
2*X + Y, Ґб«Ё Y ҐзҐв®Ґ
3*X + 7, Ґб«Ё Y = 0
05. (X - Y)^2 + X + Y, Ґб«Ё X > Y
(Y - X)^2 - X + Y, Ґб«Ё X < Y
X + Y + 2, Ґб«Ё X = Y
06. 2*X^3 + 3*Y^2, Ґб«Ё X < Y
3*X^2 + 2*Y^3, Ґб«Ё X > Y
3*X^3 + 12, Ґб«Ё X = Y
07. 3*|X| + 2*|Y| - |Z|
08. 100*X + 200*Y, Ґб«Ё |X*Y| < 10
10*X + 2*Y, Ґб«Ё |X*Y| > 10
20*(X + Y), Ґб«Ё |X*Y| = 10
09. max(X, Y) - max(Y, Z)
10. min(X + Y, Y - Z)
11. X*Y*Z - (X + Y + Z), Ґб«Ё max(X, Y) > 10
X*Y*Z + (X + Y + Z), Ґб«Ё max(X, Y) =< 10
12. max(min(X - Y, Y - X), Y)
13. max(X, Y, Z, V)
14. min(|X|, |Y|)
15. A*X/Y, Ґб«Ё X ¤Ґ«Ёвбп Y 楫®
A*X + Y, Ё зҐ
16. X^2 *Y^2, Ґб«Ё X < 10 Ё Y < 10
X^2 *Y, Ґб«Ё X < 10 Ё Y > 10
X*Y^2 , Ґб«Ё X > 10 Ё Y < 10
17. X^2 + Y^2, Ґб«Ё 10 < X*Y < 20
X + Y, Ґб«Ё X*Y > 20 Ё«Ё X*Y < 10
18. 3*X*Y, Ґб«Ё X < 10 Ё«Ё Y < 10
2*(X + Y), Ґб«Ё X > 10 Ё Y > 10
6*X + 7*Y, Ё зҐ
19. 3*X^3 + 3*Y^2, Ґб«Ё X > |Y|
3*X^2 + 3*Y^3, Ґб«Ё X =< |Y|
20. min(X, Y, |Z|)
21. X + Y + 1, Ґб«Ё X Ґ ¤Ґ«Ёвбп Y 楫®
X/Y + 7, Ё зҐ
22. (X + Y)^2, Ґб«Ё X >= 0 Ё Y >= 0
(|X| + |Y|), Ё зҐ
23. max(X - Y, Y - X)
24. (X - Y)*(V - Z), Ґб«Ё X Ґ а ў® Y Ё Y Ґ а ў® Z
X + Y + V + Z, Ё зҐ
25. | |X| - |Y| |
26. |max(X, Y)| + X + Y
27. |min((X + Y), X*Y)|
28. min(X - Y, 0) + max(Y - X, 0)
29. max(X, 10)*min(Y, 20) + 1
30. 2*X^2 + |Y|, Ґб«Ё Y < 0
|X| + Y^2, Ґб«Ё X < 0
3*X*Y + |Y|, Ґб«Ё X = 0
31. |X + Y| - max(X,Y), Ґб«Ё X > Y
|X + Y| - min(X,Y), Ґб«Ё X <= Y
32. U = (X + Y) - X*Y, Ґб«Ё X + Y > 0
U = (X + Y) + X*Y, Ґб«Ё X + Y < 0
U = (X + Y)^2 + 1, Ґб«Ё X + Y = 0
**********************************************************************
**********************************************************************
‘€‘’…ЊЌЋ… ЏђЋѓђЂЊЊ€ђЋ‚ЂЌ€…
**********************************************************************
*******************
*** ’Ґ¬ 05 ***
*******************
**********************************************************************
„‚Ћ€—Ќ›… Ђђ€”Њ…’€—…‘Љ€… ‚›—€‘‹…Ќ€џ - ђЂ‡‚…’‚‹…ЌЌ›… ЏђЋѓђЂЊЊ›
**********************************************************************
–Ґ«м а Ў®вл:
Ќ ЇЁб вм п§лЄҐ бᥬЎ«Ґа Ё ўлЇ®«Ёвм ўҐвўпйгобп Їа®Ја ¬¬г ¤«п
ўлзЁб«ҐЁп § ¤ ®Ј® «ЈҐЎа ЁзҐбЄ®Ј® ўла ¦ҐЁп. Џа®Ја ¬¬ ¤®«¦
а Ў®в вм б ¤ўгеЎ ©в®ўл¬Ё зЁб« ¬Ё.
1. ‡ ¤ ЁҐ ЇаҐ¤ў аЁвҐ«мго Ї®¤Ј®в®ўЄг
Ћ§ Є®¬Ёвмбп б ᮤҐа¦ ЁҐ¬ агЄ®ў®¤бвў
€§гзЁвм ЇаЁўҐ¤Ґл© ⥮аҐвЁзҐбЄЁ© ¬ вҐаЁ «
‚лЇ®«Ёвм Їа ЄвЁзҐбЄго з бвм а Ў®вл
‘®бв ўЁвм ®взҐв ® а Ў®вҐ
ЏаҐ¤кпўЁвм १г«мв вл а Ў®вл ЇаҐЇ®¤ ў ⥫о
Џа®Ја ¬¬ Ё¬ҐҐв е а ЄвҐа г祡®©, Ї®н⮬㠨Є ЄЁе Їа®ўҐа®Є Ё«Ё ॠЄжЁ©
ЇаҐўл襨Ґ ¤Ё Ї §® Ё«Ё ®иЁЎЄЁ ўў®¤ ЇаҐ¤гб¬ ваЁў вм Ґ б«Ґ¤гҐв.
2. Ља вЄЁҐ ⥮аҐвЁзҐбЄЁҐ ᢥ¤ҐЁп
2.1. Љ®¬ ¤л ЇҐаҐе®¤®ў
ЏаҐ¦¤Ґ а бб¬ ваЁў «Ёбм Їа®Ја ¬¬л, Ј¤Ґ ўлЇ®«ҐЁҐ Їа®жҐбб®а®¬ Є®¬ ¤ и«® ў
бва®Ј®© Ї®б«Ґ¤®ў ⥫м®бвЁ: Є ¦¤ п б«Ґ¤гой п Є®¬ ¤ ўлЇ®«п« бм ба §г Ї®б«Ґ
Є®¬ ¤л ЇаҐ¤л¤г饩. ’ Є, ЇаЁ а бᬮв२Ё Їа®Ја ¬¬л
. . .
MOV AX,[BaseCount]
ADD AX,2
. . .
PUSH AX
. . .
Ўл« Ї®« п 㢥८бвм, зв® Є®¬ ¤ ADD ўлЇ®«Ёвбп ҐЇ®б।б⢥® Ї®б«Ґ
Є®¬ ¤л MOV, Ї®§¤ҐҐ Ўг¤Ґв ўлЇ®«Ґ Є®¬ ¤ PUSH.
…б«Ё Ўл нвЁ¬ ўбҐ ®Ја ЁзЁў «®бм, в® Їа®Ја ¬¬л Ўл«Ё Ўл ¤®ў®«м® ЇаЁ¬ЁвЁўл.
‚Ґбм¬ ў ¦® «ЁзЁҐ Є®¬ ¤, Є®в®алҐ ¬®Јгв ўлЇ®«пвм ў Їа®Ја ¬¬Ґ ЇҐаҐе®¤л
(ўҐвў«ҐЁп) Є®¬ ¤л, Ґ б«Ґ¤гойЁҐ § ⥪г饩 Є®¬ ¤®© ҐЇ®б।б⢥®.
‘в®«м ¦Ґ ў ¦ ў®§¬®¦®бвм ўлЇ®«ҐЁп ў Їа®Ја ¬¬Ґ гб«®ў®Ј® ЇҐаҐе®¤ - ў
§ ўЁбЁ¬®бвЁ ®в б®бв®пЁп Їа®жҐбб®а Ё«Ё ®в १г«мв в ®ЇҐа жЁЁ.
Ќ Ў®а Є®¬ ¤ Їа®жҐбб®а ᮤҐа¦Ёв Є®¬ ¤л ¤«п ®Ў®Ёе ўЁ¤®ў ЇҐаҐе®¤®ў. Љ ⮬㠦Ґ
ЇаҐ¤гᬮваҐл бЇҐжЁ «млҐ Є®¬ ¤л ЇҐаҐе®¤®ў ¤«п ®ЎҐбЇҐзҐЁп Ї®ўв®а塞®©
®Ўа Ў®вЄЁ ®ЇаҐ¤Ґ«Ґ®© з бвЁ Є®¤ .
ЃҐ§гб«®ўлҐ ЇҐаҐе®¤л
Ћб®ў п Є®¬ ¤ ЇҐаҐе®¤ ў Ў®аҐ в ЄЁе Є®¬ ¤ - Є®¬ ¤ JMP. Ћ гЄ §лў Ґв,
зв® ўб«Ґ¤ § Ґ© 㦮 ўлЇ®«ЁвмЄ®¬ ¤г, гЄ§ го ¬ҐвЄ®©. Ќ ЇаЁ¬Ґа, Ї®б«Ґ
§ ўҐаиҐЁп ўлЇ®«ҐЁп да Ј¬Ґв Їа®Ја ¬¬л:
. . .
MOV AX,1
JMP AddTwoToAX
AddOneToAx:
INC AX
JMP AXIsSet
AddTwoToAX:
ADD AX,2
AXIsSet:
. . .
ॣЁбва AX Ўг¤Ґв ᮤҐа¦ вм § 票Ґ 3, Є®¬ ¤л ADD Ё JMP, б«Ґ¤гойЁҐ § ¬ҐвЄ®©
AddOneToAX, ЁЄ®Ј¤ Ґ Ўг¤гв ўлЇ®«пвмбп. ‡¤Ґбм Є®¬ ¤
JMP AddTwoToAX
гЄ §лў Ґв Їа®жҐбб®аг, з⮠㦮 гбв ®ўЁвм гЄ § вҐ«м Є®¬ ¤ IP ў § 票Ґ
б¬ҐйҐЁп ¬ҐвЄЁ AddTwoToAX; Ї®н⮬г б«Ґ¤го饩 ўлЇ®«пҐ¬®© Є®¬ ¤®© Ўг¤Ґв Є®¬ ¤
ADD AX,2
€®Ј¤ б®ў¬Ґбв® б Є®¬ ¤®© JMP ЁбЇ®«м§гҐвбп ®ЇҐа в®а SHORT. „«п гЄ § Ёп
楫Ґўго ¬ҐвЄг Є®¬ ¤ JMP ®Ўлз® ЁбЇ®«м§гҐв 16-ЎЁв®ў®Ґ ᬥ饨Ґ. ЋЇҐа в®а SHORT
гЄ §лў Ґв бᥬЎ«Ґаг, з⮠㦮 ЁбЇ®«м§®ў вм Ґ 16-ЎЁв®ў®Ґ, 8-ЎЁв®ў®Ґ
ᬥ饨Ґ (зв® Ї®§ў®«пҐв бнЄ®®¬Ёвм ў Є®¬ ¤Ґ JMP ®¤Ё Ў ©в). Ќ ЇаЁ¬Ґа,
Ї®б«Ґ¤Ё© да Ј¬Ґв Їа®Ја ¬¬л ¬®¦® ЇҐаҐЇЁб вм в Є, зв® ® бв Ґв ¤ў Ў ©в
Є®а®зҐ:
. . .
MOV AX,1
JMP SHORT AddTwoToAX
AddOneToAx:
INC AX
JMP SHORT AXIsSet
AddTwoToAX:
ADD AX,2
AXIsSet:
. . .
ЌҐ¤®бв в®Є ЁбЇ®«м§®ў Ёп ®ЇҐа в®а SHORT б®бв®Ёв ў ⮬, зв® Є®а®вЄЁҐ ЇҐаҐе®¤л
¬®Јгв ЇҐаҐ¤ ў вм гЇа ў«ҐЁҐ ¬ҐвЄЁ, ®вбв®пйЁҐ ®в Є®¬ ¤л JMP Ґ ¤ «ҐҐ 祬
128 Ў ©в®ў, Ї®н⮬㠨®Ј¤ бᥬЎ«Ґа ¬®¦Ґв б®®Ўй вм, зв® ¬ҐвЄ Ґ¤®бвЁ¦Ё¬ б
Ї®¬®ймо Є®а®вЄ®Ј® ЇҐаҐе®¤ . Љ ⮬㠦Ґ ®ЇҐа в®а SHORT Ё¬ҐҐв б¬лб« ЁбЇ®«м§®ў вм
«Ёим ¤«п ббл«®Є ўЇҐаҐ¤, Ї®бЄ®«мЄг ¤«п ЇҐаҐе®¤®ў § ¤ ( ЇаҐ¤иҐбвўгойЁҐ ¬ҐвЄЁ)
бᥬЎ«Ґа ўв®¬ вЁзҐбЄЁ ЁбЇ®«м§гҐв Є®а®вЄЁҐ ЇҐаҐе®¤л, Ґб«Ё ¬ҐвЄг ¬®¦®
ЇҐаҐ©вЁ б Ї®¬®ймо Є®а®вЄ®Ј® ЇҐаҐе®¤ , Ё ¤«ЁлҐ - ў Їа®вЁў®¬ б«гз Ґ.
Љ®¬ ¤г JMP ¬®¦® ЁбЇ®«м§®ў вм ¤«п ЇҐаҐе®¤ ў ¤агЈ®© ᥣ¬Ґв Є®¤ , § Јаг¦ п ў
®¤®© Є®¬ ¤Ґ ॣЁбва CS Ё ॣЁбва IP. Ќ ЇаЁ¬Ґа, ў Їа®Ја ¬¬Ґ:
. . .
CSeg1 SEGMENT
ASSUME CS:Cseg1
. . .
FarTarget LABEL FAR
. . .
CSeg1 ENDS
. . .
CSeg2 SEGMENT
ASSUME CS:CSeg2
. . .
JMP FarTarget ; ЇҐаҐе®¤ ¤ «мҐЈ® вЁЇ
. . .
CSeg2 ENDS
. . .
ўлЇ®«пҐвбп ЇҐаҐе®¤ ¤ «мҐЈ® вЁЇ .
…б«Ё 㦮, зв®Ўл ¬ҐвЄ ЇаЁг¤ЁвҐ«м® Ї®Ё¬ « бм Є Є ¬ҐвЄ ¤ «мҐЈ® вЁЇ , ¬®¦®
ЁбЇ®«м§®ў вм ®ЇҐа в®а FAR PTR. Ќ ЇаЁ¬Ґа, ў® да Ј¬ҐвҐ Їа®Ја ¬¬л:
. . .
JMP FAR PTR NearLabel
NOP
NearLabel:
. . .
ўлЇ®«пҐвбп ЇҐаҐе®¤ ¤ «мҐЈ® вЁЇ ¬ҐвЄг NearLabel, е®вп нв ¬ҐвЄ 室Ёвбп
ў ⮬ ¦Ґ ᥣ¬ҐвҐ Є®¤ , зв® Є®¬ ¤ JMP.
Ќ Є®Ґж, ¬®¦® ўлЇ®«Ёвм ЇҐаҐе®¤ Ї® ¤аҐбг, § ЇЁб ®¬г ў ॣЁбвॠЁ«Ё ў
ЇҐаҐ¬Ґ®© Ї ¬пвЁ. Ќ ЇаЁ¬Ґа:
. . .
MOV AX,OFFSET TestLabel
JMP AX
. . .
TestLabel:
. . .
‡¤Ґбм ўлЇ®«пҐвбп ЇҐаҐе®¤ ¬ҐвЄг TestLabel, в Є ¦Ґ Є Є ў б«Ґ¤го饬 да Ј¬ҐвҐ:
. .
.DATA
JumpTarget DW TestLabel
. .
.CODE
. . .
JMP [JumpTarget]
. . .
TestLabel:
. . .
ЏаЁ¬Ґз ЁҐ. ‡¤Ґбм ЁбЇ®«м§®ў л ¤ЁаҐЄвЁўл TASM ¤«п ०Ё¬ Ideal, а Ў®в б Є®Ё¬
Ґ ЇаҐ¤Ї®« Ј Ґвбп
“б«®ўлҐ ЇҐаҐе®¤л
ЋЇЁб лҐ Є®¬ ¤л ЇҐаҐе®¤®ў - «Ёим з бвм в®Ј®, зв® вॡгҐвбп ¤«п ЇЁб Ёп
Їа®Ја ¬¬. ЌҐ®Ўе®¤Ё¬ ў®§¬®¦®бвм ЇЁб вм Їа®Ја ¬¬л, ¬®ЈгйЁҐ ЇаЁЁ¬ вм аҐиҐЁп.
ќв® ¤Ґ« Ґвбп б Ї®¬®ймо Є®¬ ¤ гб«®ўле ЇҐаҐе®¤®ў.
Љ®¬ ¤ гб«®ў®Ј® ЇҐаҐе®¤ ¬®¦Ґв ўлЇ®«пвм Ё«Ё Ґ ўлЇ®«пвм ЇҐаҐе®¤ 楫Ґўго
¬ҐвЄг - ў § ўЁбЁ¬®бвЁ ®в б®бв®пЁп ॣЁбва ЇаЁ§ Є®ў (д« Ј®ў). ђ бᬮваЁ¬
ЇаЁ¬Ґа:
. .
MOV AH,1 ; дгЄжЁп DOS ўў®¤ б Є« ўЁ вгал
INT 21H ; Ї®«гзЁвм б«Ґ¤гойго ¦ вго Є« ўЁиг
CMP AL,'A' ; Ўл« ¦ в ЎгЄў "A"?
JE AWasTyped ; ¤ , ®Ўа Ў®в вм ҐҐ
MOV [TampByte], AL ; Ґв, б®еа Ёвм бЁ¬ў®«
. . .
AWasTyped:
PUSH AX ; б®еа Ёвм бЁ¬ў®« ў б⥪Ґ
. . .
‘ з « ў Їа®Ја ¬¬Ґ б Ї®¬®ймо дгЄжЁЁ DOS (Ї® ЇаҐалў Ёо INT 21H)
ў®бЇаЁЁ¬ Ґвбп ¦ в п Є« ўЁи . ‡ ⥬ ¤«п ба ўҐЁп ўўҐ¤Ґ®Ј® бЁ¬ў®« б
бЁ¬ў®«®¬ A ЁбЇ®«м§гҐвбп Є®¬ ¤ CMP. ЏаЁ§ Є г«п гбв ў«Ёў Ґвбп, «Ёим Ґб«Ё
ॣЁбва AL ᮤҐа¦Ёв бЁ¬ў®« A.
‡ ¬ҐвмвҐ, зв® Є®¬ ¤ JE Ґбвм Є®¬ ¤ гб«®ў®Ј® ЇҐаҐе®¤ , Є®в®а п ўлЇ®«пҐв
ЇҐаҐ¤ зг гЇа ў«ҐЁп, «Ёим Ґб«Ё ЇаЁ§ Є г«п а ўҐ 1. € зҐ ўлЇ®«пҐвбп Є®¬ ¤ ,
ҐЇ®б।б⢥® б«Ґ¤гой п § JE (§¤Ґбм - Є®¬ ¤ MOV). ЏаЁ§ Є г«п Ўг¤Ґв
гбв ®ў«Ґ «Ёим ЇаЁ ¦ вЁЁ Є« ўЁиЁ A, Ё «Ёим в®Ј¤ Їа®жҐбб®а ЇҐаҐ©¤Ґв Є
ўлЇ®«ҐЁо Є®¬ ¤л б ¬ҐвЄ®© AWasTyped - Є®¬ ¤л PUSH.
Ќ Ў®а Є®¬ ¤ Їа®жҐбб®а ЇаҐ¤гб¬ ваЁў Ґв а §®®Ўа §лҐ Є®¬ ¤л гб«®ўле
ЇҐаҐе®¤®ў, зв® Ї®§ў®«пҐв ўлЇ®«Ёвм ЇҐаҐе®¤ Ї®звЁ Ї® «оЎ®¬г ЇаЁ§ Єг Ё«Ё
Є®¬ЎЁ жЁЁ ЇаЁ§ Є®ў. Њ®¦® ўлЇ®«Ёвм гб«®ўл© ЇҐаҐе®¤ Ї® б®бв®пЁо г«п,
ЇҐаҐ®б , Ї® § Єг, Ї® ЇҐаҐЇ®«ҐЁо Ё Ї® Є®¬ЎЁ жЁЁ ЇаЁ§ Є®ў, Ї®Є §лў ойЁе
१г«мв вл ®ЇҐа жЁ© зЁбҐ« б® § Є ¬Ё. ЏҐаҐзҐм ®б®ўле Є®¬ ¤ гб«®ўле
ЇҐаҐе®¤®ў ¤ ў в Ў«ЁжҐ Ё¦Ґ.
Љ®¬ ¤л гб«®ўле ЇҐаҐе®¤®ў ’ Ў«Ёж
-----------------------------------------------------------------
Ќ §ў ЁҐ ‡ 票Ґ Џа®ўҐапҐ¬лҐ д« ЈЁ
-----------------------------------------------------------------
JB/JNAE ЏҐаҐ©вЁ, Ґб«Ё ¬ҐмиҐ / ЇҐаҐ©вЁ, Ґб«Ё CF = 1
Ґ Ў®«миҐ Ё«Ё а ў®
JAE/JNB ЏҐаҐ©вЁ, Ґб«Ё Ў®«миҐ Ё«Ё а ў® / CF = 0
ЇҐаҐ©вЁ, Ґб«Ё Ґ ¬ҐмиҐ
JBE/JNA ЏҐаҐ©вЁ, Ґб«Ё ¬ҐмиҐ Ё«Ё а ў® / CF = 1 Ё«Ё ZF = 1
ЇҐаҐ©вЁ, Ґб«Ё Ґ Ў®«миҐ
JA/JNBE ЏҐаҐ©вЁ, Ґб«Ё Ў®«миҐ / ЇҐаҐ©вЁ, Ґб«Ё CF = 0 Ё ZF = 0
Ґ ¬ҐмиҐ Ё«Ё а ў®
JE/JZ ЏҐаҐ©вЁ, Ґб«Ё а ў® ZF = 1
JNE/JNZ ЏҐаҐ©вЁ, Ґб«Ё Ґ а ў® ZF = 0
JL/JNGE ЏҐаҐ©вЁ, Ґб«Ё ¬ҐмиҐ зҐ¬ / ЇҐаҐ©вЁ, SF = OF
Ґб«Ё Ґ Ў®«миҐ зҐ¬ Ё«Ё а ў®
JGE/JNL ЏҐаҐ©вЁ, Ґб«Ё Ў®«миҐ зҐ¬ Ё«Ё а ў® / SF = OF
ЇҐаҐ©вЁ, Ґб«Ё Ґ ¬ҐмиҐ зҐ¬
JLE/JNLE ЏҐаҐ©вЁ, Ґб«Ё ¬ҐмиҐ зҐ¬ Ё«Ё а ў® / ZF = 1 Ё«Ё SF = OF
ЇҐаҐ©вЁ, Ґб«Ё Ґ Ў®«миҐ, 祬
JG/JNLE ЏҐаҐ©вЁ, Ґб«Ё Ў®«миҐ зҐ¬ / ЇҐаҐ©вЁ, ZF = 0 Ё«Ё SF = OF
Ґб«Ё Ґ ¬ҐмиҐ зҐ¬ Ё«Ё а ў®
JP/JPE ЏҐаҐ©вЁ Ї® зҐв®бвЁ PF = 1
JNP/JPO ЏҐаҐ©вЁ Ї® ҐзҐв®бвЁ PF = 0
JS ЏҐаҐ©вЁ Ї® § Єг SF = 1
JNS ЏҐаҐ©вЁ, Ґб«Ё § Є Ґ гбв ®ў«Ґ SF = 0
JC ЏҐаҐ©вЁ ЇаЁ «ЁзЁЁ ЇҐаҐ®б CF = 1
JNC ЏҐаҐ©вЁ ЇаЁ ®вбгвбвўЁЁ ЇҐаҐ®б CF = 0
JO ЏҐаҐ©вЁ Ї® ЇҐаҐЇ®«ҐЁо OF = 1
JNO ЏҐаҐ©вЁ ЇаЁ ®вбгвбвўЁЁ ЇҐаҐЇ®«ҐЁп OF = 0
-----------------------------------------------------------------
CF - д« Ј ЇҐаҐ®б , SF - д« Ј § Є , OF - д« Ј ЇҐаҐЇ®«ҐЁп,
ZF - д« Ј г«п, PF - д« Ј зҐв®бвЁ
ЌҐб¬®вап ЈЁЎЄ®бвм, Є®¬ ¤л гб«®ў®Ј® ЇҐаҐе®¤ Ё¬Ґов бҐамҐ§лҐ ®Ја ЁзҐЁп,
ЁЎ® ЇҐаҐе®¤л ў Ёе ўбҐЈ¤ Є®а®вЄЁҐ: гЄ § п ¬ҐвЄ ¤®«¦ ®вбв®пвм ®в Є®¬ ¤л
ЇҐаҐе®¤ Ґ Ў®«ҐҐ 祬 128 Ў ©в®ў. Ќ ЇаЁ¬Ґа, Ґў®§¬®¦® бᥬЎ«Ёа®ў вм:
. . .
JumpTarget:
. . .
DB 1000 DUP (?)
. . .
DEC AX
JNZ JumpTarget
. . .
ЁЎ® ¬ҐвЄ JumpTarget ®вбв®Ёв ®в Є®¬ ¤л JNZ Ў®«ҐҐ 祬 1000 Ў ©в®ў. ‚ в Є®¬
б«гз Ґ 㦮 ᤥ« вм б«Ґ¤го饥:
. . .
JumpTarget:
. . .
DB 1000 DUP (?)
. . .
DEC AX
JNZ SkipJump
JMP JumpTarget
SkipJump:
. . .
Ј¤Ґ гб«®ўл© ЇҐаҐе®¤ ЇҐаҐе®¤ ЇаЁ¬ҐпҐвбп, зв®Ўл ®ЇаҐ¤Ґ«Ёвм, 㦮 «Ё ўлЇ®«Ёвм
¤«Ёл© ЎҐ§гб«®ўл© ЇҐаҐе®¤.
2.2. ЏаЁ¬Ґа Їа®Ја ¬¬л ¤«п 16-ЎЁв®ў®Ј® а §ўҐвў«Ґ®Ј® ¬ ⥬ вЁзҐбЄ®Ј® ўлзЁб«ҐЁп
Џа®Ја ¬¬лҐ ⥪бвл ўбв ў«Ґл ў ®Ўа ¬«ҐЁҐ - б Їа®ЇгбЄ®¬ ҐЈ® з бвЁ, ® 祬 Ўл«®
бЄ § ® ЇаЁ ®ЇЁб ЁЁ ®Ўа ¬«ҐЁп.
TITLE ALGBRAN (EXE) ; ўл§®ў Їа®Ја ¬¬л
;----------------------------------------
STACKSG SEGMENT PARA STACK 'Stack'
DW 32 DUP(?)
STACKSG ENDS
;----------------------------------------
DATASG SEGMENT PARA 'Data'
UVAR DW (?) ; ЇҐаҐ¬Ґ п U
XVAR DW ??? ; ЇҐаҐ¬Ґ п X
YVAR DW ??? ; ЇҐаҐ¬Ґ п Y
ASCVAL DB ' ','$' ; и Ў«® ўлў®¤
AUX DW (?) ; ўбЇ®¬®Ј ⥫м п
XY DW (?) ; ¤«п Їа®Ё§ўҐ¤ҐЁп XY
CON DW 1 ; Є®бв в -Ґ¤ЁЁж
EXIT DW (?) ; ўл室 Ї® «оЎ®© Є« ўЁиҐ
DATASG ENDS
;----------------------------------------
CODESG SEGMENT PARA 'Code'
BEGIN PROC FAR
ASSUME CS:CODESG, DS:DATASG, SS:STACKSG
PUSH DS
XOR AX,AX ; § ЇЁб вм ў б⥪
PUSH AX ; г«Ґў®© ¤аҐб
MOV AX,DATASG ; Ї®¬ҐбвЁвм ¤аҐб
MOV DS,AX ; DATASG ў ॣЁбва DS
LEA SI,ASCVAL
;----------------------------------------
; Џа®Ја ¬¬ ўлзЁб«ҐЁп ўла ¦ҐЁп
;
; U = (X + Y)^2 - XY, Ґб«Ё XY > 0
; U = (X + Y)^2 + XY, Ґб«Ё XY < 0
; U = (X + Y)^2 + 1, Ґб«Ё XY = 0
;
;----------------------------------------
; ўлзЁб«ҐЁҐ Єў ¤а в б㬬л X Ё Y
;----------------------------------------
MOV AX,XVAR ; ўлзЁб«ҐЁҐ X+Y
ADD AX,YVAR
MOV AUX,AX ; § Ї®¬Ё ЁҐ б㬬л
IMUL AUX ; ў®§ўҐ¤ҐЁҐ ў Єў ¤а в
MOV AUX,AX ; § Ї®¬Ё ЁҐ १г«мв в
;----------------------------------------
; ўлзЁб«ҐЁҐ Їа®Ё§ўҐ¤ҐЁп X Ё Y
;----------------------------------------
MOV AX,XVAR ; ўлзЁб«ҐЁҐ XY
MOV XY,AX
MOV AX,YVAR
IMUL XY
MOV XY,AX ; § Ї®¬Ё ЁҐ XY
;----------------------------------------
; Їа®ўҐаЄ § зҐЁп Їа®Ё§ўҐ¤ҐЁп
;----------------------------------------
JZ ZERO
JS MINUS
JMP PLUS
;----------------------------------------
; ўлзЁб«ҐЁҐ १г«мв в
;----------------------------------------
MINUS:
MOV AX,AUX ; ў®ббв ®ў«ҐЁҐ § 票п
ADD AX,XY ; б«®¦ҐЁҐ б Їа®Ё§ўҐ¤ҐЁҐ¬
JMP RES ; ЇҐаҐе®¤ Є § ўҐа襨о
PLUS:
MOV AX,AUX ; ў®ббв ®ў«ҐЁҐ § 票п
SUB AX,XY ; ўлзЁв ЁҐ Їа®Ё§ўҐ¤ҐЁп
JMP RES ; ЇҐаҐе®¤ Є § ўҐа襨о
ZERO:
MOV AX,AUX ; ў®ббв ®ў«ҐЁҐ § 票п
ADD AX,CON ; б«®¦ҐЁҐ б Є®бв в®©
RES: ; § ўҐа襨Ґ ўлзЁб«ҐЁп
MOV UVAR,AX ; § Ї®¬Ё ЁҐ १г«мв в
;----------------------------------------
; ўл§®ў Ї®¤Їа®Ја ¬¬л ўлў®¤ १г«мв в
;----------------------------------------
CALL SCRLIN ; ўл§®ў Ї®¤Їа®Ја ¬¬л
RET ; § ўҐа襨Ґ Їа®Ја ¬¬л
BEGIN ENDP
CODESG ENDS
END BEGIN
3. ‘®¤Ґа¦ ЁҐ ®взҐв
1) ®¬Ґа Ё §ў ЁҐ а Ў®вл
2) 楫м а Ў®вл
3) Ё¤ЁўЁ¤г «м®Ґ § ¤ ЁҐ а Ў®вг
4) гЄ § ЁҐ Ё¬Ґ Ёб室®Ј® Ё ЁбЇ®«пҐ¬®Ј® д ©«®ў
5) ўлў®¤л
ЋвзҐв ЇаҐ¤бв ў«пҐвбп ў ўЁ¤Ґ ⥪бв®ў®Ј® д ©« , ўлЇ®«Ґ®Ј® ў д®а¬ ⥠DOS
(Є®¤®ў п бва Ёж 866). Љ ®взҐвг ¤®«¦л ЇаЁ« Ј вмбп д ©« Ёб室®Ј® Є®¤
Їа®Ја ¬¬л Ё а Ў®зЁ© ЁбЇ®«пҐ¬л© д ©«.
4. ‡ ¤ ЁҐ а Ў®вг
1. ‘Є®ЇЁа®ў вм Ё§ гЄ § ®Ј® Є в «®Ј ⥪бв ®Ўа ¬«ҐЁп Їа®Ја ¬¬л
EXE_FORM.ASM, Ё§¬ҐЁў Ґ¬г Ё¬п Ї® гᬮв२о, ў бў®© а Ў®зЁ© Є в «®Ј.
2. ‚ўҐбвЁ ў нв®в ⥪бв г¦лҐ ¤®Ї®«ҐЁп Ё Ё§¬ҐҐЁп.
3. ‚бв ўЁвм ў ⥪бв Їа®Ја ¬¬л § 票п г¦ле ЇҐаҐ¬Ґле Ї® б®Ўб⢥®¬г ўлЎ®аг
(® Ґ б«ЁиЄ®¬ ЇаЁ¬ЁвЁўлҐ). …б«Ё Їа®Ја ¬¬ ᮤҐа¦Ёв Є®¬ ¤л ¤Ґ«ҐЁп,
б«Ґ¤гҐв Ї®¤®Ўа вм нвЁ § 票п в Є, зв®Ўл ¤Ґ«ҐЁҐ ¤ ў «® 楫®зЁб«Ґл©
१г«мв в. Ќг¦® б«Ґ¤Ёвм, зв®Ўл ўбҐ Ёбе®¤лҐ Ё Їа®¬Ґ¦гв®злҐ § зҐЁп Ґ
ЇаҐўли «Ё ЇаҐ¤Ґ«®ў ¤ўгеЎ ©в®ўле зЁбҐ«.
4. ЂбᥬЎ«Ёа®ў вм Їа®Ја ¬¬г Ё гЎҐ¤Ёвмбп ў ®вбгвбвўЁЁ ®иЁЎ®Є.
5. ‘Є®¬Ї®®ў вм Їа®Ја ¬¬г.
6. ‚лЇ®«Ёвм Ї®«гзҐл© EXE-¬®¤г«м Ё Їа®ўҐаЁвм १г«мв в ўлзЁб«ҐЁ©.
‡ ЇЁб вм १г«мв в ўлзЁб«ҐЁ© ў ®взҐв.
5. ‚ аЁ вл § ¤ Ё©
01. (X + Y)^2 - 2*X*Y, Ґб«Ё X*Y > 0
(X + Y)^2 + X*Y, Ґб«Ё X*Y < 0
(X + Y) + 1, Ґб«Ё X*Y = 0
02. A*X*Y + (X^2 - Y)^2, Ґб«Ё X/Y > 0
A*X*Y + (X*Y^2 ), Ґб«Ё X/Y < 0
(X^2 + Y^2), Ґб«Ё X = 0
11, Ґб«Ё Y = 0
03. X^2 + Y^2 + 3*X, Ґб«Ё X - Y = 0
(X - Y)^2 + 2*X, Ґб«Ё X - Y > 0
(Y - X)^2 + X, Ґб«Ё X - Y < 0
04. X + Y/2, Ґб«Ё Y зҐв®Ґ
2*X + Y, Ґб«Ё Y ҐзҐв®Ґ
3*X + 7, Ґб«Ё Y = 0
05. (X - Y)^2 + X + Y, Ґб«Ё X > Y
(Y - X)^2 - X + Y, Ґб«Ё X < Y
X + Y + 2, Ґб«Ё X = Y
06. 2*X^3 + 3*Y^2, Ґб«Ё X < Y
3*X^2 + 2*Y^3, Ґб«Ё X > Y
3*X^3 + 12, Ґб«Ё X = Y
07. 3*|X| + 2*|Y| - |Z|
08. 100*X + 200*Y, Ґб«Ё |X*Y| < 10
10*X + 2*Y, Ґб«Ё |X*Y| > 10
20*(X + Y), Ґб«Ё |X*Y| = 10
09. max(X, Y) - max(Y, Z)
10. min(X + Y, Y - Z)
11. X*Y*Z - (X + Y + Z), Ґб«Ё max(X, Y) > 10
X*Y*Z + (X + Y + Z), Ґб«Ё max(X, Y) =< 10
12. max(min(X - Y, Y - X), Y)
13. max(X, Y, Z, V)
14. min(|X|, |Y|)
15. A*X/Y, Ґб«Ё X ¤Ґ«Ёвбп Y 楫®
A*X + Y, Ё зҐ
16. X^2 *Y^2, Ґб«Ё X < 10 Ё Y < 10
X^2 *Y, Ґб«Ё X < 10 Ё Y > 10
X*Y^2 , Ґб«Ё X > 10 Ё Y < 10
17. X^2 + Y^2, Ґб«Ё 10 < X*Y < 20
X + Y, Ґб«Ё X*Y > 20 Ё«Ё X*Y < 10
18. 3*X*Y, Ґб«Ё X < 10 Ё«Ё Y < 10
2*(X + Y), Ґб«Ё X > 10 Ё Y > 10
6*X + 7*Y, Ё зҐ
19. 3*X^3 + 3*Y^2, Ґб«Ё X > |Y|
3*X^2 + 3*Y^3, Ґб«Ё X =< |Y|
20. min(X, Y, |Z|)
21. X + Y + 1, Ґб«Ё X Ґ ¤Ґ«Ёвбп Y 楫®
X/Y + 7, Ё зҐ
22. (X + Y)^2, Ґб«Ё X >= 0 Ё Y >= 0
(|X| + |Y|), Ё зҐ
23. max(X - Y, Y - X)
24. (X - Y)*(V - Z), Ґб«Ё X Ґ а ў® Y Ё Y Ґ а ў® Z
X + Y + V + Z, Ё зҐ
25. | |X| - |Y| |
26. |max(X, Y)| + X + Y
27. |min((X + Y), X*Y)|
28. min(X - Y, 0) + max(Y - X, 0)
29. max(X, 10)*min(Y, 20) + 1
30. 2*X^2 + |Y|, Ґб«Ё Y < 0
|X| + Y^2, Ґб«Ё X < 0
3*X*Y + |Y|, Ґб«Ё X = 0
31. |X + Y| - max(X,Y), Ґб«Ё X > Y
|X + Y| - min(X,Y), Ґб«Ё X <= Y
32. U = (X + Y) - X*Y, Ґб«Ё X + Y > 0
U = (X + Y) + X*Y, Ґб«Ё X + Y < 0
U = (X + Y)^2 + 1, Ґб«Ё X + Y = 0
**********************************************************************
**********************************************************************