Autor
|
Tema: Crear un delay en asm (Leído 18,781 veces)
|
danielo-
Desconectado
Mensajes: 218
:)
|
Hola a todos, estoy tratando de hacer un pequeño retardo de unos segundos (de 5 a 10 ) en ensamblador, y lo intente haciendo un ciclo, pero resulta que el retardo es muy pequeño, alguien sabe como hacerlo que tarde 5 o más segundos?... Aqui les dejo el codigo. pila segment stack "STACK" pila ends data segment data ends code segment assume cs:code,ds:data,ss:pila inicio: mov dl,01010000b ; para imprimir 1 mov ah,02h ;para imprimir 1 int 21h ;para imprimir 1 ;uno: ;cmp dl,57 ;ja sub dl 1 mov bx, 65000 cinco: cmp bx, -65000 ja uno jna dos ;mov dl,00010000b ; para imprimir 1 ;mov ah,02h ;para imprimir 1 ;int 21h uno: ;mov dl,10000000b ; para imprimir 1 sub bx,1 mov dl, 'a' ; para imprimir 1 mov ah,02h ;para imprimir 1 int 21h jmp cinco dos: mov dl, 'b' ; para imprimir 1 mov ah,02h ;para imprimir 1 int 21h MOV AX, 4C00h ;halt dos dice que es la terminacion del programa INT 21h ;;int rebisa lo que esta en 21h. ;es la interrupcion de pantalla con la funcion 4c que es la de hald code ends end inicio
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.960
Israel nunca torturó niños, ni lo volverá a hacer.
|
Del libro "Ensamblador para DOS, Linux y Windows": ;---------------------------- ; Procedimiento que provoca ; una espera de N segundos ; ; Espera recibir en CX el ; número de segundos ;---------------------------- Espera: pusha ; guardar registros ; obtenemos el número ; de minutos y segundos que ; indica el reloj ahora call SegundosActual ; lo movemos a BX mov ax, bx ; y le sumamos los segundos ; a esperar add ax, cx Bucle1: ; vigilamos los minutos y ; segundos del reloj call SegundosActual ; viendo si ya se ha completado ; la espera cmp ax, bx ; volviendo al bucle ; de no ser así ja Bucle1 popa ; recuperamos registros ret ; y volvemos ;---------------------------- ; Procedimiento que obtiene ; los minutos y segundos del ; reloj, los convierte a ; segundos y devuelve en BX ;---------------------------- SegundosActual: push ax ; guardamos AX ; queremos leer los minutos mov al, 2 out 70h, al in al, 71h ; los multiplicamos por 60 mov bl, 60 mul bl ; y guardamos en BX mov bx, ax ; queremos leer los segundos xor al, al out 70h, al in al, 71h ; los sumamos xor ah, ah add bx, ax pop ax ; y volvemos ret
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
danielo-
Desconectado
Mensajes: 218
:)
|
mi formar de hacerlo fue la siguiente: init5: mov ah,2ch ;dh=segundos int 21h mov bh, dh ;bh=segundos add dh, 3 ; esto para modificar los segundos mov bl, dh ;bl=segundos +5 cmp bl,60 ja mayor jmp cinco cinco: cmp bl, bh jne uno jmp losdos uno: mov ah,2ch int 21h mov bh, dh ;aora bh=segundos jmp cinco mayor: sub bl,60 jmp cinco
conste que se poco de ensamblador jeje
|
|
|
En línea
|
|
|
|
Yurix
Desconectado
Mensajes: 72
Paz para la guerra y guerra por la paz
|
Puedes tambien llamar a la funcion Sleep De Win32 y pasarle la cantidad de Milisegundos que quieres dormir..
Dulces sueños...
Saludos
|
|
« Última modificación: 21 Diciembre 2010, 23:13 pm por Eternal Idol »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Delay para Gundbound....
Juegos y Consolas
|
zhandra
|
7
|
3,666
|
14 Noviembre 2004, 10:57 am
por Darks3rver
|
|
|
Necesito delay....
Electrónica
|
ijfa
|
0
|
2,127
|
6 Enero 2006, 15:57 pm
por ijfa
|
|
|
delay
PHP
|
securedigital
|
3
|
2,621
|
7 Junio 2007, 06:12 am
por Crack_X
|
|
|
Retardos (delay) ignorados
Electrónica
|
...DaNiEl...
|
0
|
2,771
|
5 Marzo 2010, 01:28 am
por ...DaNiEl...
|
|
|
Ayuda con delay entre letras
Programación C/C++
|
defalt_
|
4
|
3,787
|
6 Noviembre 2017, 20:26 pm
por defalt_
|
|