Читайте данную работу прямо на сайте или скачайте

Скачайте в формате документа WORD


Разработка программы рисования линий с помощью мыши

РТРТРХРФРХРЭРРХ

ВВВВВВВа РЬР

РЬСЛСИСМ вАУ СГСБСВСАР

1 РЮРРйРРЩ РЧРФРХРЫ

РгСБСВСАР

ВРЁРРё РР

РР

ВВВВВВВа


2 РЮРЯРбЭРРХ РгРбРвРРЮРРбРвРТРР

2.1 РЮРЯРбЭРРХ РЬРРЁР

ВВВВВВВа РЯР

РЬСЛСИСМ СБР

ВВВВВВВа РбР

ВВВВВВВа РЭР СВСАСГРРР

2.2 РЯРРЮРУРЬРЬЭп РЬРЮРФРХРРм РЬРРЁР

ВВВВа РТСБР Р

INT33h, е=0: РРРёСЖРёР

е = Oh, РСБРРё РСАР

РРе = СЗРёСБРР

2         РёРРё Oh - РР

Р

3         - СВСАРё

- РСАСГРР

INT33h, AX=1: РЯР

INT33h, AX = 2: РбР

РФСАР

INT33h, AX = 3: РЮР

РРёСВ 0. РР

РРёСВ 1: РР

РРёСВ 2: РР

РбРе

DX

Ре-Р

Р

Y-Р

Р

РТР

РТ РР

INT 33h, AX = Рбh: РгСБСВР

ES:DX = Р

РРёСВ 0: РСОРР

РРёСВ 1: РР

РРёСВ 2: Р

РРёСВ 3: РР

РРёСВ 4: Р

РРёСВ 5: РР

РРёСВ 6: Р

РЮРСАР

РдСГРР

СЖРёСП Рбh РёСБР

3 РЧРСРРвРЪРР ЫРУРЮРРвРЬРР РгРЯРТРЫРХРЭРп РЬРРЁРмРо

ВВВВВВВа РбСЕРР

РТРРСИРРР СГСБСВСАР

РЯСАР

РЪР

РЁРёРР

РТРРСИРРР СГСБСВСАР

РТРРСИРРР СГСБСВСАР

РТРРСИРРР СГСБСВСАР

NMI

INTA

INTR


ВВВВВВВа РЮРСАР

4 РЧРСРРвРЪРРРРХЫРЧжРп РЯРРЮРУРЬРЬРЭРЮРУРЮ РЮРСРРбРЯРРзРХРЭРп

ВВВВВа РФРСП САР

ВВВВВа РСБСЕР

ВВВВВа РСРР

ВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВа


5 РРвРЫФРЪРРРбРЯРвЭРРХ РЯРРЮРУРЬРРл

ВВВВВВВа РЯРСАРР РР

ВВВВВВВа РТ Р

РЧЪРРоРзРХРЭРРХ

ВВВВВВВа РТ Р

РЫРвРРавРгРРР

1.     ВВВВВВВа РРСМ РЯ. Рё Р

2.     РР. РЦСГР

Р

3.     РРСАСЕРёСВРР

СВСГСАР

4.     РТ. РоСАР

5.     РТ. РоСАР

6.     РСАР

РёР, РЪРёР

7.     РСБР

РЯСАРёРР

; mousedr.asm

; РРёСБСГРСВ РР

ВВВВВВВа.modelВВВВВВа tiny

ВВВВВВВа.code

start:

ВВВВВВВа movВа ax,12h

ВВВВВВВа intВВВа 10hВВВВВВВВВВВа ; Р

РёРРР

ВВВВВВВа movВа ax,ВВВВВВВВВВа ; РёРРёСЖРёР

ВВВВВВВа intВВВа 33h

ВВВВВВВа movВа ax,ВВВВВВВВВВа ; Р

ВВВВВВВа intВВВа 33h

ВВВВВВВа movВа ax,ChВа ; СГСБСВР

ВВВВВВВа movВа cx,2hВВа ; СБР

ВВВВВВВа movВа dx,offset handler ; ES:DX - Р

ВВВВВВВа intВВВа 33h

ВВВВВВВа movВа ah,ВВВВВВВВВВа ; Р

ВВВВВВВа intВВВа 16h

ВВВВВВВа movВа ax,Ch

ВВВВВВВа movВа cx,hВВа ; СГРР

ВВВВВВВа intВВВа 33h

ВВВВВВВа movВа ax,ВВВВВВВВВВа ; СВРР

СБСВР

ВВВВВВВа intВВВа 10h

ВВВВВВВа retВВВВВВВВВВВВВВВВВВВВВВа ; Р

Р

; РЮРСАР

; Р

; СВРР

СГСЙРР№

handler:

ВВВВВВВа pushВа 0Ah

ВВВВВВВа popВа esВВВВВВВВВВВВВВа ; ES - РР

ВВВВВВВа pushВа cs

ВВВВВВВа popВа dsВВВВВВВВВВВВВа ; DS - СБРРР

ВВВВВВВа pushВа cxВВВВВВВВВВВВВа ; CX (X-Р

Р

ВВВВВВВа pushВа dxВВВВВВВВВВВВВа ; DX (Y-Р

Р

ВВВВВВВа movВа ax,ВВВВВВВВВВа ; СБР

ВВВВВВВа intВВВа 33h

ВВВВВВВа cmpВа word ptr previous_X,-ВВВВВВВа ; РСБРРё СНСВР

ВВВВВВВа jeВВВВВа first_pointВВВВВВВВВа ; СВР

ВВВВВВВа callВВа line_bresenhamВВВВВВВВВВВа ; РёРР

exit_handler:

ВВВВВВВа popВа dxВВВВВВВВВВВВВВВВВВВВВВа ; Р

Р

ВВВВВВВа popВа cx

ВВВВВВВа movВа previous_X,cxВВВВВВВВВВВВа ; Рё РР

ВВВВВВВа movВа previous_Y,dxВВВВВВВВВВВВа ; Р

Р

ВВВВВВВа movВа ax,ВВВВВВВВВВа ; Р

ВВВВВВВа intВВВа 33h

ВВВВВВВа retfВВВВВВВВВВВВВВВВВВВВВа ; Р

СЛСЕР

first_point:

ВВВВВВВа callВВа putpixel1bВа ; Р

СЛР

Р

ВВВВВВВа jmp short exit_handler

; РЯСАР

; РТР

Р

; previous_X,previous_Y - X, Y РР

Ва

line_bresenham:

ВВВВВВВа movВа ax,cx

ВВВВВВВа subВВа ax,previous_XВВВа ; AX = РРРёРР

ВВВВВВВа jnsВВВа dx_posВВВВВВВВВВВВВВВВВВВВВВВВа ; РСБРРё AX Р

ВВВВВВВа negВВа axВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВа ; СБР

ВВВВВВВа movВа word ptr X_increment,ВВВВВВВа ; Р

Р

ВВВВВВВа jmp short dx_negВВВВВВВВВВВВВВВВВа ; Р

dx_pos:ВВВВа movВа word ptr X_increment,-1 ; Р

dx_neg:ВВВВа movВа bx,dx

ВВВВВВВа subВВа bx,previous_YВВВа ; BX = РРРёРР

ВВВВВВВа jnsВВВа dy_posВВВВВВВВВВВВВВВВВВВВВВВВа ; РСБРРё BX Р

ВВВВВВВа negВВа bxВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВа ; СБР

ВВВВВВВа movВа word ptr Y_increment,ВВВВВВВа ; Р

Р

ВВВВВВВа jmp short dy_negВВВВВВВВВВВВВВВВВа ; Р

dy_pos:ВВВВа movВа word ptr Y_increment,-ВВВВВВа ; Р

dy_neg:

ВВВВВВВа shlВВВа ax,ВВВВВВВВВВа ; СГРР

Р

ВВВВВВВа shlВВВа bx,ВВВВВВВВВВа ; СЗСВР

ВВВВВВВа callВВа putpixel1bВа ; Р

СЛР

РСБСВРё Р

; CX,DX Р

previous_X,previous_Y

ВВВВВВВа cmpВа ax,bxВВВВВВВВа ; РСБРРё Р

ВВВВВВВа jnaВВВа dx_le_dy

ВВВВВВВа movВа di,axВВВВВВВВВа ; DI РСГРРСВ СГР

Р

ВВВВВВВа shrВВа di,ВВВВВВВВВВВа ; Р

ВВВВВВВа negВВа diВВВВВВВВВВВВВВа ; Р

ВВВВВВВа addВВа di,bxВВВВВВВВВа ; DI = 2 * dy - dx.

cycle:

ВВВВВВВа cmpВа cx,word ptr previous_XВВВВВВВа ; Р

ВВВВВВВа jeВВВВВа exit_bresВВВВВВВВВВВВа ; Р

ВВВВВВВа cmpВа di,ВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВа ; РСБРРё DI > 0,

ВВВВВВВа jlВВВВВа fractlt0

ВВВВВВВа addВВа dx,word ptr Y_incrementВВВВВа ; Р

ВВВВВВВа subВВа di,axВВВВВВВВВВВВВВВВВВВВВВВВВВВВа ; Рё СГР

fractlt0:

ВВВВВВВа addВВа cx,word ptr X_incrementВВВВВа ; СБРРРСГСОСЙРёР№ X (РР

ВВВВВВВа addВВа di,bxВВВВВВВВВВВВВВВВВВа ; СГР

РРРёСЗРёСВСМ DI РР

ВВВВВВВа callВВа putpixel1bВВВВВВВВВа ; Р

СЛР

РСБСВРё СВР

ВВВВВВВа jmp short cycleВВВВВВВВВВВа ; Р

dx_le_dy:ВВВВВВВВВВВВВВВВВВВВа ; РСБРРё Р

ВВВВВВВа movВа di,bx

ВВВВВВВа shrВВа di,1

ВВВВВВВа negВВа diВВВВВВВВВВВВВВа ; Р

ВВВВВВВа addВВа di,axВВВВВВВВВа ; DI = 2 * dx - dy

cycle2:

ВВВВВВВа cmpВа dx,word ptr previous_YВВВВВВа ; Р

ВВВВВВВа jeВВВВВа exit_bresВВВВВВВВВВВВа ; Р

ВВВВВВВа cmpВа di,ВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВа ; РСБРРё DI > 0

ВВВВВВВа jlВВВВВа fractlt02

ВВВВВВВа addВВа cx,word ptr X_incrementВВВВВа ; Р

ВВВВВВВа subВВа di,bxВВВВВВВВВВВВВВВВВВВВВВВВВВВВа ; Рё СГР

fractlt02:

ВВВВВВВа addВВа dx,word ptr Y_incrementВВВВВа ; СБРРРСГСОСЙРёР№ Y (РР

ВВВВВВВа addВВа di,axВВВВВВВВВВВВВВВВВВа ; СГР

РРРёСЗРёСВСМ DI РР

ВВВВВВВа callВВа putpix Р

ВВВВВВВа movВа di,bx

ВВВВВВВа shrВВа di,1

ВВВВВВВа negВВа diВВВВВВВВВВВВВВа ; Р

ВВВВВВВа addВВа di,axВВВВВВВВВа ; DI = 2 * dx - dy

cycle2:

ВВВВВВВа cmpВа dx,word ptr previous_YВВВВВВа ; Р

ВВВВВВВа jeВВВВВа exit_bresВВВВВВВВВВВВа ; Р

ВВВВВВВа cmpВа di,ВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВа ; РСБРРё DI > 0

ВВВВВВВа jlВВВВВа fractlt02

ВВВВВВВа addВВа cx,word ptr X_incrementВВВВВа ; Р

ВВВВВВВа subВВа di,bxВВВВВВВВВВВВВВВВВВВВВВВВВВВВа ; Рё СГР

fractlt02:

ВВВВВВВа addВВа dx,word ptr Y_incrementВВВВВа ; СБРРРСГСОСЙРёР№ Y (РР

ВВВВВВВа addВВа di,axВа ВВВВВВВВВВВВВВВВВа ; СГР

РРРёСЗРёСВСМ DI РР

ВВВВВВВа callВВа putpixi,axВВВВВВВВВВа ; Р

ВВВВВВВа movВа si,diВВВВВВВВВВа ; СБСВСАР

ВВВВВВВа popВа cxВВВВВВВВВВВВВа ; CX СБРР

ВВВВВВВа movВа bx,0080h

ВВВВВВВа andВВа cx,07hВВВВВВа ; Р

; Р

; РР

ВВВВВВВа shrВВа bx,clВВВВВВВВВа ; СВРР

ВВВВВВВа lodsВа es:byte ptr some_labelВа ; AL = РР

ВВВВВВВа orВВВВа ax,bxВВВВВВВВа ; СГСБСВР

; СЗСВР

; not bx

; and ax,bx

; РёРРё РСГСЗСИР РёРРёСЖРёР

ВВВВВВВа stosbВВВВВВВВВВВВВВВВВВа ; Рё Р

РСАРРР

ВВВВВВВа popaВВВВВВВВВВВВВВВВВВа ; Р

Р

ВВВВВВВа retВВВВВВВВВВВВВВВВВВВВВВа ; Р

Р

previous_XВВВВВВВВа dwВВВа -ВВВВа ; Р

previous_YВВВВВВВВа dwВВВа -ВВВВа ; Р

Y_incrementВВВВВВа dwВВВа -ВВВВа ; РР

X_incrementВВВВВВа dwВВВа -ВВВВа ; РР

some_label:ВВВВВВВВВВВВВВВВВВВВВВВВВВа ; Р

; СБРРР

ВВВВВВВа endВВа start

РЯСАРёРР

РЭР

РвР

РЯРСАРР

РСОСЗРРРёР Р

РёРРР

РРРёСЖРёР

РЪР

РгСБСВР

РРёСБР

ВР

РСРРР

-СБСЕРРР: