Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
53
Task/Draw-a-cuboid/X86-Assembly/draw-a-cuboid.x86
Normal file
53
Task/Draw-a-cuboid/X86-Assembly/draw-a-cuboid.x86
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
1 ;Assemble with: tasm, tlink /t
|
||||
2 0000 .model tiny
|
||||
3 0000 .code
|
||||
4 .386
|
||||
5 org 100h
|
||||
6 ;assume: ax=0000h, bx=0000h, cx=00ff, and
|
||||
7 ; direction bit is clear (so di increments)
|
||||
8 ; ____
|
||||
9 =0050 X0 equ 80 ; / /|
|
||||
10 =0050 Y0 equ 80 ; / / |
|
||||
11 =0050 wide equ 2*40 ; X0,Y0 +---+ |
|
||||
12 =0064 tall equ 3*40*200/240 ; | | |
|
||||
13 =0035 deep equ 4*40/3 ; | | /
|
||||
14 ; |___|/
|
||||
15
|
||||
16 0100 B0 13 start: mov al, 13h ;set 320x200x8 graphic screen
|
||||
17 0102 CD 10 int 10h
|
||||
18 0104 68 A000 push 0A000h ;point es to graphic memory segment
|
||||
19 0107 07 pop es
|
||||
20
|
||||
21 ;Draw front of cuboid using horizontal lines
|
||||
22 0108 B3 64 mov bl, tall
|
||||
23 010A BF E150 mov di, X0+(Y0+tall)*320 ;set pen at lower-left corner
|
||||
24 010D B0 04 mov al, 4 ;use red ink
|
||||
25 010F B1 50 dc10: mov cl, wide ;draw horizontal line
|
||||
26 0111 F3> AA rep stosb ;es:[di++], al; cx--
|
||||
27 0113 81 EF 0190 sub di, wide+320 ;move up to start of next line
|
||||
28 0117 4B dec bx ;at top of face?
|
||||
29 0118 75 F5 jne dc10 ;loop if not
|
||||
30
|
||||
31 011A B3 35 mov bl, deep
|
||||
32 ;Draw top using horizontal lines
|
||||
33 011C B0 02 dc20: mov al, 2 ;use green ink
|
||||
34 011E B1 50 mov cl, wide ;draw horizontal line
|
||||
35 0120 F3> AA rep stosb ;es:[di++], al; cx--
|
||||
36
|
||||
37 ;Draw side using vertical lines
|
||||
38 0122 B0 01 mov al, 1 ;use blue ink
|
||||
39 0124 B1 64 mov cl, tall ;draw vertical line
|
||||
40 0126 AA dc30: stosb ;es:[di++], al
|
||||
41 0127 81 C7 013F add di, 320-1 ;move down a pixel
|
||||
42 012B E2 F9 loop dc30
|
||||
43
|
||||
44 012D 81 EF 7E8F sub di, wide+(tall+1)*320-1 ;move to start of next top line
|
||||
45 0131 4B dec bx ;at deep limit?
|
||||
46 0132 75 E8 jne dc20 ;loop if not
|
||||
47
|
||||
48 0134 CD 16 int 16h ;wait for keystroke (ah=0)
|
||||
49 0136 B8 0003 mov ax, 0003h ;restore normal text-mode screen
|
||||
50 0139 CD 10 int 10h
|
||||
51 013B C3 ret ;return to DOS
|
||||
52
|
||||
53 end start
|
||||
Loading…
Add table
Add a link
Reference in a new issue