Ensamblador - Ayuda con este código

 
Vista:

Ayuda con este código

Publicado por bubulka (3 intervenciones) el 27/08/2003 13:22:14
alguien sabe que hace este código?

Mov ax,40h
etiq: Mov es, ax
Mov dx,es:[0]
In al,dx
cmp al, 17
Je next
Jmp etiq
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:Ayuda con este código

Publicado por Tongas (18 intervenciones) el 28/08/2003 01:26:11
hay un renglon que no tiene sentido, pero el resto esta bueno...
Mov ax,40h
--------
mueve a ax el valor 40 en hexa, pero lo que creo que quiere hacer
es pasar a ah a 0, y a al a 40 en hexa.... (recorda este numero)
etiq: Mov es, ax
---
Parte de declarar una bander (un punto donde va a retornar despues),
esta pasando a "es", el valor 40... ("es" por lo general guarda
sectores de memoria
Mov dx,es:[0]
------
Mueve a "DX" el valor del primer word del sector de es... osea
(0040:0000)
In al,dx
------
Recoradas el valor 40, bueno, esto pide la entrada del puerto 40. Lo
que este puerto da es el valor del contador de pulsos del cuarso del
reloj de la PC =P... osea: un numero aleatoreo.... y lo guarda en "dx"
cmp al, 17
------
se fija si al ( que vale 40) es igual que 17...
Je next
----
si la comprovacion anterior es verdadera.. (ya vimos que no) salta a
"next"... que supongo que es lo que sigue en el codigo...
Jmp etiq
--- -
salta a la bandera "etiq"... osea, vuele a pedir un numero aleatorieo, etc, etc.... NUNCA TERMINA.... osea, se te va a trabar la compu....
Suerte, segui investigando!!!!!!!!!
Tongas
Pta: De donde lo sacaste
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

numeros aleatorios

Publicado por Sebastian (1 intervención) el 08/09/2003 06:37:42
Hola, me intereso la parte de definir un numero aleatorio pero no llegue a comprender bien lo que dijiste, te importaria, pasarme los comandos para poder hacerlo .......

Gracias !
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

RE:numeros aleatorios

Publicado por Tongas (1 intervención) el 11/09/2003 01:01:20
Despues de leer lo que Nestor escribió, creo que el tiene razón... en cuanto pueda te lo verifico... (tengo mis apuntes en casa).... Perón por si la info que pase estaba errada.... (Errar es humano, perdonar es dibino)
Tongas
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

RE:Ayuda con este código

Publicado por Néstor (5 intervenciones) el 30/08/2003 07:16:02
Hola, te comento un poco el código

Lo que hace es leer desde un puerto de comunicaciones de la máquina (ojo que puerto no es solo el COM o el LPT, también puede ser una placa de video, el modem, la red, o cualquieier cosa que tengas en el bus) y se queda leyendo hasta que encuentre un 17.

Mov ax,40h ; Escribe el número 40 hexa (64 decimal) a AX
etiq: ; define una etiqueta (label) para poder ir a esta parte
; del código
Mov es, ax ; Copia el contenido de AX (40h) a ES
Mov dx,es:[0] ; Carga el contenido de la dirección 0040:0000 en DX
In al,dx ; Acá lee un byte de un puerto y lo escribe en AL
; pero no del puerto 40h, sino del número de puerto
; que leyó de la memoria. Si por ejemplo en la
; posición 0040:0000 de memoria había un 03F8, lee
; del puerto 03F8h, si había un C800, lee de ese puerto
cmp al, 17 ; Compara el byte leído con 17 (Recordá que la
; instrucción anterior escribió en AL lo que leyó del
; puerto, cualquiera que sea)
Je next ; Si leyó un 17 va a next (que no está definido en el
; pedazo de código que copiaste, pero que debería
; estar definida una etiqueta next: en alguna parte)
Jmp etiq ; "Salta" hasta donde dice etiq: y sigue ejecutando el
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

RE:Ayuda con este código

Publicado por Mariano (1 intervención) el 12/10/2003 03:32:45
Este código debe pertenecer a un programa de comunicaciones entre el ordenador y cualquier otro periferico: otro PC , una máquina, etc. y lo que hace es esperar (se trata de un bucle)a recibir el carácter 17 (0x11) que en el protocolo de comunicaciones es XON e indica que lo que está conectado al otro lado del cable está preparado para recibir datos.
En la direción de memoria 0040:0000 comienzan una serie de variables del sistema MSDOS y concretamente en esa posición se encuentra el primer puerto serie disponible (COM1) y le siguen COM2,COM3 y COM4 cada uno ocupa dos bytes (WORD)
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