Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
30
Добавлен:
17.04.2013
Размер:
7.63 Кб
Скачать
‹ Ў®а в®а­ п а Ў®в  N 6

–Ґ«м а Ў®вл: Ё§г祭ЁҐ ўлў®¤  в®зҐз­®© Ја дЁЄЁ ¤«п EGA  ¤ ЇвҐа :
жЁЄ«л Ё Їа®жҐ¤гал ў  бᥬЎ«ҐаҐ.

Ља вЄЁҐ ᢥ¤Ґ­Ёп ® ўЁ¤Ґ®бЁб⥬ е I B M

Ћб®ЎҐ­­®бвЁ а §«Ёз­ле ўЁ¤Ґ®бЁб⥬ I B M ®ЇЁб ­л, ­ ЇаЁ¬Ґа,
ў [ 1 ]. ‚ а Ў®вҐ ¬л Є®а®вЄ® а бᬮваЁ¬, Є Є ўлў®¤Ёвбп Ја дЁзҐб-
Є п Ё­д®а¬ жЁп ў EGA. ‚ 16 梥⭮¬ ०Ё¬Ґ EGA ЁбЇ®«м§гҐв 4 ЎЁв®ўлҐ
Ї«®бЄ®бвЁ ¤«п еа ­Ґ­Ёп Ё­д®а¬ жЁЁ ® 梥⥠Є ¦¤®© Ё§ 640*350 в®зҐЄ
(Є ¦¤ п в®зЄ  ®ЇЁблў Ґвбп 4-¬п ЎЁв ¬Ё). ЋЇҐа жЁЁ ­ ¤ ᮤҐа¦Ё¬л¬
ЎЁв®ўле Ї«®бЄ®б⥩ ўлЇ®«­пҐвбп ­Ґ ­ҐЇ®б।б⢥­­®,   зҐаҐ§ 4 аҐ-
ЈЁбва  дЁЄб в®а , ॣЁбва Ї «Ёвал Ё ॣЁбва ¬ бЄЁ. ЋЎ¬Ґ­ б ॣЁбв-
а ¬Ё ў®§¬®¦Ґ­ Ї®ажЁп¬Ё Ї® 8 ЎЁв (1 Ў ©в). —в®Ўл § ¤ вм 梥⠪®­Є-
аҐв­®© в®зЄЁ ў Ў ©вҐ, ®бв «м­лҐ ­ ¤® § ¬ бЄЁа®ў вм б Ї®¬®ймо ¬ б-
ЄЁ.
„«п Ї®¤а®Ў­®Ј® §­ Є®¬бвў  б EGA б®ўҐв㥬 Їа®зЁв вм [ «1. бва.
228-283].

Џа®Ја ¬¬  ­   бᥬЎ«ҐаҐ

’ЁЇЁз­ п  бᥬЎ«Ґа­ п Їа®Ја ¬¬  вЁЇ  .EXE б®бв®Ёв Ё§ ваҐе
ᥣ¬Ґ­в®ў (з б⥩):
- б⥪
- ¤ ­­лҐ
- Є®¤.
Џа ўЁ«  ®д®а¬«Ґ­Ёп ¬®¦­® гўЁ¤Ґвм ў ЇаЁўҐ¤Ґ­­®¬ ЇаЁ¬ҐаҐ. ЋЇЁ-
б ­ЁҐ Є ¦¤®Ј® ᥣ¬Ґ­в  § Є ­зЁў Ґвбп ®ЇҐа в®а®¬ ENDS.

1. ‘ҐЈ¬Ґ­в б⥪  - ᮤҐа¦Ёв ¤ЁаҐЄвЁўг DW (Define Word), ®ЇЁблў о-
йго 128 б«®ў. ќв® а §¬Ґа б⥪ . Cва®Є  ®ЇЁб ­Ёп ᥣ¬Ґ­в  ᮤҐа-
¦Ёв Є« бб ᥣ¬Ґ­в  - 'STACK' Ё вЁЇ ᥣ¬Ґ­в  - STACK.

2. ‘ҐЈ¬Ґ­в ¤ ­­ле - ­ з «® DATASG, Є« бб 'DATA'. ‚ ­Ґ¬ ЇаЁўҐ¤Ґ­®
®ЇЁб ­ЁҐ ЁбЇ®«м§гҐ¬ле ў Їа®Ја ¬¬Ґ ¤ ­­ле
­ ЇаЁ¬Ґа:

x0 dw (б«®ў®) 0 (§­ зҐ­ЁҐ)
y0 db (Ў ©в) 0 (§­ зҐ­ЁҐ)
z0 dd (¤ў®©­®Ґ б«®ў®) ABCABCH (§­ зҐ­ЁҐ)

3. ‘ҐЈ¬Ґ­в Є®¤  - ­ з «® CODESG Є« бб 'CODE' - Їа®Ја ¬¬­л©.
’ҐЄбв Їа®Ја ¬¬­®Ј® ᥣ¬Ґ­в  ­ зЁ­ Ґвбп б ®ЇҐа в®а  ASSUME, Є®-
в®ал© Ї®§ў®«пҐв ва ­б«пв®аг б®Ї®бв ўЁвм ᥣ¬Ґ­в­лҐ ॣЁбвал Ё
 ¤аҐбгҐ¬лҐ Ё¬Ё ᥣ¬Ґ­вл. ‘ ¬  Їа®Ја ¬¬  б®бв®Ёв Ё§ Їа®жҐ¤га.
Џа®Ја ¬¬  Ё§ ЇаЁўҐ¤Ґ­­®Ј® ЇаЁ¬Ґа  аЁбгҐв ­  нЄа ­Ґ Їаאַ㣮«м-
­ЁЄ ўлб®в®© hi = 100 в®зҐЄ Ё иЁаЁ­®© len = 128 в®зҐЄ (16 Ў ©в)
梥⮬ color = 14. ‚ Їа®Ја ¬¬Ґ ¤ўҐ Їа®жҐ¤гал: RECT - аЁб®ў ­ЁҐ
Їаאַ㣮«м­ЁЄ  Ё MAIN - ®б­®ў­ п.
Џа®жҐ¤га  ­ зЁ­ Ґвбп б Ё¬Ґ­Ё (MAIN) Ё ®ЇҐа в®а  PROG. Ќ §-
­ зҐ­ЁҐ ®в¤Ґ«м­ле ®ЇҐа в®а®ў Ї®­пв­® Ё§ Є®¬Ґ­в аЁҐў. ‚ Їа®Ја ¬-
¬Ґ x0 Ё y0 - Є®®а¤Ё­ вл «Ґў®Ј® ўҐае­ҐЈ® гЈ«  Їаאַ㣮«м­ЁЄ 
(x0 - ў Ў ©в е, y0 - ў ЇЁЄбҐ« е (в®зЄ е)). ЋЇҐа в®а CALL ўл§л-
ў Ґв ᮮ⢥вбвўгойго Їа®Ја ¬¬г (г ­ б RECT).
ЏҐаҐ¤ ўл室®¬ Ё§ Їа®Ја ¬¬л гбв ­®ўЁ¬ ⥪бв®ўл© ўЁ¤Ґ®аҐ¦Ё¬.
’ҐЄбв Їа®Ја ¬¬л § ўҐаи Ґвбп ¤ЁаҐЄвЁў®© END, § Є ­зЁў о饩
ва ­б«пжЁо. ‚ Є зҐб⢥ ®ЇҐа в®а  нв®© ¤ЁаҐЄвЁўл гЄ §лў Ґвбп
в®зЄ  ўе®¤  ў Ј« ў­го Їа®жҐ¤гал (MAIN).

ЏаЁ¬Ґал Ї®бв஥­Ёп жЁЄ«®ў ў  бᥬЎ«ҐаҐ

1. MOV CX, 4 ; § ¤ Ґ¬ ў CX бзҐвзЁЄ жЁЄ«®ў
L1: .......... ; ў­гв७­ЁҐ
.......... ; ®ЇҐа в®ал жЁЄ« 
LOOP L1 ; 㬥­миЁвм CX Ё Ї®ўв®аЁвм, Ґб«Ё CX <> 0

2. MOV STEP, 4 ; § ¤ Ґ¬ ў STEP бзҐвзЁЄ жЁЄ«®ў
L1: .......... ; ў­гв७­ЁҐ
.......... ; ®ЇҐа в®ал жЁЄ« 
DEC STEP ; 㬥­миЁ¬ STEP
JNZ L1 ; Ї®ўв®аЁ¬ жЁЄ«, Ґб«Ё STEP <> 0

ЏаЁ¬Ґа Їа®Ја ¬¬л

TITLE GRAPF.EXE
STACKSG SEGMENT PARA STACK 'Stack'
DW 128 DUP(?)
STACKSG ENDS

DATASG SEGMENT PARA 'Data'

x0 dw 0
y0 db 0
len dw 0
hi dw 0
xy dw 0
color db 0

DATASG ENDS

CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:DATASG,SS:STACKSG,ES:NOTHING

RECT PROC FAR ;Џ®¤Їа®Ја ¬¬  ¤«п аЁб®ў ­Ёп
Їаאַ㣮«м­ЁЄ 
MOV AL,y0 ;Ќ-Є®®а¤Ё­ в  ­ з « 
MOV BL,80 ;—Ёб«® Ў ©в ў бва®ЄҐ
MUL BL ;AL*BL->AX
ADD AX,x0 ;ЏаЁЎ ўЁ¬ ᬥ饭ЁҐ Єгаб®а 
MOV xy,A ;‘®еа ­Ё¬
MOV CX,hi ;‚лб®в  Їаאַ㣮«м­ЁЄ  (в®зҐЄ)
MOV SI,0 ;‘¬ҐйҐ­ЁҐ ®в гЈ« 
L2: PUSH CX ;‘®еа ­Ё¬ ў б⥪Ґ
MOV CX,len ;ЁаЁ­  Їаאַ㣮«м­ЁЄ  (Ў ©в)
MOV BX,xy ;‘¬ҐйҐ­ЁҐ ®в 0,0
MOV AL,color ;–ўҐв
L1: MOV ES:[BX][SI],AL ;ўлў®¤ ў ўЁ¤Ґ®ЎгдҐа
INC BX ;Є б«Ґ¤го饬㠡 ©вг
LOOP L1 ;жЁЄ« ў бва®ЄҐ
ADD SI,80 ;ЇаЁЎ ўЁ¬ ¤«Ё­г бва®ЄЁ
POP CX ;ўлб®вг б⥪ 
LOOP L2 ;жЁЄ« Ї® бва®Є ¬
RET ;ў®§ўа в ў Їа®Ја ¬¬г
RET ENDP

MAIN PROC
MOV AH,00 ;гбв ­®ўЁ¬ Ја дЁзҐбЄЁ© ०Ё¬
MOV AL,10H ;640*350 в®зҐЄ
INT 10H
;
;гбв ­®ўЁ¬  ¤аҐб жЁо Є ўЁ¤Ґ®ЎгдҐаг

MOV AX,0A000H
MOV ES,AX
MOV BX,0

;гбв ­®ўЁ¬ ०Ё¬ § ЇЁбЁ 2

MOV DX,3CEH ; ¤аҐб­л© ॣЁбва Є®­ва®««Ґа 
MOV AL,8 ;ॣЁбва ०Ё¬ 
OUT DX,AL ;гбв ­®ўЄ   ¤аҐб㥬®Ј® ॣЁбва 
MOV DX,3CFH ;ॣЁбва ¤ ­­ле
MOV AL,2 ;०Ё¬ 2
OUT DX,AL ;гбв ­®ўЄ  ०Ё¬  § ЇЁбЁ

;гбв ­®ўЁ¬ ¬ бЄг ЎЁв®ў OFFH

MOV DX,3ty ; ¤аҐб­л© ॣЁбва Є®­ва®««Ґа 
MOV AL,B ;ॣЁбва ¬ бЄЁ ЎЁв®ў
OUT DX,AX ;гбв ­®ўЄ   ¤аҐб㥬®Ј® ॣЁбва 
INC DX ;ॣЁбва ¤ ­­ле
MOV AL,OFFH ;ўбҐ ЇЁЄбҐ«л Ў ©в  а §¬ бЄЁа®ў вм
OUT DX,AL ;гбв ­®ўЄ  ¬ бЄЁ ЎЁв®ў
MOV color,14 ;梥в
MOV hi,100 ;ўлб®в  (ў ЇЁЄбҐ« е)
MOV len,16 ;иЁаЁ­  (ў Ў ©в е)
MOV x0,30 ;X-Є®®а¤Ё­ в  ­ з « 
MOV y0,100 ;Y-Є®®а¤Ё­ в  ­ з « 
CALL RECT ;ўл§®ў Їа®жҐ¤гал

;§ ўҐаи Ґ¬ Їа®Ја ¬¬г

MOV AH,00H ;ўў®¤ б Є« ўЁ вгал
INT 16H
CMP AL,00 ;Їа®ўҐаЄ  ­  <Enter>
JZ exit ;Ґб«Ё ¤ , в® exit

exit:
MOV AN,00N ;гбв ­®ўЁ¬ ⥪бв®ўл© аҐ¦Ё¬
MOV AL,03H
INT 10H
MOV AX,4COOH ;Є®¤ ўл室 
INT 21H
MAIN ENDP
RET
CODESG ENDS
END MAIN


Џ®а冷Є ўлЇ®«­Ґ­Ёп а Ў®вл

1. Ќ ЎҐ©вҐ ў । Єв®аҐ ЇаЁўҐ¤Ґ­­л© ЇаЁ¬Ґа (Їгбвм нв® Ўг¤Ґв д ©«
PRIMER.ASM)

2. Ћвва ­б«Ёаг©вҐ ҐЈ®:
TASM PRIMER; (­  ¤ЁбЄҐ Ї®пўЁвбп д ©« PRIMER.OBJ.)

3. ‘Є®¬Ї®­г©вҐ Їа®Ја ¬¬г:
TLINK PRIMER; (­  ¤ЁбЄҐ Ї®пўЁвбп д ©« PRIMER.EXE)

4. “ЎҐ¤ЁвҐбм ў а Ў®в®бЇ®б®Ў­®бвЁ Їа®Ја ¬¬л.

5. €§¬Ґ­ЁвҐ Їа®Ја ¬¬г в Є, зв®Ўл ®­  аЁб®ў «  ­  нЄа ­Ґ 16 Їаאַ-
гЈ®«м­ЁЄ®ў а §­®Ј® жўҐв  (®в 0 ¤® 15) а §¬Ґа®¬ hi = 50,
len = 8, x0 = 3, y0 = 20, и Ј Ї® ®бЁ X а ўҐ­ 8 Ў ©в,   Ї® ®бЁ
Y 30 в®зҐЄ.

ЏаЁ¬Ґз ­ЁҐ: Ґб«Ё ­Ґ гЄ § ­® h, в®  бᥬЎ«Ґа бзЁв Ґв зЁб«  ¤Ґбп-
вЁз­л¬Ё.

‹ЁвҐа вга 

ђ.„¦®а¤Ґ©­. ‘Їа ў®з­ЁЄ Їа®Ја ¬¬Ёбв  ЇҐаб®­ «м­ле Є®¬ЇмовҐа®ў вЁЇ  IBM.
Соседние файлы в папке Asm