Assembler. Видеопамять.

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
KRVN
Сообщения: 1
Зарегистрирован: 20 май 2008, 17:08

На экране движеться объект (точка и т.п.), при движении меняеться фон. Управление клавишами курсора "Верх"," Вниз". Выход из программы при нажатии сочитания клавиш CTRL+X :confused:

Пока программа умеет двигать точку при нажатии клавиши мышки, 1 раз менять фон, и выходить при нажатии любой клавиши клавиатуры :(

Код: Выделить всё

	.model	tiny
	.code
	org	100h		; COM-д*©«
	.186			; ¤«п Є®¬**¤л shr cx,3
start:
 mov [tx],64h
 mov [ty],64h

	mov	ax,0013h
	int	10h	 	; ўЁ¤Ґ®аҐ¦Ё¬ 640x480
     xor si,si

     mov bl,00h	; ¬*ЄбЁ¬*«м*л© *®¬Ґа п祩ЄЁ
	mov	cx,319		; ¬*ЄбЁ¬*«м*л© *®¬Ґа бв®«Ўж*
	mov	dx,199		; ¬*ЄбЁ¬*«м*л© *®¬Ґа бва®ЄЁ
zdisplay:
	mov	al,bl; 梥в в®зЄЁ (00 - зҐа*л©, 01 - бЁ*Ё©)
	mov	ah,0Ch	; *®¬Ґа ўЁ¤Ґ®дг*ЄжЁЁ ў AH
	int	10h		; ўлўҐбвЁ в®зЄг ** нЄа**
	dec	si		; б«Ґ¤гой*п п祩Є*
	dec	cx		; б«Ґ¤гойЁ© *®¬Ґа бв®«Ўж*
	jns	zdisplay	; Ґб«Ё бв®«Ўжл *Ґ §*Є®*зЁ«Ёбм - Їа®¤®«¦Ёвм
	mov	cx,319	; Ё**зҐ: б*®ў* ¬*ЄбЁ¬*«м*л© *®¬Ґа бв®«Ўж* ў CX
	dec	dx		; Ё б«Ґ¤гойЁ© *®¬Ґа бва®ЄЁ ў DX
	jns	zdisplay	; Ґб«Ё Ё бва®ЄЁ §*Є®*зЁ«Ёбм - ўл室 Ё§ жЁЄ«*

      mov cx,[tx]
      mov dx,[ty]   
      mov	al,12h; 梥в в®зЄЁ (00 - зҐа*л©, 01 - бЁ*Ё©)
	mov	ah,0Ch	; *®¬Ґа ўЁ¤Ґ®дг*ЄжЁЁ ў AH
	int	10h	 

	mov	ax,0		; Ё*ЁжЁ*«Ё§Ёа®ў*вм ¬лим
	int	33h
	;mov	ax,1		; Ї®Є*§*вм Єгаб®а ¬лиЁ
	;int	33h

	mov	ax,000Ch	; гбв**®ўЁвм ®Ўа*Ў®взЁЄ б®ЎлвЁ© ¬лиЁ
	mov	cx,0002h	; б®ЎлвЁҐ - **¦*вЁҐ «Ґў®© Є*®ЇЄЁ
	mov	dx,offset handler ; ES :D X - *¤аҐб ®Ўа*Ў®взЁЄ*
	int	33h

	mov	ah,0		; ®¦Ё¤**ЁҐ **¦*вЁп «оЎ®© Є«*ўЁиЁ
	int	16h
	mov	ax,000Ch
	mov	cx,0000h	; г¤*«Ёвм ®Ўа*Ў®взЁЄ б®ЎлвЁ© ¬лиЁ
	int	33h
	mov	ax,3		; ⥪бв®ўл© аҐ¦Ё¬
	int	10h
	ret			; Є®*Ґж Їа®Ја*¬¬л

; ЋЎа*Ў®взЁЄ б®ЎлвЁ© ¬лиЁ: ЇаЁ ЇҐаў®¬ **¦*вЁЁ ўлў®¤Ёв в®зЄг ** нЄа**,
; ЇаЁ Є*¦¤®¬ ¤*«м*Ґ©иҐ¬ ўл§®ўҐ Їа®ў®¤Ёв Їап¬го «Ё*Ёо ®в ЇаҐ¤л¤г饩 в®зЄЁ Є 
; ⥪г饩

handler:
	push	0A000h
	pop	es		; ES - **з*«® ўЁ¤Ґ®Ї*¬пвЁ 
	push	cs
	pop	ds		; DS - ᥣ¬Ґ*в Є®¤* Ё ¤***ле нв®© Їа®Ја*¬¬л
	push	cx		; CX (X-Є®®а¤Ё**в*) Ё 
	push	dx		; DX (Y-Є®®а¤Ё**в*) Ї®вॡговбп ў Є®*жҐ

	;mov	ax,2		; бЇапв*вм Єгаб®а ¬лиЁ ЇҐаҐ¤ ўлў®¤®¬ ** нЄа**
	;int	33h
        call putpixel1b 
	pop	dx			; ў®ббв**®ўЁвм CX Ё DX
	pop	cx
	;mov	ax,1		; Ї®Є*§*вм Єгаб®а ¬лиЁ
	;int	33h

	retf			; ўл室 Ё§ ®Ўа*Ў®взЁЄ* - Є®¬**¤* RETF


; Џа®жҐ¤га* аЁб®ў**Ёп Їаאַ© «Ё*ЁЁ б ЁбЇ®«м§®ў**ЁҐ¬ *«Ј®аЁв¬* ЃаҐ§Ґ*е*¬*
; ‚ў®¤: CX,DX - X, Y Є®*Ґз*®© в®зЄЁ
; previous_X,previous_Y - X, Y **з*«м*®© в®зЄЁ
 
putpixel1b:
	pusha	
      add bl,1h
	mov	cx,319		; ¬*ЄбЁ¬*«м*л© *®¬Ґа бв®«Ўж*
	mov	dx,199		; ¬*ЄбЁ¬*«м*л© *®¬Ґа бва®ЄЁ
zdisplay2:
	mov	al,bl; 梥в в®зЄЁ (00 - зҐа*л©, 01 - бЁ*Ё©)
	mov	ah,0Ch	; *®¬Ґа ўЁ¤Ґ®дг*ЄжЁЁ ў AH
	int	10h		; ўлўҐбвЁ в®зЄг ** нЄа**
	dec	si		; б«Ґ¤гой*п п祩Є*
	dec	cx		; б«Ґ¤гойЁ© *®¬Ґа бв®«Ўж*
	jns	zdisplay2	; Ґб«Ё бв®«Ўжл *Ґ §*Є®*зЁ«Ёбм - Їа®¤®«¦Ёвм
	mov	cx,319	; Ё**зҐ: б*®ў* ¬*ЄбЁ¬*«м*л© *®¬Ґа бв®«Ўж* ў CX
	dec	dx		; Ё б«Ґ¤гойЁ© *®¬Ґа бва®ЄЁ ў DX
	jns	zdisplay2	; Ґб«Ё

      
      mov cx,[tx]
      inc cx
      mov [tx],cx
      mov dx,[ty]   
      mov	al,12h; 梥в в®зЄЁ (00 - зҐа*л©, 01 - бЁ*Ё©)
	mov	ah,0Ch	; *®¬Ґа ўЁ¤Ґ®дг*ЄжЁЁ ў AH
	int	10h	

	popa			; ў®ббв**®ўЁ¬ ॣЁбвал
	ret			; Є®*Ґж
; ᥣ¬Ґ*в*-Ёбв®з*ЁЄ* ¤«п lods б DS ** ES
vid db 320*200+1 dup(?)
tx dw 1 dup(?) 
ty dw 1 dup(?)
some_label:	
	end	start
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

что Вы именно хотите готовый код 100р, или ваш поправить?
Ответить