Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
6
Добавлен:
25.02.2016
Размер:
17.6 Кб
Скачать
**********************************************************************
‘€‘’…ЊЌЋ… ЏђЋѓђЂЊЊ€ђЋ‚ЂЌ€…
**********************************************************************

*******************
*** ’Ґ¬  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

**********************************************************************
**********************************************************************