Ñåêðåòû ïðîãðàììèðîâàíèÿ èãð


         

Èñïîëüçîâàíèå àññåìáëåðà - ÷àñòü 2


                                          ; ïî âûçîâó äëÿ ÿçûêà Ñè è ÿâëÿåòñÿ

                                          ; äàëüíåé

.386                               ; èñïîëüçîâàòü èíñòðóêöèè ïðîöåññîðà 80386

            push di                       ; ñîõðàíÿåì ðåãèñòð DI

            cld                           ; ñáðàñûâàåì ôëàã íàïðàâëåíèÿ

            les di, double_buffer         ; çàãðóæàåì â ES:DI àäðåñ áóôåðà

            õîr åàõ,åàõ                   ; îáíóëÿåì ðåãèñòð ÅÀÕ

            mov ñõ,320*76/4               ; çàïîëíÿåì 76 ñòðîê

            rep stosd                     ; äåëàåì ýòî

            mov åàõ,01Å1Å1Å1Åh            ; çàãðóæàåì â ÅÀÕ êîä ñåðîãî öâåòà

            mov ñõ,320*76/4               ; íàì íàäî çàïîëíèòü 76 ñòðîê

            rep stosd                     ; äåëàåì ýòî

            pop di                        ; âîññòàíàâëèâàåì DI

            ret                           ; êîíåö

Draw_Ground_32 ENDP END

Ëèñòèíã 19.5. ôóíêöèÿ âèçóàëèçàöèè íåáà è çåìëè (RENDERB.ASM).

; Ýòà ôóíêöèÿ ðèñóåò çåìëþ è íåáî. Â íåé èñïîëüçóþòñÿ

;  32-áèòîâûå ðåãèñòðû è èíñòðóêöèè.

;//////////////////////////////////

.MODEL MEDIUM,Ñ              ; èñïîëüçîâàòü medium ìîäåëü è ñîãëàøåíèå Ñè

.CODE                        ; íà÷àëî êîäîâîãî ñåãìåíòà

            EXTRN double_buffer:DWORD    ; àäðåñ äóáëèðóþùåãî áóôåðà

            EXTRN video_buffer:DWORD     ; àäðåñ âèäåîáóôåðà

            PUBLIC Render_Buffer_32      ; äåëàåì ôóíêöèþ îáùåäîñòóïíîé

Render_Buffer_32 PROC FAR Ñ              ; ôóíêöèÿ ïîääåðæèâàåò ñîãëàøåíèÿ

                                         ; Ñè è ÿâëÿåòñÿ äàëüíåé

.386                         ; èñïîëüçîâàòü èíñòðóêöèè 80386 ïðîöåññîðà

            push ds                      ; ñîõðàíèòü ðåãèñòð ñåãìåíòà äàííûõ

            cld                          ; ñáðàñûâàåì ôëàã íàïðàâëåíèÿ

            lds si, double_buffer        ; â ðåãèñòðû èñòî÷íèêà (DS:SI)

                            ; çàãðóæàåì àäðåñ áóôåðà

            les di, video_buffer         ; â ðåãèñòðû ïðèåìíèêà (ES:DI)

                                        ;çàãðóæàåì àäðåñ âèäåîïàìÿòè

            mov ñõ,320*152/4             ; îïðåäåëÿåì êîëè÷åñòâî äâîéíûõ ñëîâ

            rep movsd                    ; êîïèðóåì

            pop ds                      ; âîññòàíîâèòü ðåãèñòð ñåãìåíòà äàííûõ

            ret                          ; ñäåëàíî!

Render_Buffer_32 ENDP

            END




Ñîäåðæàíèå  Íàçàä  Âïåðåä