• Viernes 3 de Mayo de 2024, 05:58

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - guiweb

Páginas: [1]
1
Delphi / Re: Delphi
« en: Miércoles 16 de Agosto de 2006, 02:52 »
Tienes la Delphi 3,4,5,6,7 2005 ;)

2
ASM (Ensamblador) / Re: Com1. Ensamblador
« en: Martes 11 de Julio de 2006, 04:59 »
bueno el plazo ya se me acabo y el programa lo tuve que entregar, la buena noticia es que TENGO HECHO EL CHAT EN ASSEMBLER CON INTERRUPCIONES :D que super bueno, tiene un pequeño detalle que es cuando me llegan los caracteres despues el cursor no regresa a la zona de escritura, por lo que debo arreglar este inconveniente y listo :D.

Gracias por su ayuda y en especial a Bicholey, te pasaste amigo muchas gracias

Cualquier cosa si alguien lo quiere, es cosa que deje el pedido aca en el foro, yo voy a seguir perfeccionandolo para lanzarlo a la web...

Saludos

3
ASM (Ensamblador) / Re: Iniciar Puerto Serie
« en: Viernes 7 de Julio de 2006, 00:10 »
ejej no, si estamos claro en eso, pero lo probe en 2 maquinas con pto. serie y ni asi quizo..

saludos

4
ASM (Ensamblador) / Re: Com1. Ensamblador
« en: Jueves 6 de Julio de 2006, 22:24 »
Gracias por tu ayuda, la verdad es que me he propuesto hacerlo solo con ASM, mira adelante un poco el codigo y segun yo, deberia estar funcionando correctamente, pero lo probe con 2 computadores y no funciono, mira te muestro el Codigo Completo..
bueno y espero que le sirva a algun estudiante por ahi que este desesperado buscandolo jejeje
es un chat que recibe por interrupcion, a traves de puerto serie..
Bicholey , amigo te pido porfavor si puedes probarlo y ver si a ti te funciona, muchas gracias
Código: Text
  1.  
  2. STACK SEGMENT STACK
  3.    db 256 dup (0)
  4. STACK ENDS
  5.  
  6. DATA SEGMENT
  7.   copyrigth db 'Programa Desarrollado por Guillermo Stortoni y Hernan Escalante, UCINF 2006',13,'$'
  8.  letra_enviada db 1
  9.  letra_recibida db 1
  10.  letra_enviada_ok db 1
  11.  letra_recibida_ok db 1
  12.  ren_limpio_rec db 1
  13.  ren_limpio db 1
  14.  renglon_limpio db '                                                                              ',13,'$'
  15.  renglon_envia db 5
  16.  renglon_recibe db 5
  17.  columna_envia db 5
  18.  columna_recibe db 5
  19.  viejoip8 dw 0
  20.  viejocs8 dw 0
  21.  cartel1 db '...Me estan Diciendo:',10,13,'$'
  22.  cartel2 db '...Estoy Escribiendo:',10,13,'$'
  23.  intro db 10,'$'
  24. DATA ENDS
  25.  
  26. ;Definicion de macros a utilizar
  27. ;///////////////////////////////////////////////////////////////
  28. PONVECTOR MACRO TIPO, SUBRUTINA
  29.   push di
  30.   mov di,0
  31.   mov es,di
  32.   mov di, tipo*4
  33.   cli
  34.   mov word ptr es:[di],offset subrutina
  35.   mov word ptr es:[di+2],seg subrutina
  36.   sti
  37.   pop di
  38. ENDM
  39.  
  40. GUARDAVECTOR MACRO TIPO, VIEJOIP, VIEJOCS
  41.   mov di,0
  42.   mov es,di
  43.   mov di, tipo*4
  44.   cli
  45.   mov ax,data
  46.   mov ds,ax
  47.   mov ax,es:[di]
  48.   mov VIEJOIP,ax
  49.   mov ax,es:[di+2]
  50.   mov VIEJOCS,ax
  51.   sti
  52. ENDM
  53.  
  54. RESTAURAVECTOR MACRO TIPO, VIEJOIP, VIEJOCS
  55.   mov di,0
  56.   mov es,di
  57.   mov di, tipo*4
  58.   cli
  59.   mov ax,data
  60.   mov ds,ax
  61.   mov ax,VIEJOCS
  62.   mov es:[di+2],ax
  63.   mov ax,VIEJOIP
  64.   mov es:[di],ax
  65.   sti
  66. ENDM
  67.  
  68. CODE SEGMENT
  69.   MiProg proc FAR
  70.   assume cs:code,ds:data
  71.  
  72.    mov ax,data
  73.   mov ds,ax
  74.  
  75.  &#59;inicializo la variable letra_recibida_ok con un 0, para iniciar la transmision.
  76.   mov letra_recibida_ok,0
  77.   mov renglon_recibe,1
  78.   mov renglon_envia,13
  79.   mov columna_envia,0
  80.   mov columna_recibe,0
  81.   mov ren_limpio,0
  82.   mov ren_limpio_rec,0
  83.  &#59;limpio la pantalla :D
  84.   mov ax,0600h
  85.   mov bh,17h
  86.   mov cx,0000h
  87.   mov dx,184fh
  88.   int 10h
  89.  &#59;muevo el cursor a la posicion renglon 0, columna 1: con el mensaje "aca se recibe"&#59;)
  90.   MOV ah,02h
  91.   MOV bh,00h
  92.   MOV dh,00
  93.   MOV dl,01
  94.   INT 10h
  95.   lea dx,cartel1
  96.   mov ah,09h
  97.   int 21h
  98.  &#59;muevo el cursor a la posicion renglon 12, columna 1: con el mensaje "aca se envia"&#59;)
  99.   MOV ah,02h
  100.   MOV bh,00h
  101.   MOV dh,12
  102.   MOV dl,01
  103.   INT 10h
  104.   lea dx,cartel2
  105.   mov ah,09h
  106.   int 21h
  107.  &#59; pongo el copyrigth
  108.   MOV ah,02h
  109.   MOV bh,00h
  110.   MOV dh,24
  111.   MOV dl,00
  112.   INT 10h
  113.   lea dx,copyrigth
  114.   mov ah,09h
  115.   int 21h
  116.  &#59;Inhabilito interrupcion
  117.   cli
  118.  
  119. ;////////// PROGRAMACION DEL PUERTO SERIE//////////////////////////
  120.  
  121. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; Registro de línea de control
  122.   Mov Dx,3FBH
  123.   Mov AL,10000000b
  124.   Out Dx, AL
  125. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; Divisor de la veloidad en bauidos (byte alto)
  126.    Mov DX,3F9H
  127.   Mov AL,0
  128.   Out Dx, AL
  129. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; Divisor de la velocidad en baudios (byte bajo)
  130.   Mov Dx,3F8H
  131.   Mov AL,12H
  132.   Out DX,AL
  133. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; Longuitud de los caracteres los bits 0 y 1 deben estar en 1para que sea de 8 bit
  134.   Mov AL,00000011b
  135.   Mov DX,3FBH
  136.   Out DX, AL
  137. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; INSTRUCCION DEL PROFE
  138.   Mov DX,3FCH
  139.   Mov AL,03h
  140.   Out DX,AL
  141. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; Habilito dicho por el profe
  142.   Mov DX,3F9H
  143.   Mov AL,1
  144.   Out Dx, AL
  145.  
  146. ;////////////////////////////
  147.   GUARDAVECTOR 8, VIEJOIP8, VIEJOCS8
  148.   PONVECTOR 12, recibe
  149.            
  150. &#59;Desenmascaro la IRQ4
  151.   in al,21h        &#59;Leo el regístro de mascara
  152.   and al,11101111b &#59;Solo altero el bit 5 perteneciente a la IRQ4
  153.   out 21h,al       &#59;Modifico el registro de mascara con el IRQ4 desenmascarado
  154.  
  155. &#59;Habilito interrupcion
  156.   sti
  157.   jmp escribe
  158.  
  159.  &#59;######################### ACA RECIBO, MUESTRO EN PANTALLA Y ACTUALIZO EL RENGLON ##########################
  160.  &#59;#                                                                                                         #
  161.  &#59;#                                                                                                         #
  162.   recibir: MOV ah,02h     &#59;peticion para colocar el cursor
  163.   MOV bh,00h              &#59;numero de pagina 0
  164.   MOV dh,renglon_recibe   &#59;la ultima posicion donde se escribio una letra
  165.   MOV dl,columna_recibe   &#59;la columna, la incrementa automaticamente la interrupcion RECIBE
  166.   INT 10h
  167.   CMP letra_recibida,0Dh  &#59;me llego un enter?
  168.   JNE sigue
  169.   mov columna_recibe,0
  170.   cmp renglon_recibe,9
  171.   jne sigue
  172.   mov ren_limpio_rec,1
  173.   mov renglon_recibe,1
  174.   jmp sigue
  175. sigue: cmp ren_limpio_rec,1
  176.   jne continua
  177.   lea dx,renglon_limpio
  178.   mov ah,09h
  179.   int 21h
  180.   jmp continua
  181. continua:  mov dl,letra_recibida
  182.   MOV ah,06h             &#59; la funcion 06h, me sirve para mostrar 1 caracter
  183.   INT 21h
  184.   MOV letra_recibida_ok,0
  185.   INC columna_recibe
  186.   JMP escribe
  187.  
  188.  &#59;######################### ACA ESCRIBO Y ENVIO POR PUERTO ##########################
  189.  &#59;#
  190.  &#59;#
  191.   escribe:  CMP letra_recibida_ok,1&#59; si la interrupcion hizo que me cayera una letra, dejo que se escriba la letra que llego
  192.   je recibir            &#59;le doy la posibilidad de que la escriba, antes de yo seguir escribiendo
  193.   MOV ah,02h           &#59;peticion para colocar el cursor
  194.   MOV bh,00h           &#59;numero de pagina 0
  195.   MOV dh,renglon_envia &#59;uso el ultimo renglon que me quedo, para seguir escribiendo en la misma posicion&#59;)
  196.   MOV dl,columna_envia &#59;uso la ultima columna que me quedo, para seguir escribiendo en la misma posicion&#59;)
  197.   INT 10h              &#59;interrupcion del bios
  198.   CMP ren_limpio,1     &#59;esta variable, si esta en 1, me indica que ya he escrito 10 renglones, por lo tanto borra el primer renglon
  199.   jne repite           &#59;si no he escrito aun 10 renglones, sigue con el codigo normalmente
  200.   lea dx, renglon_limpio;si no es asi, borra el primer renglon utilizado para poder escribir libremente
  201.   mov ah,09h           &#59;muestra el '             '
  202.   int 21h              &#59;DOS
  203.   repite: MOV ah,01h   &#59;pido solo 1 caracter el cual se despliega en pantalla y se guarda en al
  204.   INT 21h              &#59;DOS
  205.   cmp al,1Bh           &#59;comparo si el caracter presionado es 'esc' si es asi, se terminará el programa, de lo contrar continua
  206.   je salir_programa     &#59; esta esta clara cierto?
  207.   MOV letra_enviada,al &#59;guardo la tecla presionada en la variable tecla_enviada
  208.   MOV letra_enviada_ok,0&#59;con esto pongo una bandera de que he escrito una letra
  209.   MOV DX,0000           &#59;puerto COM1
  210.   MOV AH,01             &#59; funcion 01h-enviando un caracter al COM
  211.   MOV AL,letra_enviada  &#59;caracter a ser enviado
  212.   INT 14
  213.  &#59;MOV dx,3F8h           &#59; llamo al puerto COM1
  214.  &#59;out dx,al             &#59; escribo el caracter presionado por el puerto
  215.   inc columna_envia     &#59; si escribi una tecla, debo moverme un espacio, para eso incremento la columna
  216.   cmp letra_enviada,0dh &#59;comparo si la tecla presionada fue enter, de ser asi, necesitare hacer un salto de linea
  217.   jne repite            &#59;sino, sigue escribiendo
  218.   mov columna_envia,0   &#59;si aprete enter, retorno el carro
  219.   inc renglon_envia     &#59;salto 1 renglon
  220.   lea dx,intro          &#59;cargo un mensaje que lo unico que tiene es 1 espacio vacio
  221.   mov ah,09h            &#59;lo muestro en pantalla
  222.   int 21h               &#59;DOS
  223.   cmp renglon_envia,23  &#59;esto es para contar si ya mi cursor esta en el renglon 23
  224.   je  mod_renglon_envia &#59;y si es asi, lo reinicio al 13
  225.   jne escribe           &#59; sino, sigo escribiendo
  226. mod_renglon_envia: mov renglon_envia,13
  227.   mov ren_limpio,1       &#59;pongo una bandera avisando que y he escrito 23 renglones
  228.   jmp escribe             &#59;sigo escribiendo
  229.  
  230.  
  231. RESTAURAVECTOR 8, VIEJOIP8, VIEJOCS8
  232.  
  233. ;Enmascaro la IRQ4 en el controlador de interrupciones, y la restauro
  234. in al,21h
  235. or al,00010000b
  236. out 21h,al
  237.  
  238. salir_programa:  mov ax,4c00h
  239.                 int 21h
  240.  
  241. ;/////////INTERRUPICON PARA RECIBIR////////////
  242. recibe:
  243.   push ax
  244.   push dx
  245.   push ds
  246.  
  247.   mov ax,data
  248.   mov ds,ax
  249.   mov dx,3f8h
  250.   in al,dx
  251.   mov letra_recibida,al
  252.   mov letra_recibida_ok,1
  253.   inc renglon_recibe
  254.   mov al,20h
  255.   out 20h,al
  256.  
  257.   pop ds
  258.   pop dx
  259.   pop ax
  260.       IRET
  261.  
  262. MiProg ENDP
  263. CODE ENDS
  264. END MiProg
  265.  
  266.  

5
ASM (Ensamblador) / Iniciar Puerto Serie
« en: Jueves 6 de Julio de 2006, 16:03 »
Hola que tal, quisiera que me guiaran porfa en esto:
estoy haciendo un chat por COM1, y necesito saber si esta forma de iniciar mi puerto serie es correcta, muchas Gracias
Código: Text
  1.  
  2. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; Registro de línea de control
  3.   Mov Dx,3FBH
  4.   Mov AL,10000000b
  5.   Out Dx, AL
  6. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; Divisor de la veloidad en bauidos (byte alto)
  7.    Mov DX,3F9H
  8.   Mov AL,0
  9.   Out Dx, AL
  10. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; Divisor de la velocidad en baudios (byte bajo)
  11.   Mov Dx,3F8H
  12.   Mov AL,12H
  13.   Out DX,AL
  14. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; Longuitud de los caracteres los bits 0 y 1 deben estar en 1para que sea de 8 bit
  15.   Mov AL,00000011b
  16.   Mov DX,3FBH
  17.   Out DX, AL
  18. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; INSTRUCCION DEL PROFE
  19.   Mov DX,3FCH
  20.   Mov AL,8d
  21.   Out DX,AL
  22. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; Habilito dicho por el profe
  23.   Mov DX,3F9H
  24.   Mov AL,1
  25.   Out Dx, AL
  26.  
  27.  
lo que pasa es que en mi Laptop, no tengo puerto serie, y cuando lo quiero ejecutar me dice que no se encuentra (logicamente) el COM1, pero cuando conecto los 2 computadores, no pasa nada... entonces eso me tiene encerrado en este problema..

se los agradezco un mundo

6
VB .NET / Re: Manual De Vb .net
« en: Jueves 6 de Julio de 2006, 04:00 »
yo tambien lo quiero porfa, gstortoni@vtr.net   Muchas Gracias ;) :D

7
ASM (Ensamblador) / Re: Com1. Ensamblador
« en: Martes 4 de Julio de 2006, 21:32 »
Cita de: "Radoslav"
el codigo como tal parece no tener errores, pero las instrucciones in y out no se acostumbra usarlas en el PC lo cual no quiere decir que no funcione adecuadamente , primeramente deberias asegurar que la direccion que le estas dando como tu puerto COM1 sea la adecuada y que los dos puerto com1 de las dos maquinas que quieres intercomunicar esten empatados de tener complicaciones yo recomendaria el uso de los servicios de la int 14 pero de estar restringido, todo se soluciuonan haciendo pruebas, yo hice el chat que dices pero con turbo C y ASM mezclado deja lo busco y te lo paso para que lo que veas
ok
 ?
ok muchas gracias, te cuento que el codigo que subi, solo muestra basura y se cierra inmediatamente... cosa rara, espero poder ver tu codigo y asi entender un poquito mas,

VAMOS VAMOS QUE SE PUEDE :D ;)  :D

8
ASM (Ensamblador) / Re: Com1. Ensamblador
« en: Martes 4 de Julio de 2006, 21:08 »
Cita de: "Radoslav"
:P  :P

Yo creo que antes de discutir cualquier cosa aun no no has  aclarado sobre que estas trabajando, es decir el programa  es para una pc para un micro para un sistema minimo no se en fin deberias aclarar ese punto lo considero necesario
yo tengo unos 3 o 4 archivos que trabajan ptos serie son para usar el pto serie de una pc es decir COM1
.
Estimadicimo, usted tiene toda la santa razon.
Estoy trabajando para usar el puerto serie (com1) de un PC, la idea del chat es conectar por com1 con los pines 2-3,3-2, 5-5 del puerto 2 PC's y por DOS chatear un poco, estoy trabajando sobre un AMD sempron 3100 con windows XP pro.
bueno parece que ahora si avance algo y me siento feliz conmigo mismo, vean el codigo que les dejo, y si alguien puede probarlo, se los agradecerían un monton.
Código: Text
  1.  
  2. STACK SEGMENT STACK
  3.  
  4. STACK ENDS
  5.  
  6. DATA SEGMENT
  7.  
  8.  letra_enviada db 1
  9.  letra_recibida db 1
  10.  letra_enviada_ok db 1
  11.  letra_recibida_ok db 1
  12.  viejoip8 dw 0
  13.  viejocs8 dw 0
  14.  contador_fin dw 500
  15.  
  16. DATA ENDS
  17.  
  18. ;Definicion de macros a utilizar
  19. ;///////////////////////////////////////////////////////////////
  20. PONVECTOR MACRO TIPO, SUBRUTINA
  21.   push di
  22.   mov di,0
  23.   mov es,di
  24.   mov di, tipo*4
  25.   cli
  26.   mov word ptr es:[di],offset subrutina
  27.   mov word ptr es:[di+2],seg subrutina
  28.   sti
  29.   pop di
  30. ENDM
  31.  
  32. GUARDAVECTOR MACRO TIPO, VIEJOIP, VIEJOCS
  33.   mov di,0
  34.   mov es,di
  35.   mov di, tipo*4
  36.   cli
  37.   mov ax,data
  38.   mov ds,ax
  39.   mov ax,es:[di]
  40.   mov VIEJOIP,ax
  41.   mov ax,es:[di+2]
  42.   mov VIEJOCS,ax
  43.   sti
  44. ENDM
  45.  
  46. RESTAURAVECTOR MACRO TIPO, VIEJOIP, VIEJOCS
  47.   mov di,0
  48.   mov es,di
  49.   mov di, tipo*4
  50.   cli
  51.   mov ax,data
  52.   mov ds,ax
  53.   mov ax,VIEJOCS
  54.   mov es:[di+2],ax
  55.   mov ax,VIEJOIP
  56.   mov es:[di],ax
  57.   sti
  58. ENDM
  59.  
  60.  
  61. CODE SEGMENT
  62.   MiProg proc FAR
  63.   assume cs:code,ds:data
  64.  
  65.   mov ax,data
  66.   mov ds,ax
  67. ;Inhabilito interrupcion
  68.   cli
  69.  
  70. ;////////// PROGRAMACION DEL PUERTO SERIE//////////////////////////
  71.  
  72. ;;;;;;;;;;;;;;;;;;;;;;;;;; Registro de línea de control
  73.   Mov Dx,3FBH
  74.   Mov AL,10000000b
  75.   Out Dx, AL
  76.   
  77. ;;;;;;;;;;;;;;;;;;;;;;;;;; Divisor de la veloidad en bauidos (byte alto)
  78.    Mov DX,3F9H
  79.   Mov AL,0
  80.   Out Dx, AL
  81.   
  82. ;;;;;;;;;;;;;;;;;;;;;;;;;; Divisor de la velocidad en baudios (byte bajo)
  83.   Mov Dx,3F8H
  84.   Mov AL,60H
  85.   Out DX,AL
  86.   
  87. ;;;;;;;;;;;;;;;;;;;;;;;;;; Longuitud de los caracteres los bits 0 y 1 deben estar en 1para que sea de 8 bit
  88.   Mov AL,00000011b
  89.   Mov DX,3FBH
  90.   Out DX, AL
  91.   
  92.   Mov DX,3FCH;INSTRUCCION DEL PROFE
  93.   Mov AL,8d
  94.   Out DX,AL
  95.  
  96. ;;;;;;;;;;;;;;;;;;;;;;;;;; Guardamos el puerto
  97.   Mov DX,3F8H
  98.   IN AL,DX;;;;;;;;;;;;;;;;;leo que es lo que me llega por el puerto  
  99.   
  100.  
  101. ;////////////////////////////
  102.         GUARDAVECTOR 8, VIEJOIP8, VIEJOCS8
  103.         PONVECTOR 8, envia
  104.   PONVECTOR 9, recibe
  105.            
  106. ;Desenmascaro la IRQ4
  107.   in al,21h        ;Leo el regístro de mascara
  108.   and al,11101111b&#59;Solo altero el bit 5 perteneciente a la IRQ4
  109.   out 21h,al      &#59;Modifico el registro de mascara con el IRQ4 desenmascarado
  110.   
  111. ;Habilito interrupcion
  112.   sti
  113. espera:  CMP contador_fin,0
  114.   JE  salir_programa
  115. &#59;;;;;;;;;;;;;;;;;;;;;;;;;Ahora, voy a verificar si tengo alguna nueva letra
  116.   CMP letra_recibida_ok,1
  117.   JNE escribe
  118.   MOV AH,09h    &#59;;;; si tengo una nueva letra, la cargo en dx, y la muestro en pantalla.
  119.   LEA DX,letra_recibida  ;;;;;;;;;;;;Con esta funcion, se escribe un caracter en pantalla y se guarda en al
  120.   INT 21h
  121.   MOV letra_recibida_ok,0
  122.   JMP escribe
  123.   
  124. escribe:  CMP letra_enviada_ok,1;una vez que se haya enviado la letra, dejo el valor en 1, para que pueda enviar otra
  125.   JNE decrementa
  126.   CMP contador_fin,0
  127.   CMP letra_enviada,1
  128.   JNE decrementa
  129.   JE salir_programa
  130.   MOV ah,01h
  131.   INT 21h
  132.   MOV letra_enviada,al
  133.   MOV letra_enviada_ok,0;con esto digo que he escrito una letra y que está lista para ser enviada
  134.   JMP decrementa
  135.  
  136.    decrementa: DEC contador_fin
  137.    JNZ espera  &#59;;;;; aca itero, para ver si he recibido una letra o si envie una letra.
  138.    JMP salir_programa
  139.  
  140.   RESTAURAVECTOR 8, VIEJOIP8, VIEJOCS8
  141.  
  142. ;Enmascaro la IRQ4 en el controlador de interrupciones, y la restauro
  143.   in al,21h
  144.   xor al,00010000b
  145.   out 21h,al
  146.  
  147. salir_programa:  mov ax,4c00h
  148.   int 21h
  149.  
  150. ;/////////INTERRUPICON PARA RECIBIR////////////
  151. recibe:
  152.   push ax
  153.   push dx
  154.   push ds
  155.  
  156.   mov ax,data
  157.   mov ds,ax
  158.   mov dx,3f8h
  159.   in al,dx
  160.   jz sale_recibe
  161.   mov letra_recibida,al
  162.   mov letra_recibida_ok,1
  163.   mov contador_fin,500
  164.   jmp sale_recibe
  165.   sale_recibe: mov al,20h
  166.   out 20h,al
  167.  
  168.   pop ds
  169.   pop dx
  170.   pop ax
  171.       IRET
  172.   
  173.  
  174. ;////////INTERRUPCION PARA ENVIAR////////////
  175. envia:
  176.   push ax
  177.   push dx
  178.   push ds
  179.  
  180.   mov ax,data
  181.   mov ds,ax
  182.   
  183.   CMP letra_enviada_ok,0
  184.   JNE sale_envia
  185.   Mov DX,3F8H
  186.   MOV al,letra_enviada
  187.    OUT DX,al;;;;;;;;;;;;;;;;; ACA TENGO GUARDADO EL DATO QUE VIENE DESDE TECLADO
  188.   MOV letra_enviada_ok,1
  189.   mov contador_fin,500
  190.   jmp sale_envia
  191.   
  192.   sale_envia: mov al,20h
  193.   out 20h,al
  194.  
  195.   pop ds
  196.   pop dx
  197.   pop ax
  198.       
  199.       IRET
  200. ;////////////////////////////
  201.  
  202. MiProg ENDP
  203. CODE ENDS
  204. END MiProg
  205.  
  206.  
  207.  
por lo pronto, no es nada espectacular, estoy en el trabajo y no lo he podido probar ya que no tengo mi cable aqui, pero espero que alguien lo pueda probar y que me cuente jejej GRANDE OTTO PETERSEN (mi profe)

EDITADO POR MII
bueno parece que me emocione un poco, la verdad es que todo este codigo no hace nada  :blink: solo muestra un monton de basura, no lo habia podido probar, ya que mi notebook no tiene puerto seria :P bueno la cosa es que muestra solo basura y se cierra enseguida, a que se puede deber?? :scream:  :alien:  :ph34r:

9
ASM (Ensamblador) / Re: Com1. Ensamblador
« en: Martes 4 de Julio de 2006, 18:52 »
mira, esto es lo que llevo hecho de mi programa, aun no está listo, asi que si ven alguna barbaridad, no se enoje :D

Código: Text
  1.  
  2. STACK SEGMENT STACK
  3.  
  4. STACK ENDS
  5.  
  6. DATA SEGMENT
  7.  
  8.  letra dw 1
  9.  letra_ok db 1
  10.  cont db 5
  11.  
  12. DATA ENDS
  13.  
  14. ;Definicion de macros a utilizar
  15. ;///////////////////////////////////////////////////////////////
  16. PONVECTOR MACRO TIPO, SUBRUTINA
  17.   push di
  18.   mov di,0
  19.   mov es,di
  20.   mov di, tipo*4
  21.   cli
  22.   mov word ptr es:[di],offset subrutina
  23.   mov word ptr es:[di+2],seg subrutina
  24.   sti
  25.   pop di
  26. ENDM
  27.  
  28. GUARDAVECTOR MACRO TIPO, VIEJOIP, VIEJOCS
  29.   mov di,0
  30.   mov es,di
  31.   mov di, tipo*4
  32.   cli
  33.   mov ax,data
  34.   mov ds,ax
  35.   mov ax,es:[di]
  36.   mov VIEJOIP,ax
  37.   mov ax,es:[di+2]
  38.   mov VIEJOCS,ax
  39.   sti
  40. ENDM
  41.  
  42. RESTAURAVECTOR MACRO TIPO, VIEJOIP, VIEJOCS
  43.   mov di,0
  44.   mov es,di
  45.   mov di, tipo*4
  46.   cli
  47.   mov ax,data
  48.   mov ds,ax
  49.   mov ax,VIEJOCS
  50.   mov es:[di+2],ax
  51.   mov ax,VIEJOIP
  52.   mov es:[di],ax
  53.   sti
  54. ENDM
  55.  
  56.  
  57. CODE SEGMENT
  58.   MiProg proc FAR
  59.   assume cs:code,ds:data
  60.  
  61.   mov ax,data
  62.   mod ds,ax
  63. &#59;Inhabilito interrupcion
  64.   cli
  65.  
  66. ;////////// PROGRAMACION DEL PUERTO SERIE//////////////////////////
  67.  
  68. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; Registro de línea de control
  69.   Mov Dx,3FBH
  70.   Mov AL,10000000b
  71.   Out Dx, AL
  72.  
  73. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; Divisor de la veloidad en bauidos (byte alto)
  74.    Mov DX,3F9H
  75.   Mov AL,0
  76.   Out Dx, AL
  77.  
  78. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; Divisor de la velocidad en baudios (byte bajo)
  79.   Mov Dx,3F8H
  80.   Mov AL,12H
  81.   Out DX,AL
  82.  
  83. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; Longuitud de los caracteres los bits 0 y 1 deben estar en 1para que sea de 8 bit
  84.   Mov AL,00000011b
  85.   Mov DX,3FBH
  86.   Out DX, AL
  87.  
  88.   Mov DX,3FCH&#59;INSTRUCCION DEL PROFE
  89.   Mov AL,8d
  90.   Out DX,AL
  91.  
  92. &#59;;;;;;;;;;;;;;;;;;;;;;;;;; Guardamos el puerto
  93.   Mov DX,3F8H
  94.   IN AL,DX&#59;;;;;;;;;;;;;;;;;leo que es lo que me llega por el puerto  
  95.  
  96.  
  97. ;////////////////////////////
  98.         GUARDAVECTOR 8, VIEJOIP8, VIEJOCS8
  99.         PONVECTOR 8, envia
  100.   PONVECTOR 9, recibe
  101.            
  102. &#59;Desenmascaro la IRQ4
  103.   in al,21h        &#59;Leo el regístro de mascara
  104.   and al,11101111b &#59;Solo altero el bit 5 perteneciente a la IRQ4
  105.   out 21h,al       &#59;Modifico el registro de mascara con el IRQ4 desenmascarado
  106.  
  107. &#59;Habilito interrupcion
  108.   sti
  109.   CMP letra_ok,1  
  110.    AA1: MOV AH,01h  &#59; ACA HAGO TODO LO NECESARIO PARA PODER IMPRIMIR UN CARACTER EN PANTALLA
  111.   INT 21h
  112.   MOV CL,AL
  113.   MOV CONT,1
  114.   JMP AA1
  115.    aqui:
  116.   cmp fin,1
  117.   jne aqui
  118.  
  119.   RESTAURAVECTOR 8, VIEJOIP8, VIEJOCS8
  120.  
  121. &#59;Enmascaro la IRQ4 en el controlador de interrupciones, y la restauro
  122.   in al,21h
  123.   or al,0001 0000
  124.   out 21h,al
  125.  
  126.   mov ax,4c00h
  127.   int 21h
  128.  
  129. ;/////////INTERRUPICON PARA RECIBIR////////////
  130. recibe:
  131.   push ax
  132.   push dx
  133.   push ds
  134.  
  135.   mov ax,data
  136.   mov ds,ax
  137.  
  138.   mov al,20h
  139.   out 20h,al
  140.  
  141.   pod ds
  142.   pop dx
  143.   pop ax
  144.       IRET
  145.  
  146.  
  147. ;////////INTERRUPCION PARA ENVIAR////////////
  148. envia:
  149.   recibe:
  150.   push ax
  151.   push dx
  152.   push ds
  153.  
  154.   mov ax,data
  155.   mov ds,ax
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.   Mov DX,3F8H
  163.    
  164.   OUT DX,CL&#59;;;;;;;;;;;;;;;;; ACA TENGO GUARDADO EL DATO QUE VIENE DESDE TECLADO
  165.  
  166.  
  167.  
  168.  
  169.   mov al,20h
  170.   out 20h,al
  171.  
  172.   pod ds
  173.   pop dx
  174.   pop ax
  175.      
  176.       IRET
  177. ;////////////////////////////
  178.  
  179. MiProg ENDP
  180. CODE ENDS
  181. END MiProg
  182.  
  183.  
  184.  
bueno, eso es lo que llevo, Saludos

10
ASM (Ensamblador) / Re: Com1. Ensamblador
« en: Domingo 2 de Julio de 2006, 05:41 »
al verdad que me ha sido muy util, pero no estoy con la certeza, o mas bien estoy con muchas dudas... la verdad se que es mucho pedir, pero me estoy enredando solo, podrian escribir un pequeñito codigo de como programar el pto serie y enviar un dato por el?? se los agradeceria un mundo ya que aun sigo perdido sobre como hacerlo  :unsure:  :(

muchas gracias anticipadas.

11
ASM (Ensamblador) / Re: Com1. Ensamblador
« en: Martes 20 de Junio de 2006, 17:42 »
disculpa, no me acuerdo bien cual es, si era el 378 cosa que ya se qe no es, o era el 3F8H, supongo que ese si era... porfa omite el 378 y cambialo por 3F8H para que se entienda mi pregunta anterior

12
ASM (Ensamblador) / Re: Com1. Ensamblador
« en: Martes 20 de Junio de 2006, 16:50 »
ufff muchisimas gracias por la respuesta.
pero tengo una duda... cuando hacemos trabajos en clases, (todo en papel, nada de computacion) y decidimos escribir algo por el puerto serie le damos a:

mov dx,378H
mov al,xxxxh
out dx,al


entonces, para que escribo el 378H??? es para indicarle que se vaya por el serie?? pero si al inicializarlo nunca mensione este numero o_O..... jiji como veras tengo algunas dudillas nada mas :P


Muchas Gracias

13
ASM (Ensamblador) / Re: Com1. Ensamblador
« en: Martes 20 de Junio de 2006, 15:59 »
wow porfin encuentro un foro donde la Gente de Verdad te ayuda y no te dice: "sabes.. yo tengo ese codigo que necesitas, cuanto estas dispuesto a pagar?"

veo que estan hablando de puerto serie.. la verdad es que yo tengo que hacer un chat por interrupciones por serie... NO QUIERO que me lo hagan, sino que sacarme de varias dudas, ya que me fascina Assembler, pero no soy un experto, por ejemplo no se inicializar el puerto. cosa sencilla, talvez para ustedes jejej lo que es para mi... no entiendo nada...

me puedes explicar porfa como inicializar el puerto?
muchas gracias

Páginas: [1]