Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Графика


Автор: toxx 21.5.2011, 21:19
Есть программа резедентные часы. Часы выводяться пока символами, нужно сделать чтобы цифры выводились в графике
типа чтобы ноль был символами выведен и тд.

как мне это сделать лучше?уже голову сломал не могу приделать графику.

Автор: S3nsitive 21.5.2011, 21:26
Вот пример:
Код

;Установка видеорежима:
        push 0a000h                   ;-В сегментный регистр es записывается 0a000h -
        pop es                             ;/ - адрес сегмента видеопамяти.
        mov ax,12h                      ;-Установка видеорежима 640x480 с 16 цветами.
        int 10h                             ;/
;Непосредственно рисование:
        mov ah,0ch                      ;Функция для вывода будущей точки.
        mov al,9                           ;Цвет будущей точки.
        mov cx,0                          ;Координата x будущей точки.
        mov dx,0                          ;Координата y будущей точки.
        int 10h                             ;Вывод точки.

Дальше сам. smile

Автор: toxx 21.5.2011, 21:49
Это все ясно, если попытаться вывести как я в 119-123 строках то выдает
relative jump out of range by .....(без этих строк все работает)
помогите поправить
Код проги:
Код




компилятор tasm

Автор: S3nsitive 21.5.2011, 21:59
К сожалению, тут я не помощник, потому что знаком с Ассемблером всего несколько дней. :(

Автор: toxx 21.5.2011, 22:09
S3nsitive 
обидно, буду ждать может кто поможет)
спасибо за участие!

Автор: 500mhz 22.5.2011, 10:10
.186 заменить на .386
а то у тебя компилиться под 8086 процессор у которого только short jmp

Автор: toxx 22.5.2011, 18:31
Цитата

.186 заменить на .386
а то у тебя компилиться под 8086 процессор у которого только short jmp 

а это не приведет к тому что придется использовать регистры eax ... и тд?

Автор: 500mhz 22.5.2011, 19:16
нет 

Автор: toxx 22.5.2011, 19:44
500mhz 
скачал tasm32,tlink32 запускаю так

tasm32 /t resclock.asm
tlink32 /t resclock.obj
/x не помогает
выводит
fatal:16bit segment not supported ...

Автор: 500mhz 22.5.2011, 20:07
хз я в тасме не спец перепиши под фасм да и все

Автор: toxx 26.5.2011, 14:14
Можно узнать почему так происходит хочу вывести символ через видобуфер делаю так
вывод 1 символа

Код
SetChar macro x,y  
    mov    SI, offset mes    
    Mov    DI,    80*2*x+37*y    
    movsb
endm


вывод символа в другом макросе 
Код
OutStrG macro
push    CS            
pop    DS                
pusha
mov    AX,    0B800h        
mov    ES,    AX        

        SetChar 1,1

popa
endm


почему, если писать setchar 1,1 один раз то tasm компилирует и линкует нормально.
Еслиже написать так как ниже, то уже ошибка relative jump out of range by

Код
OutStrG macro
push    CS            
pop    DS                
pusha
mov    AX,    0B800h        
mov    ES,    AX         
        SetChar 1,1  
        SetChar 1,2  
        SetChar 1,3
        SetChar 2,1
        SetChar 2,3
        SetChar 3,1 
        SetChar 3,2
        SetChar 3,3
popa
endm

почему получается что все разбросано по экрану, если выводить цифры часов графикой?
Подсказали как сделать, 
[bp]  где bp это наша позиция цифры
а в итоге все разбросано по эрану.

Код
Out0 macro
push    CS            
pop    DS                
pusha
     mov DI,    80*2*5+ 2*5*[bp]    ; ????????? ???????? ?? ??????     
     cld
     SetChar '0'                                              
     SetChar '0'
     SetChar '0'  
     mov DI,    80*2*6 +2*5*[bp]
     SetChar '0'
     SetChar ' '
     SetChar '0'  
     mov DI,    80*2*7 +2*5*[bp]
     SetChar '0'
     SetChar '0'
     SetChar '0'
popa

endm     
Out1 macro 
push    CS            
pop    DS                
pusha
     mov DI,    80*2*5 + 2*5*[bp]    ; ????????? ???????? ?? ??????     
     cld
     SetChar '1'                                              
     SetChar '1'
     SetChar '1'  
     mov DI,    80*2*6 + 2*5*[bp]
     SetChar ' '
     SetChar ' '
     SetChar '1'  
     mov DI,    80*2*7  + 2*5*[bp]
     SetChar ' '
     SetChar ' '
     SetChar '1'
popa

endm

вопрос решен

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)