Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2011, 10:32   #1
Nevesta_Sira
 
Регистрация: 02.01.2011
Сообщений: 6
Восклицание Таймер на Tasm'e

Мне необходимо написать резидентную программу-таймер, отображающую время и срабатывающую с точностью до 1 миллисекунды. Сюда нужно добавить время...Ума не приложу как...
Код:
code    segment			
            assume  cs:code,ds:code		
            org     100h			
start:   jmp load	 		
           old     dd  0			
           str1 db 13,10,'Time is up!$'		
           min db ?  
           sec db ?    
           msec db ?     

            str_min db 13,10,'Enter minutes : $',13,10
            str_sec db 13,10,'Enter the second : $',13,10
            str_msec db 13,10,'Enter a millisecond : $',13,10
 
            ok dw ? 			

clock   proc    			
            pushf       			
            call    cs:old			 
            push    ds			
            push    es
            push    ax
            push    bx
            push    cx
            push    dx
            push    di
            push    cs
            pop     ds

             cmp ok, 1           		
             jz @@5             		

             mov     ah,  2ch    		
             int     21h             		

             cmp cl, min;         		
             jb @@5               		
    				
             cmp dh, sec         		
             jb @@5
             cmp dl, msec  
             jae @@show
             jmp @@5
       
@@show:             

                    lea dx, str1         
	mov ah,09h
	int 21h
	mov ok, 1

@@5:    pop     di    
               pop     dx
               pop     cx
               pop     bx
               pop     ax
               pop     es
               pop     ds

iret
clock   endp

end_clock:   		

load:
        lea dx, str_min  		
        mov ah, 09h        		
        int 21h
        call input
        mov min, al

        lea dx, str_sec
        mov ah, 09h;     		
        int 21h
        call input
        mov sec, al

        lea dx, str_msec
        mov ah, 09h     		
        int 21h
        call input
        mov msec, al


        mov     ah,  2ch   		
        int     21h        		
     mov al, 0;
     mov bx,0;
     add dl, msec   
     cmp dl, 100      
     jb @next0
     sub dl, 100
     mov al, 1         

@next0:
     	add dh, sec;
     	add dh, al;
     	cmp  dh, 60;      
   	jb @next
      	sub dh, 60;
      	mov bl, 1;

@next:
      	mov sec, dh;
      	add cl, bl;
      	add cl, min;
     	cmp cl, 60
     	jbe @next2                 
       	sub cl, 60

@next2:
     	mov min, cl


        	mov ok, 0                   			
        	mov     ax,  351Ch            		
        	int     21h                   			
        	mov     word ptr old,  bx      		
        	mov     word ptr old + 2,  es   		
        	mov     ax,  251Ch              		
        	mov     dx,  offset clock        		
        	int     21h                      			
        	mov     ax,  3100h                            	
        	mov     dx, (end_clock - start + 10Fh) / 16 	
        	int     21h                        		

@exit:
       	mov ah, 4ch;
       	int 21h
________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 02.01.2011 в 11:18.
Nevesta_Sira вне форума Ответить с цитированием
Старый 02.01.2011, 10:33   #2
Nevesta_Sira
 
Регистрация: 02.01.2011
Сообщений: 6
Восклицание продолжение

Код:
input proc
  	mov ax, 0;
  	mov cx, 0;
  	mov si, 0;

	inp:
  	      call readkey
  	      cmp ax, 010dh
  	      je exi
  	      cmp si, 0
  	      jne inp2
  	      mov si,1
  	      cmp ax, 012dh
                         jne inp2
                         mov si, -1
                         jmp inp

                inp2:
  	     call makecount;
  	     jmp inp

                  exi:
 	    mov ax, cx
                       mul si
                       mov si, ax
ret
input endp
readkey proc
    	  mov ax, 0100h
    	  int 21h
ret
readkey endp
makecount proc
    	         mov ah,0
    	         sub ax,0030h
    	         mov bx, ax
    	         mov ax, cx
    	         mov bp, 10
    	         mov dx,0
    	         mul bp
                            mov cx, ax
    	         add cx, bx
ret
makecount endp

write_dec proc near
                                mov bx, 10
 	             cmp dx, 0
  	             jl minus
    	             mov ax, 1
    	             mov bp, 1
    	             jmp del1

                   minus:
    	           mov ax, -1
    	           mov bp, -1
	
                     del1:
  	          mov cx,dx
	          mul cx
  	          mov dx,0
	          mov cx, 0
                             inc cx       ;del inc cx
                             div bx
                             push dx
                             mov dx, 0
                             cmp ax, 0
                             jnz del1
                             cmp bp, -1
                             jnz vyv
	         mov dx, 2dh
                            mov ah, 2
                            int 21h

	vyv:
	       pop dx
                          add dx, 30h;

                  outt:
                          mov ah, 2;
                          int 21h
                          loop vyv
ret
write_dec endp


code    ends
end     start

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 02.01.2011 в 11:19.
Nevesta_Sira вне форума Ответить с цитированием
Старый 02.01.2011, 20:33   #3
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

почитай Зубкова, там была реализация таймера
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
таймер Hunter557 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 21.09.2010 21:40
Таймер timyr1997 Общие вопросы Delphi 2 07.08.2010 15:25
Таймер Nitrino Общие вопросы C/C++ 2 29.12.2009 23:17
Таймер IVANSour Общие вопросы Delphi 2 18.01.2009 14:41
Таймер Михаил Юрьевич Общие вопросы Delphi 1 16.07.2008 08:46