SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: osw en Domingo 15 de Agosto de 2004, 02:30
-
Hola a todos bueno disculpen si cometo unas burradas soy nuevo y necesito ayuda en el ensamblador ;) bueno toy enpesando un curso asi que parece que nos veremos seguido en aca en este foro
el problema que tengo amigos es el siguiente ni bien entre ah claces me piedieron
1 ) mostrar en pantalla la fecha hora,minuto del sistema osea mediante el ensamblador sacar de la pc fecha hora,minuto
2) y el otro modificarlo fecha hora,minuto ese mismo
y yo tengo nociones basicas puedo hacer unas cuentas cosas en el ensamblador pero no se como enpesar en estos ejercicion y necesito ayuda si me lo pusieran paso a paso seria mejor gracias de ante mano :P
-
Primero aconsejo que busques un Tutorial de asembler.
Despues:
paraplataforma DOS(MS)
la interrupcion int 21h, con las siguientes funciones
AH = 2ah: lee fecha del sistema(CX=año; DH=mes; DL=dia)
AH = 2bh: Establece fecha del sistema(CX=año; DH=mes; DL=dia)
AH = 2ch: Leer hora del sistema(CH=hora; CL=min; DH=seg)
AH = 2dh: Establece hora del sistema(CH=hora; CL=min; DH=seg)
-
gracias bueno si me consegui u manual como dijiste pero entiendo que esa es la interrupcion pero
MOV ah,2cH
INT 21H
pero con lo respecto a
CH=hora; CL=min; DH=seg
no entiendo tengo que poner mov ch,[pero que pongo aca]
podrias ser mas especifico porfavor :(
-
No tienes que mover nada a ch.
Cuando ejecutas:
mov ah,2ch
int 21
El resultado se obtiene en ch,cl,dh. Es decir en ch ya tienes la hora del sistema y puedes trabajar con ella.
Ahora bien, para cambiar la hora del sistema necesitas los datos de hora,minutos, segundos.Y entonces si tendrás que mover a ch,cl,dh los datos correspondientes para que al ejecutar:
mov ah,2dh
int 21
Los datos nuevos pasen al sistema.
-
Eso mismo.
-
Pido que consideren que si se quiere visualizar por pantalla se hara con la informaciòn en formato ASCII, lo que convendrìa alterar para visualizar un numero que refleje la informaciòn adecuada
Saludos
-
Sr. ASM
Pido que consideren que si se quiere visualizar por pantalla se hara con la informaciòn en formato ASCII, lo que convendrìa alterar para visualizar un numero que refleje la informaciòn adecuada
Saludos
eso es cierto y muy importante ya que asi tenemos un buen resultado.
-
Hola a todos:
Aqui les dejo este programa que muestra la fecha del sistema dd/mm/aa.
Para mostrar la hora podemos emplear el mismo programa con algunas modificaciones (funcion que devuelve la hora y registros que almacenan los datos) ya que las horas, minutos y segundos se pueden mostrar en la misma forma que este programa muestra los dias y meses.
El año se muestra con un procedimiento diferente.
Espero que le pueda servir a OSW.
;Programa que muestra la fecha del sistema
pila segment para stack 'stack '
dw 64 dup(' ')
pila ends
datos segment para public 'data'
dia db 0
mes db 0
anio dw 0
n1 db 0
n2 db 0
n3 db 0
n4 db 0
res dw 0
mil dw 1000
cien dw 100
diez dw 10
datos ends
codigo segment
assume ss:pila,ds:datos,cs:codigo
mensage macro x
mov ah,06h
mov dl,x
int 21h
endm
inicial proc
mov ax,datos
mov ds,ax
mov ah,2AH ;funcion que devuelve la fecha
int 21h
mov dia,dl ;movemos el valor del dia a una variable
mov mes,dh
mov anio,cx
; ********* Obtencion y despliegue del dia *********
mov al,dia ;cl obtiene la hora y se transiere a al
aam ;ax se convierte a BCD
add al,'0' ;convertimos AL en ASCII
mov n2,al ;movemos la parte baja de AX a n2
add ah,'0' ;convertimos AH en ASCII
mov n1,ah ;movemos la parte alta de AX a n1
mensage n1
mensage n2
mensage '/'
; ********* Obtencion y despliegue del mes *********
mov al,mes
aam ;ax se convierte a BCD
add al,'0' ;convertimos AL en ASCII
mov n2,al ;movemos la parte baja de AX a n2
add ah,'0' ;convertimos AH en ASCII
mov n1,ah ;movemos la parte alta de AX a n1
mensage n1
mensage n2
mensage '/'
; ********* Obtencion y despliegue del a¤o *********
mov ax,anio ;movemos el valor del año a ax
cwd ;convertirmos ax en doble palabra (es indispensable para realizar esta división)
div mil ;dividimos ax entre mil=1000, AX almacena el cociente y DX el residuo
aam ;ax es convertido a BCD
mov res,dx ;se lamacena el residuo que esta en dx a la variable RES
add al,'0' ;convertimos a ASCII la parte baja de aX que contiene el valor del residuo despues de convertirse en BCD
mov n1,al ;movemos el residuo a N!
mensage n1 ;mostramos el valor del residuo que es el promer numero del año
;mostramos el segundo numero del año
mov ax,res
cwd
div cien
aam
mov res,dx
add al,'0'
mov n1,al
mensage n1
;mostramos el tercer numero del año
mov ax,res
cwd
div diez
aam
mov res,dx
add al,'0'
mov n1,al
mensage n1
;mostramos el cuarto y ultimo numero del año
mov ax,res
aam
add al,'0'
mov n1,al
mensage n1
mov ah,4ch
int 21h
inicial endp
codigo ends
end inicial
Saludos :lightsabre: