1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
org 0x100 ; .com files always start 256 bytes into the segment
videoSegment equ 0xa000
page0Offset equ 0x0000
SC_INDEX equ 0x03c4
SCREEN_HEIGHT equ 350
SCREEN_WIDTH_IN_BYTES equ 80
DEMO_AREA_HEIGHT equ 336
DEMO_AREA_WIDTH_IN_BYTES equ 40
VERTICAL_BOX_WIDTH_IN_BYTES equ 10
section .data
section .text
start:
mov ax, 0x10
int 0x10 ; dos :set video mode (640x350)
mov ax, videoSegment
mov es, ax
; affiche le fond des barres horizontales
mov dx, SCREEN_HEIGHT/4
sub di, di
mov ax, 0xffff
mov bx, DEMO_AREA_WIDTH_IN_BYTES/2
mov si, SCREEN_WIDTH_IN_BYTES - DEMO_AREA_WIDTH_IN_BYTES
mov bp, (SCREEN_WIDTH_IN_BYTES * 3) - DEMO_AREA_WIDTH_IN_BYTES
backgroundLoop:
mov cx, bx
rep stosw
add di, si
mov cx, bx
rep stosw
add di, bp
dec dx
jnz backgroundLoop
mov ah, 0x00
int 16h ; BIOS : wait for keyboard input
mov ah, 0x03
int 0x10 ; dos :set video mode (TEXT 80x25)
mov ah, 0x4c ; "terminate program" sub-function
int 0x21 ; call dos services |
Partager