Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы по СП (1-20) / 04 / ASM_04
.txt **********************************************************************
‘€‘’…ЊЌЋ… ЏђЋѓђЂЊЊ€ђЋ‚ЂЌ€…
**********************************************************************
*******************
*** ’Ґ¬ 04 ***
*******************
**********************************************************************
‹Ћѓ€—…‘Љ€… Ё ‘„‚€ѓЋ‚›… ЉЋЊЂЌ„›
**********************************************************************
–Ґ«м а Ў®вл:
Ќ ЇЁб вм п§лЄҐ бᥬЎ«Ґа , ўлЇ®«Ёвм Ё Ёбб«Ґ¤®ў вм б Ї®¬®ймо ®в« ¤зЁЄ
Їа®Ја ¬¬г ¤«п а Ў®вл б «®ЈЁзҐбЄЁ¬Ё Є®¬ ¤ ¬Ё Ё Є®¬ ¤ ¬Ё б¤ўЁЈ
1. ‡ ¤ ЁҐ ЇаҐ¤ў аЁвҐ«мго Ї®¤Ј®в®ўЄг
Ћ§ Є®¬Ёвмбп б ᮤҐа¦ ЁҐ¬ агЄ®ў®¤бвў
€§гзЁвм ЇаЁўҐ¤Ґл© ⥮аҐвЁзҐбЄЁ© ¬ вҐаЁ «
‚лЇ®«Ёвм Їа ЄвЁзҐбЄго з бвм а Ў®вл
‘®бв ўЁвм ®взҐв ® а Ў®вҐ
ЏаҐ¤кпўЁвм १г«мв вл а Ў®вл ЇаҐЇ®¤ ў ⥫о
2. Ља вЄЁҐ ⥮аҐвЁзҐбЄЁҐ ᢥ¤ҐЁп
2.1. ЋЇЁб ЁҐ а Ў®вл
„«п ЁбЇ®«м§®ў Ёп Їа®Ја ¬¬л-®в« ¤зЁЄ Adfpro 㦮 бЄ®ЇЁа®ў вм ў
Є в «®Ј б нв®© Їа®Ја ¬¬®© бЄ®ЇЁа®ў вм бᥬЎ«Ёа®ў го Ё
бЄ®¬Ї®®ў го Їа®Ја ¬¬г ў ўЁ¤Ґ ЁбЇ®«пҐ¬®Ј® ¬®¤г«п. Љ®¬ ¤ § ЇгбЄ
®в« ¤зЁЄ Ё¬ҐҐв ўЁ¤
Adfpro Ё¬п_Їа®Ја ¬¬л
ђ Ў®в б ®в« ¤зЁЄ®¬ Adfpro Ґб«®¦ Ё ўҐ¤Ґвбп б Ї®¬®ймо ¬Ґо Ё Є®¬ ¤.
ЏаЁ а Ў®вҐ нЄа ¬®¦® ўлў®¤Ёвм Ї®¤бЄ §Єг. ‘«Ґ¤гҐв а §®Ўа вмбп б
®в« ¤зЁЄ®¬ ў а ¬Є е нв®Ј® § ¤ Ёп б ¬®бв®п⥫м®. „«п ўл室 Ё§
®в« ¤зЁЄ ЁбЇ®«м§гҐвбп Є®¬ ¤ quit.
2.2. ’ҐЄбвл Їа®Ја ¬¬-®Ўа §ж®ў
ЏаЁ¬Ґал ¤®ЇгбвЁ¬ле Є®¬ ¤ б ҐЇ®б।б⢥묨 ®ЇҐа ¤ ¬Ё - Є®¬ ¤
б¤ўЁЈ®ў Ё «®ЈЁзҐбЄЁе.
ЏђЋѓђЂЊЊЂ-ЋЃђЂ‡…–
________________________________________________________________
TITLE EXIMM (EXE) ЏаЁ¬Ґа ҐЇ®б।б⢥ле ®ЇҐа ¤®ў
DATASG SEGMENT PARA 'Data'
FLD1 DB ?
FLD2 DW ?
DATASG ENDS
CODESG SEGMENT PARA 'Code'
BEGIN PROC FAR
ASSUME CS:CODESG,DS:DATASG
; ђ®в жЁп Ё б¤ўЁЈ (в®«мЄ® 1 ЎЁв):
; ---------------------------------
RCL BL,1 ; а®в жЁп ў«Ґў® б ЇҐаҐ®б®¬
RCR AH,1 ; а®в жЁп ўЇа ў® б ЇҐаҐ®б®¬
ROL FID2,1 ; а®в жЁп ў«Ґў®
ROR AL,1 ; а®в жЁп ўЇа ў®
SAL CX,1 ; б¤ўЁЈ ў«Ґў®
SAR BX,1 ; аЁд¬ҐвЁзҐбЄЁ© б¤ўЁЈ ўЇа ў®
SHR FLD1,1 ; б¤ўЁЈ ўЇа ў®
; ‹®ЈЁзҐбЄЁҐ ®ЇҐа жЁЁ:
; -------------------
AND AL,00101100B ;AND (ॣЁбва)
OR BH,2AH ;OR (ॣЁбва)
TEST BL,7AH ;TEST (ॣЁбва)
OR FLD1,23H ;XOR (Ї ¬пвм)
BEGIN ENDP
CODESG ENDS
END
________________________________________________________________
2.3. ЏаЁ¬Ґа Їа ЄвЁзҐбЄ®Ј® ЁбЇ®«м§®ў Ёп «®ЈЁзҐбЄЁе Є®¬ ¤
ЏђЋѓђЂЊЊЂ: €‡Њ…Ќ…Ќ€… ‘’ђЋ—Ќ›• Ѓ“Љ‚ ЌЂ ЏђЋЏ€‘Ќ›…
________________________________________________________________
‘гйҐбвўгов а §«ЁзлҐ ЇаЁзЁл ¤«п ЇаҐ®Ўа §®ў Ё© ¬Ґ¦¤г бва®зл¬Ё Ё Їа®ЇЁбл¬Ё
ЎгЄў ¬Ё. Ќ ЇаЁ¬Ґа, ҐЄ п Їа®Ја ¬¬ ¤®«¦ Ї®§ў®«Ёвм Ї®«м§®ў вҐ«п¬ ўў®¤Ёвм
Є®¬ ¤л Є Є Їа®ЇЁбл¬Ё, в Є Ё бва®зл¬Ё ЎгЄў ¬Ё ( ЇаЁ¬Ґа, YES Ё«Ё yes) Ё
ЇаҐ®Ўа §®ў вм Ёе ў Їа®ЇЁблҐ ¤«п Їа®ўҐаЄЁ. Џа®ЇЁблҐ ЎгЄўл ®в A ¤® Z Ё¬Ґов
иҐбв ¤ж вҐаЁзлҐ Є®¤л ®в 41 ¤® 5A, бва®злҐ - ®в 61 ¤® 7A. …¤Ёб⢥ п
а §Ёж ў ⮬, зв® Їпвл© ЎЁв а ўҐ 0 ¤«п § Ј« ўле ЎгЄў Ё 1 ¤«п бва®зле:
ЃЁвл: 76543210 ЃЁвл: 76543210
ЃгЄў A: 01000001 ЃгЄў a: 01100001
ЃгЄў Z: 01011010 ЃгЄў z: 01111010
ЏаЁўҐ¤Ґ п Їа®Ја ¬¬ -®Ўа §Ґж ЇаҐ®Ўа §гҐв ¤ лҐ ў Ї®«Ґ TITLEX Ё§ бва®зле
ЎгЄў ў Їа®ЇЁблҐ, зЁ п б ¤аҐб TITLEX+1. Џа®Ја ¬¬ ЁЁжЁ «Ё§ЁагҐв ॣЁбва
BX ¤аҐб®¬ TITLEX+1 Ё ЁбЇ®«м§гҐв ҐЈ® ¤«п ЇҐаҐбл«ЄЁ бЁ¬ў®«®ў ў ॣЁбва AH,
зЁ п б TITLEX+1. …б«Ё Ї®«г祮Ґ § 票Ґ «Ґ¦Ёв ў ЇаҐ¤Ґ« е ®в иҐбв. 61 Ё
¤® 7A, в® Є®¬ ¤ AND гбв ў«Ёў Ґв ЎЁв 5 ў 0:
AND AH,11011111B
‚ᥠᨬў®«л, ®в«ЁзлҐ ®в бва®зле ЎгЄў (®в a ¤® z), Ґ Ё§¬Ґповбп. €§¬ҐҐлҐ
бЁ¬ў®«л § бл« овбп ®Ўа в® ў ®Ў« бвм TITLEX, § 票Ґ ў ॣЁбвॠBX
㢥«ЁзЁў Ґвбп ¤«п ®зҐаҐ¤®Ј® бЁ¬ў®« Ё Їа®Ёб室Ёв ЇҐаҐе®¤ б«Ґ¤гойЁ© жЁЄ«.
€‡Њ…Ќ…Ќ€… ‘’ђЋ—Ќ›• Ѓ“Љ‚ ЌЂ ЏђЋЏ€‘Ќ›…
________________________________________________________________
TITLE CASE (COM) ЏҐаҐЄ®¤Ёа®ўЄ ў § Ј« ўлҐ ЎгЄўл
CODESG SEGMENT PARA 'CODE'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG
ORG 100H
BEGIN: JMP MAIN
; -------------------------------------------
TITLEX DB 'Change to uppercase letters'
; -------------------------------------------
MAIN PROC NEAR
LEA BX,TITLEX+1 ; ¤аҐб ЇҐаў®Ј® бЁ¬ў®«
MOV CX,31 ; зЁб«® бЁ¬ў®«®ў
B20:
MOV AH,[BX] ; бЁ¬ў®« Ё§ TITLEX
CMP AH,61H ; Їа®ЇЁб п ЎгЄў ?
JB B30 ;
CMP AH,7AH ;
JA B30 ;
AND AH,11011111B ; ¤ - ЇаҐ®Ўа §®ў вм
MOV [BX],AH ; § ЇЁб вм ў TITLEX
B30:
INC BX ; б«Ґ¤гойЁ© бЁ¬ў®«
LOOP B20 ; Ї®ўв®аЁвм жЁЄ« 31 а §
RET
MAIN ENDP
CODESG ENDS
END BEGIN
________________________________________________________________
€бЇ®«м§гҐ¬л© в ЄЁ¬ ®Ўа §®¬ ॣЁбва BX ¤Ґ©бвўгҐв Є Є Ё¤ҐЄбл© аҐЈЁбва ¤«п
¤аҐб жЁЁ ў Ї ¬пвЁ. „«п нвЁе ¦Ґ 楫Ґ© ¬®¦® ЁбЇ®«м§®ў вм ॣЁбвал SI Ё DI.
2.4. ’ЁЇ®ў®Ґ ®Ўа ¬«ҐЁҐ Їа®Ја ¬¬
Ћ вЁЇ®ў®¬ ®Ўа ¬«ҐЁЁ Їа®Ја ¬¬ 㦥 Ј®ў®аЁ«®бм ў ⥬Ґ "03 „ў®ЁзлҐ аЁд¬ҐвЁзҐбЄЁҐ
ўлзЁб«ҐЁп - «ЁҐ©лҐ Їа®Ја ¬¬л". Ќ® §¤Ґбм ЁбЇ®«м§гҐвбп ¤агЈ®Ґ ®Ўа ¬«ҐЁҐ -
Їа®б⥩襥 - Ґ¬г ᮮ⢥вбвўгҐв д ©« LOG-FORM.ASM. ‚®в ᮤҐа¦Ё¬®Ґ нв®Ј® д ©« б
ҐЄ®в®ал¬Ё Ї®пᥨﬨ.
TITLE PROGNAME (EXE)
;----------------------------------------
STACKSG SEGMENT PARA STACK 'Stack'
DW 32 DUP (?)
STACKSG ENDS
;----------------------------------------
DATASG SEGMENT PARA 'Data'
; ... |
; ... | ‡¤Ґбм Ўг¤гв г¦лҐ ®ЇаҐ¤Ґ«ҐЁп ¤ ле
; ... |
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
;----------------------------------------
; ... |
; ... | ‡¤Ґбм Ўг¤Ґв г¦л© Їа®Ја ¬¬л© Є®¤
; ... |
RET ; § ўҐа襨Ґ Їа®Ја ¬¬л
BEGIN ENDP
CODESG ENDS
END BEGIN
ЋЎа ¬«ҐЁҐ ᮤҐа¦Ёв:
1) ®ЇаҐ¤Ґ«ҐЁҐ ᥣ¬Ґв б⥪ , ®д®а¬«Ґ®Ґ ¤ЁаҐЄвЁў ¬Ё STACKSG SEGMENT Ё
STACKSG ENDS; б ¬ ᥣ¬Ґв б®бв®Ёв Ё§ 32-е б«®ў Ї ¬пвЁ, зв® § ¤ Ґвбп
¤ЁаҐЄвЁў®© DW 32 DUP (?).
2) ®ЇаҐ¤Ґ«ҐЁҐ ᥣ¬Ґв ¤ ле, ®д®а¬«Ґ®Ґ ¤ЁаҐЄвЁў ¬Ё DATASG SEGMENT Ё
DATASG ENDS;
3) ®ЇаҐ¤Ґ«ҐЁҐ ᥣ¬Ґв Є®¤ , ®д®а¬«Ґ®Ґ ¤ЁаҐЄвЁў ¬Ё CODESG SEGMENT Ё
CODESG ENDS.
2.5. Џ®¤Ј®в®ўЄ Їа®Ја ¬¬л Є ўлЇ®«ҐЁо.
Џ®«лҐ ⥪бвл Їа®Ја ¬¬ ҐўҐ«ЁЄЁ Ё Ї®в®¬г б«Ґ¤гҐв ўўҐбвЁ Ёе б ¬®бв®п⥫м®.
ЏҐаў п Їа®Ја ¬¬ -®Ўа §Ґж
Ћ Ё¬ҐҐв вЁЇ EXE, ® Є®в®а®¬ Ё§ўҐбв® ¤®бв в®з®. ’ҐЄбв нв®© Їа®Ја ¬¬л 㦮
ўўҐбвЁ ў ®Ўа ¬«ҐЁҐ. „«п бᥬЎ«Ёа®ў Ёп Їа®Ја ¬¬л г¦ Є®¬ ¤ :
TASM.EXE /la /z /zi PROG.ASM
Ј¤Ґ PROG.ASM - гб«®ў®Ґ Ё¬п Ёб室®© Їа®Ја ¬¬л.
„«п Є®¬Ї®®ўЄЁ Їа®Ја ¬¬л г¦ Є®¬ ¤ :
TLINK.EXE PROG.OBJ, PROG-EXE
Ј¤Ґ PROG.OBJ - Ё¬п OBJ-¬®¤г«п бᥬЎ«Ёа®ў ®© Їа®Ја ¬¬л,
PROG-EXE - Ё¬п ЁбЇ®«Ё¬®© EXE-Їа®Ја ¬¬л (ЎҐ§ а биЁаҐЁп).
‚в®а п Їа®Ја ¬¬ -®Ўа §Ґж
Џа®Ја ¬¬ ¤«п Ё§¬ҐҐЁп бва®зле ЎгЄў Їа®ЇЁблҐ Ё¬ҐҐв вЁЇ COM.
’ ЄЁҐ Їа®Ја ¬¬л ®аЈ Ё§®ў л Ё зҐ (§ Є®¬бвў® б нвЁ¬ б®бв®Ёвбп Ї®§¤ҐҐҐ).
€е бᥬЎ«а®ў ЁҐ Ґ Ё¬ҐҐв ®б®ЎҐ®б⥩, ® Ї®б«Ґ бᥬЎ«Ёа®ў Ёп Їа®Ја ¬¬г
¤«Ґ¦Ёв ЇаҐ®Ўа §®ў вм ў COM-д®а¬ в.
ЏаЁўҐ¤Ґл© Їа®Ја ¬¬л© ⥪бв Ї®«®бвмо Ј®в®ў ¤«п бᥬЎ«Ёа®ў Ёп, ᮤҐа¦Ёв
ўбҐ Ґ®Ўе®¤Ё¬®Ґ Ё Ґ вॡгҐв ўЄ«озҐЁп ў ®Ўа ¬«ҐЁп.
„«п ᮧ¤ Ёп Їа®Ја ¬¬л вЁЇ COM Ґ®Ўе®¤Ё¬® ЇаЁ ўл§®ўҐ Є®¬Ї®®ўйЁЄ ¤®Ў ў®з®
ўўҐбвЁ Є«оз /T:
TLINK.EXE /t PROG.OBJ, PROG-EXE
…б«Ё Ґ ᤥ« вм нв®Ј®, Ўг¤Ґ Ї®«гзҐ Їа®Ја ¬¬ вЁЇ EXE, ® ® ®Є ¦Ґвбп
Ґа Ў®в®бЇ®б®Ў®©.
3. ‘®¤Ґа¦ ЁҐ ®взҐв
1) ®¬Ґа Ё §ў ЁҐ а Ў®вл
2) 楫м а Ў®вл
3) Ё¤ЁўЁ¤г «м®Ґ § ¤ ЁҐ а Ў®вг
4) гЄ § ЁҐ Ё¬Ґ Ёб室®Ј® Ё ЁбЇ®«пҐ¬®Ј® д ©«®ў
5) ўлў®¤л
ЋвзҐв ЇаҐ¤бв ў«пҐвбп ў ўЁ¤Ґ ⥪бв®ў®Ј® д ©« , ўлЇ®«Ґ®Ј® ў д®а¬ ⥠DOS
(Є®¤®ў п бва Ёж 866).
4. ‡ ¤ ЁҐ а Ў®вг
01. Џ®¤а®Ў® а §®Ўа вмбп ў ЇаЁўҐ¤Ґле ⥪бв е Їа®Ја ¬¬-®Ўа §ж®ў.
02. ‘Є®ЇЁа®ў вм Ё§ гЄ § ®Ј® Є в «®Ј ⥪бв ®Ўа ¬«ҐЁп Їа®Ја ¬¬л
LOG_FORM.ASM, Ё§¬ҐЁў Ґ¬г Ё¬п Ї® гᬮв२о, ў бў®© а Ў®зЁ© Є в «®Ј.
03. ‚§пў § ®б®ўг ⥪бв ЇҐаў®© Їа®Ја ¬¬л-®Ўа §ж , ўўҐбвЁ ҐЈ® ў ®Ўа ¬«ҐЁҐ б®
б«Ґ¤гойЁ¬Ё Ё§¬ҐҐЁп¬Ё:
- § ¬ҐЁвм ҐЇ®б।бвўҐлҐ ®ЇҐа ¤л ®ЇҐа ¤л, ўў®¤Ё¬лҐ Є Є
ЇҐаҐ¬ҐлҐ ў ᥣ¬ҐвҐ ¤ ле;
- ўҐбвЁ ў ⥪бв Їа®Ја ¬¬л Є®¬ ¤г, Ґ®Ўе®¤Ё¬го ¤«п § ҐбҐЁп ЇҐаў®Ј®
Ё§ нвЁе ®ЇҐа ¤®ў ў ॣЁбва BL - ¤«п а Ў®вл б Є®¬ ¤ ¬Ё б¤ўЁЈ ;
- ЁбЇ®«м§®ў вм ўв®а®© Ё§ ®ЇҐа ¤®ў ў Є®¬ ¤Ґ AND.
04. ЂбᥬЎ«Ёа®ў вм Їа®Ја ¬¬г, бЄ®¬Ї®®ў вм ҐҐ Ё Ї®«гзЁвм EXE-¬®¤г«м.
05. ‘Є®ЇЁа®ў вм нв®в ¬®¤г«м ў Є в «®Ј, Ј¤Ґ 室Ёвбп adfpro.
06. ‡ ЇгбвЁвм ®в« ¤зЁЄ ¤«п ®в« ¤ЄЁ Ё ўлЇ®«ҐЁп нв®© Їа®Ја ¬¬л Ё а §®Ўа вмбп б
ҐҐ а Ў®в®©. ђҐ§г«мв вл ўлЇ®«ҐЁп Їа®Ја ¬¬л ¬®¦® ўЁ¤Ґвм нЄа Ґ ®в« ¤зЁЄ .
07. €бЇ®«м§гп ⥪бв ўв®а®© Їа®Ја ¬¬л-®Ўа §ж , б®бв ўЁвм д ©« NAME.ASM,
Ј¤Ґ ў§ ¬Ґ NAME ЁбЇ®«м§®ў вм ¤агЈ®Ґ Ё¬п - Ї® бў®Ґ¬г ўлЎ®аг.
08. ЂбᥬЎ«Ёа®ў вм Їа®Ја ¬¬г, бЄ®¬Ї®®ў вм ҐҐ Ё Ї®«гзЁвм COM-¬®¤г«м.
09. ‘Є®ЇЁа®ў вм нв®в ¬®¤г«м ў Є в «®Ј, Ј¤Ґ 室Ёвбп adfpro.
10. ‡ ЇгбвЁвм ®в« ¤зЁЄ ¤«п ®в« ¤ЄЁ Ё ўлЇ®«ҐЁп нв®© Їа®Ја ¬¬л Ё а §®Ўа вмбп б
ҐҐ а Ў®в®©. ђҐ§г«мв вл ўлЇ®«ҐЁп Їа®Ја ¬¬л ¬®¦® ўЁ¤Ґвм нЄа Ґ ®в« ¤зЁЄ .
**********************************************************************
**********************************************************************
‘€‘’…ЊЌЋ… ЏђЋѓђЂЊЊ€ђЋ‚ЂЌ€…
**********************************************************************
*******************
*** ’Ґ¬ 04 ***
*******************
**********************************************************************
‹Ћѓ€—…‘Љ€… Ё ‘„‚€ѓЋ‚›… ЉЋЊЂЌ„›
**********************************************************************
–Ґ«м а Ў®вл:
Ќ ЇЁб вм п§лЄҐ бᥬЎ«Ґа , ўлЇ®«Ёвм Ё Ёбб«Ґ¤®ў вм б Ї®¬®ймо ®в« ¤зЁЄ
Їа®Ја ¬¬г ¤«п а Ў®вл б «®ЈЁзҐбЄЁ¬Ё Є®¬ ¤ ¬Ё Ё Є®¬ ¤ ¬Ё б¤ўЁЈ
1. ‡ ¤ ЁҐ ЇаҐ¤ў аЁвҐ«мго Ї®¤Ј®в®ўЄг
Ћ§ Є®¬Ёвмбп б ᮤҐа¦ ЁҐ¬ агЄ®ў®¤бвў
€§гзЁвм ЇаЁўҐ¤Ґл© ⥮аҐвЁзҐбЄЁ© ¬ вҐаЁ «
‚лЇ®«Ёвм Їа ЄвЁзҐбЄго з бвм а Ў®вл
‘®бв ўЁвм ®взҐв ® а Ў®вҐ
ЏаҐ¤кпўЁвм १г«мв вл а Ў®вл ЇаҐЇ®¤ ў ⥫о
2. Ља вЄЁҐ ⥮аҐвЁзҐбЄЁҐ ᢥ¤ҐЁп
2.1. ЋЇЁб ЁҐ а Ў®вл
„«п ЁбЇ®«м§®ў Ёп Їа®Ја ¬¬л-®в« ¤зЁЄ Adfpro 㦮 бЄ®ЇЁа®ў вм ў
Є в «®Ј б нв®© Їа®Ја ¬¬®© бЄ®ЇЁа®ў вм бᥬЎ«Ёа®ў го Ё
бЄ®¬Ї®®ў го Їа®Ја ¬¬г ў ўЁ¤Ґ ЁбЇ®«пҐ¬®Ј® ¬®¤г«п. Љ®¬ ¤ § ЇгбЄ
®в« ¤зЁЄ Ё¬ҐҐв ўЁ¤
Adfpro Ё¬п_Їа®Ја ¬¬л
ђ Ў®в б ®в« ¤зЁЄ®¬ Adfpro Ґб«®¦ Ё ўҐ¤Ґвбп б Ї®¬®ймо ¬Ґо Ё Є®¬ ¤.
ЏаЁ а Ў®вҐ нЄа ¬®¦® ўлў®¤Ёвм Ї®¤бЄ §Єг. ‘«Ґ¤гҐв а §®Ўа вмбп б
®в« ¤зЁЄ®¬ ў а ¬Є е нв®Ј® § ¤ Ёп б ¬®бв®п⥫м®. „«п ўл室 Ё§
®в« ¤зЁЄ ЁбЇ®«м§гҐвбп Є®¬ ¤ quit.
2.2. ’ҐЄбвл Їа®Ја ¬¬-®Ўа §ж®ў
ЏаЁ¬Ґал ¤®ЇгбвЁ¬ле Є®¬ ¤ б ҐЇ®б।б⢥묨 ®ЇҐа ¤ ¬Ё - Є®¬ ¤
б¤ўЁЈ®ў Ё «®ЈЁзҐбЄЁе.
ЏђЋѓђЂЊЊЂ-ЋЃђЂ‡…–
________________________________________________________________
TITLE EXIMM (EXE) ЏаЁ¬Ґа ҐЇ®б।б⢥ле ®ЇҐа ¤®ў
DATASG SEGMENT PARA 'Data'
FLD1 DB ?
FLD2 DW ?
DATASG ENDS
CODESG SEGMENT PARA 'Code'
BEGIN PROC FAR
ASSUME CS:CODESG,DS:DATASG
; ђ®в жЁп Ё б¤ўЁЈ (в®«мЄ® 1 ЎЁв):
; ---------------------------------
RCL BL,1 ; а®в жЁп ў«Ґў® б ЇҐаҐ®б®¬
RCR AH,1 ; а®в жЁп ўЇа ў® б ЇҐаҐ®б®¬
ROL FID2,1 ; а®в жЁп ў«Ґў®
ROR AL,1 ; а®в жЁп ўЇа ў®
SAL CX,1 ; б¤ўЁЈ ў«Ґў®
SAR BX,1 ; аЁд¬ҐвЁзҐбЄЁ© б¤ўЁЈ ўЇа ў®
SHR FLD1,1 ; б¤ўЁЈ ўЇа ў®
; ‹®ЈЁзҐбЄЁҐ ®ЇҐа жЁЁ:
; -------------------
AND AL,00101100B ;AND (ॣЁбва)
OR BH,2AH ;OR (ॣЁбва)
TEST BL,7AH ;TEST (ॣЁбва)
OR FLD1,23H ;XOR (Ї ¬пвм)
BEGIN ENDP
CODESG ENDS
END
________________________________________________________________
2.3. ЏаЁ¬Ґа Їа ЄвЁзҐбЄ®Ј® ЁбЇ®«м§®ў Ёп «®ЈЁзҐбЄЁе Є®¬ ¤
ЏђЋѓђЂЊЊЂ: €‡Њ…Ќ…Ќ€… ‘’ђЋ—Ќ›• Ѓ“Љ‚ ЌЂ ЏђЋЏ€‘Ќ›…
________________________________________________________________
‘гйҐбвўгов а §«ЁзлҐ ЇаЁзЁл ¤«п ЇаҐ®Ўа §®ў Ё© ¬Ґ¦¤г бва®зл¬Ё Ё Їа®ЇЁбл¬Ё
ЎгЄў ¬Ё. Ќ ЇаЁ¬Ґа, ҐЄ п Їа®Ја ¬¬ ¤®«¦ Ї®§ў®«Ёвм Ї®«м§®ў вҐ«п¬ ўў®¤Ёвм
Є®¬ ¤л Є Є Їа®ЇЁбл¬Ё, в Є Ё бва®зл¬Ё ЎгЄў ¬Ё ( ЇаЁ¬Ґа, YES Ё«Ё yes) Ё
ЇаҐ®Ўа §®ў вм Ёе ў Їа®ЇЁблҐ ¤«п Їа®ўҐаЄЁ. Џа®ЇЁблҐ ЎгЄўл ®в A ¤® Z Ё¬Ґов
иҐбв ¤ж вҐаЁзлҐ Є®¤л ®в 41 ¤® 5A, бва®злҐ - ®в 61 ¤® 7A. …¤Ёб⢥ п
а §Ёж ў ⮬, зв® Їпвл© ЎЁв а ўҐ 0 ¤«п § Ј« ўле ЎгЄў Ё 1 ¤«п бва®зле:
ЃЁвл: 76543210 ЃЁвл: 76543210
ЃгЄў A: 01000001 ЃгЄў a: 01100001
ЃгЄў Z: 01011010 ЃгЄў z: 01111010
ЏаЁўҐ¤Ґ п Їа®Ја ¬¬ -®Ўа §Ґж ЇаҐ®Ўа §гҐв ¤ лҐ ў Ї®«Ґ TITLEX Ё§ бва®зле
ЎгЄў ў Їа®ЇЁблҐ, зЁ п б ¤аҐб TITLEX+1. Џа®Ја ¬¬ ЁЁжЁ «Ё§ЁагҐв ॣЁбва
BX ¤аҐб®¬ TITLEX+1 Ё ЁбЇ®«м§гҐв ҐЈ® ¤«п ЇҐаҐбл«ЄЁ бЁ¬ў®«®ў ў ॣЁбва AH,
зЁ п б TITLEX+1. …б«Ё Ї®«г祮Ґ § 票Ґ «Ґ¦Ёв ў ЇаҐ¤Ґ« е ®в иҐбв. 61 Ё
¤® 7A, в® Є®¬ ¤ AND гбв ў«Ёў Ґв ЎЁв 5 ў 0:
AND AH,11011111B
‚ᥠᨬў®«л, ®в«ЁзлҐ ®в бва®зле ЎгЄў (®в a ¤® z), Ґ Ё§¬Ґповбп. €§¬ҐҐлҐ
бЁ¬ў®«л § бл« овбп ®Ўа в® ў ®Ў« бвм TITLEX, § 票Ґ ў ॣЁбвॠBX
㢥«ЁзЁў Ґвбп ¤«п ®зҐаҐ¤®Ј® бЁ¬ў®« Ё Їа®Ёб室Ёв ЇҐаҐе®¤ б«Ґ¤гойЁ© жЁЄ«.
€‡Њ…Ќ…Ќ€… ‘’ђЋ—Ќ›• Ѓ“Љ‚ ЌЂ ЏђЋЏ€‘Ќ›…
________________________________________________________________
TITLE CASE (COM) ЏҐаҐЄ®¤Ёа®ўЄ ў § Ј« ўлҐ ЎгЄўл
CODESG SEGMENT PARA 'CODE'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG
ORG 100H
BEGIN: JMP MAIN
; -------------------------------------------
TITLEX DB 'Change to uppercase letters'
; -------------------------------------------
MAIN PROC NEAR
LEA BX,TITLEX+1 ; ¤аҐб ЇҐаў®Ј® бЁ¬ў®«
MOV CX,31 ; зЁб«® бЁ¬ў®«®ў
B20:
MOV AH,[BX] ; бЁ¬ў®« Ё§ TITLEX
CMP AH,61H ; Їа®ЇЁб п ЎгЄў ?
JB B30 ;
CMP AH,7AH ;
JA B30 ;
AND AH,11011111B ; ¤ - ЇаҐ®Ўа §®ў вм
MOV [BX],AH ; § ЇЁб вм ў TITLEX
B30:
INC BX ; б«Ґ¤гойЁ© бЁ¬ў®«
LOOP B20 ; Ї®ўв®аЁвм жЁЄ« 31 а §
RET
MAIN ENDP
CODESG ENDS
END BEGIN
________________________________________________________________
€бЇ®«м§гҐ¬л© в ЄЁ¬ ®Ўа §®¬ ॣЁбва BX ¤Ґ©бвўгҐв Є Є Ё¤ҐЄбл© аҐЈЁбва ¤«п
¤аҐб жЁЁ ў Ї ¬пвЁ. „«п нвЁе ¦Ґ 楫Ґ© ¬®¦® ЁбЇ®«м§®ў вм ॣЁбвал SI Ё DI.
2.4. ’ЁЇ®ў®Ґ ®Ўа ¬«ҐЁҐ Їа®Ја ¬¬
Ћ вЁЇ®ў®¬ ®Ўа ¬«ҐЁЁ Їа®Ја ¬¬ 㦥 Ј®ў®аЁ«®бм ў ⥬Ґ "03 „ў®ЁзлҐ аЁд¬ҐвЁзҐбЄЁҐ
ўлзЁб«ҐЁп - «ЁҐ©лҐ Їа®Ја ¬¬л". Ќ® §¤Ґбм ЁбЇ®«м§гҐвбп ¤агЈ®Ґ ®Ўа ¬«ҐЁҐ -
Їа®б⥩襥 - Ґ¬г ᮮ⢥вбвўгҐв д ©« LOG-FORM.ASM. ‚®в ᮤҐа¦Ё¬®Ґ нв®Ј® д ©« б
ҐЄ®в®ал¬Ё Ї®пᥨﬨ.
TITLE PROGNAME (EXE)
;----------------------------------------
STACKSG SEGMENT PARA STACK 'Stack'
DW 32 DUP (?)
STACKSG ENDS
;----------------------------------------
DATASG SEGMENT PARA 'Data'
; ... |
; ... | ‡¤Ґбм Ўг¤гв г¦лҐ ®ЇаҐ¤Ґ«ҐЁп ¤ ле
; ... |
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
;----------------------------------------
; ... |
; ... | ‡¤Ґбм Ўг¤Ґв г¦л© Їа®Ја ¬¬л© Є®¤
; ... |
RET ; § ўҐа襨Ґ Їа®Ја ¬¬л
BEGIN ENDP
CODESG ENDS
END BEGIN
ЋЎа ¬«ҐЁҐ ᮤҐа¦Ёв:
1) ®ЇаҐ¤Ґ«ҐЁҐ ᥣ¬Ґв б⥪ , ®д®а¬«Ґ®Ґ ¤ЁаҐЄвЁў ¬Ё STACKSG SEGMENT Ё
STACKSG ENDS; б ¬ ᥣ¬Ґв б®бв®Ёв Ё§ 32-е б«®ў Ї ¬пвЁ, зв® § ¤ Ґвбп
¤ЁаҐЄвЁў®© DW 32 DUP (?).
2) ®ЇаҐ¤Ґ«ҐЁҐ ᥣ¬Ґв ¤ ле, ®д®а¬«Ґ®Ґ ¤ЁаҐЄвЁў ¬Ё DATASG SEGMENT Ё
DATASG ENDS;
3) ®ЇаҐ¤Ґ«ҐЁҐ ᥣ¬Ґв Є®¤ , ®д®а¬«Ґ®Ґ ¤ЁаҐЄвЁў ¬Ё CODESG SEGMENT Ё
CODESG ENDS.
2.5. Џ®¤Ј®в®ўЄ Їа®Ја ¬¬л Є ўлЇ®«ҐЁо.
Џ®«лҐ ⥪бвл Їа®Ја ¬¬ ҐўҐ«ЁЄЁ Ё Ї®в®¬г б«Ґ¤гҐв ўўҐбвЁ Ёе б ¬®бв®п⥫м®.
ЏҐаў п Їа®Ја ¬¬ -®Ўа §Ґж
Ћ Ё¬ҐҐв вЁЇ EXE, ® Є®в®а®¬ Ё§ўҐбв® ¤®бв в®з®. ’ҐЄбв нв®© Їа®Ја ¬¬л 㦮
ўўҐбвЁ ў ®Ўа ¬«ҐЁҐ. „«п бᥬЎ«Ёа®ў Ёп Їа®Ја ¬¬л г¦ Є®¬ ¤ :
TASM.EXE /la /z /zi PROG.ASM
Ј¤Ґ PROG.ASM - гб«®ў®Ґ Ё¬п Ёб室®© Їа®Ја ¬¬л.
„«п Є®¬Ї®®ўЄЁ Їа®Ја ¬¬л г¦ Є®¬ ¤ :
TLINK.EXE PROG.OBJ, PROG-EXE
Ј¤Ґ PROG.OBJ - Ё¬п OBJ-¬®¤г«п бᥬЎ«Ёа®ў ®© Їа®Ја ¬¬л,
PROG-EXE - Ё¬п ЁбЇ®«Ё¬®© EXE-Їа®Ја ¬¬л (ЎҐ§ а биЁаҐЁп).
‚в®а п Їа®Ја ¬¬ -®Ўа §Ґж
Џа®Ја ¬¬ ¤«п Ё§¬ҐҐЁп бва®зле ЎгЄў Їа®ЇЁблҐ Ё¬ҐҐв вЁЇ COM.
’ ЄЁҐ Їа®Ја ¬¬л ®аЈ Ё§®ў л Ё зҐ (§ Є®¬бвў® б нвЁ¬ б®бв®Ёвбп Ї®§¤ҐҐҐ).
€е бᥬЎ«а®ў ЁҐ Ґ Ё¬ҐҐв ®б®ЎҐ®б⥩, ® Ї®б«Ґ бᥬЎ«Ёа®ў Ёп Їа®Ја ¬¬г
¤«Ґ¦Ёв ЇаҐ®Ўа §®ў вм ў COM-д®а¬ в.
ЏаЁўҐ¤Ґл© Їа®Ја ¬¬л© ⥪бв Ї®«®бвмо Ј®в®ў ¤«п бᥬЎ«Ёа®ў Ёп, ᮤҐа¦Ёв
ўбҐ Ґ®Ўе®¤Ё¬®Ґ Ё Ґ вॡгҐв ўЄ«озҐЁп ў ®Ўа ¬«ҐЁп.
„«п ᮧ¤ Ёп Їа®Ја ¬¬л вЁЇ COM Ґ®Ўе®¤Ё¬® ЇаЁ ўл§®ўҐ Є®¬Ї®®ўйЁЄ ¤®Ў ў®з®
ўўҐбвЁ Є«оз /T:
TLINK.EXE /t PROG.OBJ, PROG-EXE
…б«Ё Ґ ᤥ« вм нв®Ј®, Ўг¤Ґ Ї®«гзҐ Їа®Ја ¬¬ вЁЇ EXE, ® ® ®Є ¦Ґвбп
Ґа Ў®в®бЇ®б®Ў®©.
3. ‘®¤Ґа¦ ЁҐ ®взҐв
1) ®¬Ґа Ё §ў ЁҐ а Ў®вл
2) 楫м а Ў®вл
3) Ё¤ЁўЁ¤г «м®Ґ § ¤ ЁҐ а Ў®вг
4) гЄ § ЁҐ Ё¬Ґ Ёб室®Ј® Ё ЁбЇ®«пҐ¬®Ј® д ©«®ў
5) ўлў®¤л
ЋвзҐв ЇаҐ¤бв ў«пҐвбп ў ўЁ¤Ґ ⥪бв®ў®Ј® д ©« , ўлЇ®«Ґ®Ј® ў д®а¬ ⥠DOS
(Є®¤®ў п бва Ёж 866).
4. ‡ ¤ ЁҐ а Ў®вг
01. Џ®¤а®Ў® а §®Ўа вмбп ў ЇаЁўҐ¤Ґле ⥪бв е Їа®Ја ¬¬-®Ўа §ж®ў.
02. ‘Є®ЇЁа®ў вм Ё§ гЄ § ®Ј® Є в «®Ј ⥪бв ®Ўа ¬«ҐЁп Їа®Ја ¬¬л
LOG_FORM.ASM, Ё§¬ҐЁў Ґ¬г Ё¬п Ї® гᬮв२о, ў бў®© а Ў®зЁ© Є в «®Ј.
03. ‚§пў § ®б®ўг ⥪бв ЇҐаў®© Їа®Ја ¬¬л-®Ўа §ж , ўўҐбвЁ ҐЈ® ў ®Ўа ¬«ҐЁҐ б®
б«Ґ¤гойЁ¬Ё Ё§¬ҐҐЁп¬Ё:
- § ¬ҐЁвм ҐЇ®б।бвўҐлҐ ®ЇҐа ¤л ®ЇҐа ¤л, ўў®¤Ё¬лҐ Є Є
ЇҐаҐ¬ҐлҐ ў ᥣ¬ҐвҐ ¤ ле;
- ўҐбвЁ ў ⥪бв Їа®Ја ¬¬л Є®¬ ¤г, Ґ®Ўе®¤Ё¬го ¤«п § ҐбҐЁп ЇҐаў®Ј®
Ё§ нвЁе ®ЇҐа ¤®ў ў ॣЁбва BL - ¤«п а Ў®вл б Є®¬ ¤ ¬Ё б¤ўЁЈ ;
- ЁбЇ®«м§®ў вм ўв®а®© Ё§ ®ЇҐа ¤®ў ў Є®¬ ¤Ґ AND.
04. ЂбᥬЎ«Ёа®ў вм Їа®Ја ¬¬г, бЄ®¬Ї®®ў вм ҐҐ Ё Ї®«гзЁвм EXE-¬®¤г«м.
05. ‘Є®ЇЁа®ў вм нв®в ¬®¤г«м ў Є в «®Ј, Ј¤Ґ 室Ёвбп adfpro.
06. ‡ ЇгбвЁвм ®в« ¤зЁЄ ¤«п ®в« ¤ЄЁ Ё ўлЇ®«ҐЁп нв®© Їа®Ја ¬¬л Ё а §®Ўа вмбп б
ҐҐ а Ў®в®©. ђҐ§г«мв вл ўлЇ®«ҐЁп Їа®Ја ¬¬л ¬®¦® ўЁ¤Ґвм нЄа Ґ ®в« ¤зЁЄ .
07. €бЇ®«м§гп ⥪бв ўв®а®© Їа®Ја ¬¬л-®Ўа §ж , б®бв ўЁвм д ©« NAME.ASM,
Ј¤Ґ ў§ ¬Ґ NAME ЁбЇ®«м§®ў вм ¤агЈ®Ґ Ё¬п - Ї® бў®Ґ¬г ўлЎ®аг.
08. ЂбᥬЎ«Ёа®ў вм Їа®Ја ¬¬г, бЄ®¬Ї®®ў вм ҐҐ Ё Ї®«гзЁвм COM-¬®¤г«м.
09. ‘Є®ЇЁа®ў вм нв®в ¬®¤г«м ў Є в «®Ј, Ј¤Ґ 室Ёвбп adfpro.
10. ‡ ЇгбвЁвм ®в« ¤зЁЄ ¤«п ®в« ¤ЄЁ Ё ўлЇ®«ҐЁп нв®© Їа®Ја ¬¬л Ё а §®Ўа вмбп б
ҐҐ а Ў®в®©. ђҐ§г«мв вл ўлЇ®«ҐЁп Їа®Ја ¬¬л ¬®¦® ўЁ¤Ґвм нЄа Ґ ®в« ¤зЁЄ .
**********************************************************************
**********************************************************************