На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Создание символа
    Всех приветствую, как на асме создать свой символ?
    Например я жму "1" а он отображает что то другое, свое?
    Если можно то пример в виде макроса.
      Ну, если под DOS тебе это надо и для текстового режима, то пройдись по этим ссылкам:
      Пример программы заменяющей шрифты
      Программирование знакогенератора
      Знакогенератор и int 10h
        Спасибо за ссылки.
          Цитата
          Например я жму "1" а он отображает что то другое, свое?

          Вот с единичкой, если мне память не изменяет, как раз не выйдет: изменить рисунок можно только у символов с ASCII-кодами от 080h до 0ffh.
            Нет, менять можно у любых.

            ExpandedWrap disabled
              --------V-101110-----------------------------
              INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD USER-SPECIFIED PATTERNS (PS,EGA,VGA)
                      AX = 1110h
                      ES:BP -> user table
                      CX = count of patterns to store
                      DX = character offset into map 2 block
                      BL = block to load in map 2
                      BH = number of bytes per character pattern
              Return: nothing
              Notes:  This function will cause a mode set, completely resetting
                        the video environment, but without clearing the video buffer
                      This function is designed to be called immediately after a mode set,
                        it is equivalent to AX=110xh except that:
                            Page 0 must be active.
                            Bytes/character is recalculated.
                            Max character rows is recalculated.
                            CRT buffer length is recalculated.
                            CRTC registers are reprogrammed as follows:
                                   R09 = bytes/char-1 ; max scan line (mode 7 only)
                                   R0A = bytes/char-2 ; cursor start
                                   R0B = 0            ; cursor end
                                   R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
                                   R14 = bytes/char   ; underline loc
                                         (*** BUG: should be 1 less ***)
                      the current block specifiers may be determined with INT 10/AH=1Bh,
                        looking at offsets 2Bh and 2Ch of the returned data (VGA only)
                        (see AH=1Bh,#00040)
              SeeAlso: AX=1100h,AX=1111h,AX=1112h,AX=1114h,AH=1Bh,AX=CD10h,MEM 0040h:0084h
              Index:  text mode;font|text mode;screen rows


            Через порты:
            ExpandedWrap disabled
              ;----------------------------------------------------------------------------;
               
              ; Процедура GetCharImage - получить образ символа
              ; Вход: AL = код символа, ES:DI = адрес для записи образа символа (16 байт)
              GetCharImage    proc    near
               
                              xor     ah,ah
                              xchg    si,ax
               
                              cli
                              mov     dx,3CEh
                              mov     ax,0C06h
                              out     dx,ax          ; Отвязываем чётную карту от нечётной, Seg=0B800h (P.S. Wow! Как умно сказанул!)
                              mov     ax,00204h
                              out     dx,ax          ; Выбираем для чтения карту #2
                              mov     ax,00005h
                              out     dx,ax          ; Регистр режима (НЕ odd/even-адресация и т.д)
               
                              push    ds
              if              @Cpu and 1
                              push    0B800h
                              pop     ds
                              shl     si,5
              else
                              mov     cx,0B800h
                              mov     ds,cx
                              mov     cl,5
                              shl     si,cl
              endif
                              mov     cx,8
                              cld
                              rep     movsw          ; Копируем образ символа в память
                              pop     ds
               
                              mov     ax,0E06h
                              out     dx,ax          ; Связываем чётную карту с нечётной, Seg=0B800h
                              mov     ax,1005h
                              out     dx,ax          ; Регистр режима (odd/even-адресация и т.д)
                              mov     ax,4
                              out     dx,ax          ; Выбираем для чтения карту #0
               
                              sti
                              ret
               
              GetCharImage    endp
               
              ;----------------------------------------------------------------------------;
               
              ; Процедура SetCharImage - установить образ символа
              ; Вход: AL = код символа, DS:SI = адрес образа символа (16 байт)
              SetCharImage    proc    near
               
                              xor     ah,ah
                              xchg    di,ax
               
                              cli
                              mov     dx,3C4h
                              mov     ax,402h
                              out     dx,ax          ; Разрешаем запись в плоскость 2
                              mov     ax,504h
                              out     dx,ax          ; Режим памяти (текстовый, последов, 64K памяти)
                              mov     dl,0CEh
                              mov     ax,0C06h
                              out     dx,ax          ; Отвязываем чётную карту от нечётной, Seg=0B800h
                                                     ; (P.S. Wow! Как умно сказанул!)
                              push    es
              if              @Cpu and 1
                              push    0B800h
                              pop     es
                              shl     di,5
              else
                              mov     cx,0B800h
                              mov     es,cx
                              mov     cl,5
                              shl     di,cl
              endif
                              mov     cx,8
                              cld
                              rep     movsw          ; Копируем образ символа из памяти
                              pop     es
               
                              mov     ah,0Eh
                              out     dx,ax          ; Связываем чётную карту с нечётной
                              mov     dl,0C4h
                              mov     ax,304h
                              out     dx,ax          ; Режим памяти (текстовый, чередующ, расш.пам)
                              mov     al,2
                              out     dx,ax          ; Запрещаем запись в плоскость 2
               
                              sti
                              ret
              SetCharImage    endp
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0247 ]   [ 15 queries used ]   [ Generated: 18.04.24, 22:57 GMT ]