Вывод точки в режиме VGA 12h

Тема в разделе "WASM.BEGINNERS", создана пользователем Toxasoft, 31 май 2011.

  1. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Я чехлю уже второй день но так и не могу вывести точку на дисплей...
    нашол вот код:
    Код (Text):
    1. *******************************************************************************
    2. ;Устанавливаем содержимое регистра маски графического контроллера
    3.  
    4.            shl       ah,1000b ;Битова маска
    5.            mov       dx,3CEh      ;DX = порт графического контроллера
    6.            mov       al,8      ;AL = номер регистра битовой маски
    7.            out       dx,ax
    8.  
    9. ;Устанавливаем содержимое регистра режима графического контроллера
    10.  
    11.            mov       ax,205h      ;AL = номер регистра режима
    12.                                          ;AH = режим записи 2 (биты 0,1), режим чтения 0 (бит 3)
    13.            out       dx,ax
    14.  
    15.            mov      byte [es:5],128      ;изменяем содержимое битовых плоскостей
    но он мне выдает какойто бред
     
  2. shore

    shore New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2011
    Сообщения:
    29
    должен рисовать линию,на работу не проверял, ибо под рукой не оказалось ассемблера(я только учусь,поэтому возможно где-то накосячил).
    Код (Text):
    1. D_SEG SEGMENT
    2. X          dw 00h
    3. Y          dw 00h
    4. Color      db 00h
    5. D_SEG ENDS
    6.  
    7. C_SEG SEGMENT
    8.     ASSUME DS:D_SEG, CS:C_SEG
    9.      START: MOV AX, D_SEG
    10.         MOV DS, AX
    11.        
    12.            mov  ax,0012h                ; set mode to 640x480x16
    13.            int  10h
    14.            mov  ax,0A000h
    15.            mov  es,ax
    16.  
    17.            ; start line from (0,0) to (639,479)
    18.            mov  X,0001h            ; top most pixel (0,0)
    19.            mov  Y,0001h            ;
    20.            mov  Color,00h          ; start with color 0
    21.            mov  cx,480                  ; 480 pixels
    22. DrawLine:  call putpixel                ; put the pixel
    23.            inc  word X                  ; move down a row and inc col
    24.            inc  word Y                  ;
    25.            inc  Color              ; next color
    26.            and Color,0Fh          ; 00h - 0Fh only
    27.            loop DrawLine                ; do it
    28.  
    29.            xor  ah,ah                   ; wait for key press
    30.            int  16h
    31.  
    32.            mov  ax,0003                 ; return to screen 3 (text)
    33.            int  10h
    34.  
    35.            MOV AH, 4CH
    36.        INT 21H                      ; exit to DOS
    37.  
    38.  
    39. ; on entry X,Y = location and C = color (0-15)
    40. putpixel   proc near uses ax bx cx dx
    41.  
    42. ; byte offset = Y * (horz_res / 8) + int(X / 8)
    43.  
    44.            mov  ax,Y                    ; calculate offset
    45.            mov  dx,80                   ;
    46.            mul  dx                      ; ax = y * 80
    47.            mov  bx,X                    ;
    48.            mov  cl,bl                   ; save low byte for below
    49.            shr  bx,03                   ; div by 8
    50.            add  bx,ax                   ; bx = offset this group of 8 pixels
    51.            mov  dx,03CEh                ; set to video hardware controller
    52.            and  cl,07h                  ; Compute bit mask from X-coordinates
    53.            xor  cl,07h                  ;  and put in ah
    54.            mov  ah,01h                  ;
    55.            shl  ah,cl                   ;
    56.            mov  al,08h                  ; bit mask register
    57.            out  dx,ax                   ;
    58.            mov  ax,0205h                ; read mode 0, write mode 2
    59.            out  dx,ax                   ;
    60.            mov  al,es:[bx]              ; load to latch register
    61.            mov  al,Color
    62.            mov  es:[bx],al              ; write to register
    63.            ret
    64. putpixel   endp
    65. C_SEG ENDS
    66.       END START
     
  3. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Пасибки работает нормально.