Читайте данную работу прямо на сайте или скачайте
Разработка программы рисования линий с помощью мыши
РТРТРХРФРХРЭРРХ
ВВВВВВВа РЬР
РЬСЛСИСМ вАУ СГСБСВСАР
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
РЯСАРёРР
РЭР |
РвР |
РЯРСАРР РСОСЗРРРёР Р РёРРР |
РРРёСЖРёР |
РЪР |
РгСБСВР |
РРёСБР ВР |
-СБСЕРРР: