Ensamblador - cronometro en assembler

 
Vista:

cronometro en assembler

Publicado por susana (1 intervención) el 27/11/2006 15:02:12
susana cardenas
necesito saber como hacer un cronometro en assembler
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:cronometro en assembler

Publicado por Karina (3 intervenciones) el 09/02/2007 15:54:22
AKI T VA ESTE..... AVER SI NO ES MUY TARDE!!!!


name "timer"

#make_boot#
org 7c00h

; set the segment registers
mov ax, cs
mov ds, ax
mov es, ax

call set_video_mode
call clear_screen

next_char:
cmp count, 0
jz stop

; print char:
mov al, c1
mov ah, 0eh
int 10h

; next ascii char:
inc c1
dec count

; set 1 million microseconds interval (1 second)
mov cx, 0fh
mov dx, 4240h
mov ah, 86h
int 15h

; stop any error:
jc stop

jmp next_char

stop:

; print message using bios int 10h/13h function
mov al, 1
mov bh, 0
mov bl, 0010_1111b
mov cx, msg_size
mov dl, 4
mov dh, 15
mov bp, offset msg
mov ah, 13h
int 10h

; wait for any key...
mov ah, 0
int 16h

int 19h ; reboot

count db 10
c1 db 'a'

msg db "remove floppy disk and press any key to reboot..."
msg_size = $ - msg


; set video mode and disable blinking (for compatibility).
set_video_mode proc
mov ah, 0
mov al, 3 ; text mode 80x25, 16 colors, 8 pages
int 10h
; blinking disabled for compatibility with dos,
; emulator and windows prompt do not blink anyway.
mov ax, 1003h
mov bx, 0 ; disable blinking.
int 10h
ret
set_video_mode endp


; clear the screen by scrolling entire screen window,
; and set cursor position on top.
; default attribute is changed to black on white.
clear_screen proc near
push ax ; store registers...
push ds ;
push bx ;
push cx ;
push di ;

mov ax, 40h
mov ds, ax ; for getting screen parameters.
mov ah, 06h ; scroll up function id.
mov al, 0 ; scroll all lines!
mov bh, 1111_0000b ; attribute for new lines.
mov ch, 0 ; upper row.
mov cl, 0 ; upper col.
mov di, 84h ; rows on screen -1,
mov dh, [di] ; lower row (byte).
mov di, 4ah ; columns on screen,
mov dl, [di]
dec dl ; lower col.
int 10h

; set cursor position to top
; of the screen:
mov bh, 0 ; current page.
mov dl, 0 ; col.
mov dh, 0 ; row.
mov ah, 02
int 10h

pop di ; re-store registers...
pop cx ;
pop bx ;
pop ds ;
pop ax ;

ret
clear_screen endp
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar