• Domingo 5 de Mayo de 2024, 01:19

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 - Super_G

Páginas: 1 ... 13 14 [15]
351
ASM (Ensamblador) / Re: manejo de archivos en C++ con ensamblador
« en: Jueves 16 de Octubre de 2003, 06:47 »
primero para manejar archivos debes manejar interrupciones, y la int 21h es la que se usa en ensamblador para este fin
la funcion "3dh" es para abrir archivo, la "3fh" para leer y "40h" para escribir

352
ASM (Ensamblador) / Re: ecuacion de 2do grado en assembler(16 bits) les explico
« en: Jueves 16 de Octubre de 2003, 06:44 »
y otro metodo?

353
ASM (Ensamblador) / Re: Quien sabe ASM ? -diga presente aqui-
« en: Jueves 16 de Octubre de 2003, 06:35 »
bueno yo creo que me defiendo en muchas cosas basicas sobre assembler, pero que clase de progrmador sera que se busca

354
ASM (Ensamblador) / Diferencias entre ASM y WINASM
« en: Jueves 16 de Octubre de 2003, 06:33 »
mientras mas lenguajes se sepa mejor, y asm es digamos el padre de los lenguajes

355
ASM (Ensamblador) / Re: Lenguaje ensamblador
« en: Jueves 16 de Octubre de 2003, 06:21 »
creo que hice algo asi hace tiempo no recuerdo si fue en VB o asm, pero para assembler utilizaria interrupciones, pero no estoy seguro hecerlo por puertos ya que seria mejor

356
ASM (Ensamblador) / Interfaz C-ensamblador 80x86
« en: Jueves 16 de Octubre de 2003, 06:19 »
la pregunta meconfunde,
es que tienes un progrma en asm y lo quieres meter en uno de C, eso se haria:
////////////////
       asm{
             //codigo ASM
              }
o necesitas los ciclos de instrucion que requiere el programa en ASM, esto se podira hacer manualmente dependiendo de las instrucciones y del tipo del procesador

357
ASM (Ensamblador) / Sobre aprender ensamblador..
« en: Jueves 16 de Octubre de 2003, 06:15 »
buenas direcciones

358
ASM (Ensamblador) / ¿Alguien me puede dar una aclaración sobre el acceso a la me
« en: Jueves 16 de Octubre de 2003, 06:12 »
pero en windows en algun mometo trabaja la edicion de archivos poniendolos en la memoria, se referira  a esto?

359
ASM (Ensamblador) / Compilador
« en: Jueves 16 de Octubre de 2003, 06:09 »
que diferncias tienen el NASM con el TASM??

360
ASM (Ensamblador) / modificacion del reloj
« en: Jueves 16 de Octubre de 2003, 06:09 »
muy interezante lo provare

361
ASM (Ensamblador) / Tengo una duda sobre la instrucción "RET 0x..."
« en: Jueves 16 de Octubre de 2003, 05:56 »
tambien sirve para saber el estado de una subrutia a su regreso de su llamada

362
ASM (Ensamblador) / cuantos bytes????
« en: Jueves 16 de Octubre de 2003, 05:53 »
La compilacion con Tasm de borland???

363
ASM (Ensamblador) / como hacer un temporizador
« en: Jueves 16 de Octubre de 2003, 05:32 »
Es cierto que no se puede hacer un temporizador en C?
la funcion DELAY(X), no hace un buen retrazo en Xmilisegundos?, que problemas existen con esto?

364
ASM (Ensamblador) / Re: como hacer un temporizador
« en: Jueves 16 de Octubre de 2003, 05:06 »
Que tipo de problemas seran?
bueno supongamos que ya tengo el dato en DL las centecimas de segundo entonces si son centecimas maxio sera de dos digitos tomado esto encuenta pongo el siguiente programa:
;;**********************
              mov al,dl; en DL las centecimas
              xor ah,ah ; saparamos las
              mov bl,10 ;unidades
              div bl         ; de la decenas
              or ax,3030h ;CNV a ASCII
              mov bl,ah ; salvamos las unidade
              mov ah,2  
              int 21h     ;muestra decenas
              mov al,bl  
              int 21h     ;muestra unidades
;;****************
espero el programa funcione, no le hice pruebas, si ese no era el problema, porfavor especificamelo.

365
ASM (Ensamblador) / Novato pide ayuda con su primer procedimiento
« en: Miércoles 15 de Octubre de 2003, 15:55 »
me gusta ese reto, pero en este instante no se me ocurre una solucion, pero veamos la dudas:
1) LES AX,numero
Esto carga el desplazamiento de numero en AX y su segmento en ES, No carga la parte baja en AX y la alta en ES, por lo tanto no seria corresta la suposicion.
2)movimiento directo de DX:AX a memoria
Creo que existe alguna instruccion que produce esa o una operacion similar pero no la recuerdo;


Despues una alternativa seria usar registros de 32bits como EAX,EBX,...pero cuando quieras trabajar con numeros mas grandes ya no funcionaria y seria la misma historia.


Hace algun tiempo tenia la tarea de multiplicar 3 numeros de 32Bits en el 68000MC, y hacerlo de forma iterativa consumia un tiempo enorme(practicamnete se colgaba), lo que hice fue dividir los numeros grandes resultantes en words, y aunque no era tan facil pues no lo termine, creo que podria ser una alternativa.

366
ASM (Ensamblador) / Re: como hacer un temporizador
« en: Miércoles 15 de Octubre de 2003, 06:13 »
La verdad no creo poder ayudarte ya que eso es algo que busque muchas veces, lo mejor(a mi parecer) seria estudiar a fondo el temporizador harware del ordenador y trabajar con la frecuencia de reloj, pero no parece ser tan facil, puedes buscar en la red sobre este tama y talves encuentres algo hecho, lo mejor que tengo seria capturar la hora actual del ordenador que te da las horas, minutos, segundos y centecimas de segundos mediante una interrupcion y trabajar con las centecimas de segundo:
la interrupcion es:
      mov ah,2ch
      int 21h
;*******
las centecimas estarian en DL.

367
ASM (Ensamblador) / Re: CALCULADORA EN ENSAMBLADOR (+,-,*,/)
« en: Miércoles 15 de Octubre de 2003, 05:56 »
Para empesar los #s ASCII que representan del "0" al "9" son del 48 val 57(decimal); 30 al 39(en hexa).
Entoces cuado leas del teclado(una tecla), lo que se lee sera el codigo ASCII de la tecla pulsada[si se utiliza la interrupcion 21(int 21h) se puede usar la funcion#:1, poniendo AH=1, y el codigo ASCII del la tecla pulsada estara en AL]; esto significa que debe leer un digito o numero por ves, por eso aconsejaba el trabajar solo con numeros de un digito, el unico arreglo para trabajar con el dato introducido es restarle 48(decimal) o 30h(en exa); por lo tanto lo primero que recom¡niento es definei el tipo de numeros a ser procesados(tamaño):Byte,Word,Dword.., por ultimo aconsejo que por lo menos sean del tipo "Byte" o sea que el # mas grande seria 255, pero aun asi preferiria que el maixmo # sea 9, si tomamos lo del Byte aun asi se debe hacer varios controles como que para con una suma o multiplicacion que sobre pase el limite de Byte, en el mismo ingreso no se deberia, permitir el ingrso de numeros mayores a 255, aontinuacion pondre lo que pudiera ser un pequeño progrma para el ingrso de este numero sin controles como los mencionados antes:
;;********************************
;;el numero a ser procesado debera estar ;;en BL
;;priemor debe de ingresarse el digito ;;mas significativo ; eje: 265 1º el 2, 2º el 6,3º el 5
;;      mov bl,0
        mov cx,3 ;3 digitos
 p0:  mov ah,1
         int 21h
        sub al,30h;; CNV de Ascii
        mov bh,al
        mov ax,000ah;10 decimal
        mul bl; digito anterior*10
        mov bl,al
        add bl,bh ;suma del ANT+el nuevo
        loop p0
;;*****************************
debe de hacerse  la prueva para verificar errores(en TD); para mostrar resultados en anteriores puse un programa que mostraba el numero contenido en AX.
Espero esto pueda servir.

368
ASM (Ensamblador) / Re: Novato pide ayuda con su primer procedimiento
« en: Sábado 11 de Octubre de 2003, 15:07 »
para mostrar un numero de 16bit que esta en AX:
;;*****************
         cmp ax,0  ;verifiacmos si AX es cero
         jz     fin     ;si lo es el programa termi
         mov si,offset cadena + 5;
         mov bx,10 ;dividor para obtener
c1:    xor  dx,dx  ;los digitos
         div bx        ;el digito va a DL
                          ;en AX el #restante
         add dl,48  ;lo convertimos en ascii
         mov [si],dl;movemos a la cadena
         dec si
         jmp c1 ;continuamos con el resto
fin:    mov ah,9
         mov dx,offset cadena
         int 21h
         int 20h
cadena db '00000$' ;cadena a ser mostradamostrada
;;****************        
no compile el programa pero espero que la idea se entienda

369
ASM (Ensamblador) / Re: CALCULADORA EN ENSAMBLADOR (+,-,*,/)
« en: Sábado 11 de Octubre de 2003, 14:44 »
Introduces los numeros por teclado??
si lo haces ,¿los convertiste de ascii a binario antes de procesarlos?
y despues de ser procesados para mostrarlos deben estar en ascii otra ves, talves esos sean los problemas. Te recomiendo que para facilitar la programaicon  solo introduscas numeros de un solo digito(decimal) y asi maximo tengas que mostrar resultados de 2 digitos.

370
ASM (Ensamblador) / Re: Novato pide ayuda con su primer procedimiento
« en: Sábado 11 de Octubre de 2003, 14:39 »
El programa me parece interesante, pero tengo una duda: ¿el numero a mostrar de cuantos digitos es, ya que si es introducido(por teclado) estaria en ascii, y en que momento se introduce el numero?
eso seria todo Gracias

371
ASM (Ensamblador) / Re: Par e Impar
« en: Miércoles 1 de Octubre de 2003, 06:02 »
vi tu programa a la rapida , y me parece que el error puede estar en tu comparacion ya que al realizar la divicion entre un registro de 16 bits el resto de la division(DXAX/BX) se ira a DX y no a AH, una solucion simplemente podria ser hacer la comparacion de 0 con DX, o la divicion hacerla con bl....pero la vere mas detenidamente despues

372
ASM (Ensamblador) / Como imprimir número en pantalla?
« en: Miércoles 1 de Octubre de 2003, 05:50 »
Para imprimir numeros en pantalla primero se debe clasificar el tipo de numero que se va imprimir (enteros flotantes...), por ejemplo para un entero de un solo digito (el ejemplo mas simple, en decimal), que puede ser contenido en un byte, solo debemos trasformarlo a su equivalente en ASCII, y esta listo para ser mostrado por pantalla, y para hacer lo mismo con numero mayor de por decir 3 digitos podria utilizarse una division suceciva en 3 ciclos por ejemplo

mov al,3         ;numero a exhibir
add al,48        ;sumandole 48 al contenido ; de AL se lo trasforma en ASCII
mov ah,2
int 21h    ;muestra el ASCII de AL
;;**************************
para numeros de tres digitos:

       mov si,offset cadena
       xor ax,ax
       mov cx,3        ;3 digitos
       mov al,125         ;125 numero a exibir
       mov bl,10
ci1: div bl               ;1º(AL=12 .... AH=5)
                               ;2º(AL=1.......AH=2)
                               ;3º(AL=0.......AH=1)
       add ah,48
       mov [si],ah
       inc si
       mov ah,0
       loop ci1
       mov ah,9
     mov dx, offset cadena ;en .COM DS=CS
      int 21h      ;muestra cadena

.
.
.
cadena db '   ','$'

;;********************
para numeros de mas digitos es necesario mejorar el programa, y para flotantes hacer otros cambios

373
ASM (Ensamblador) / uso del coprocesador
« en: Jueves 25 de Septiembre de 2003, 00:37 »
Yo intente hacer un programa asi una ves pero no me parecio muy facil, al final solo hice un programa que muestre el resultado pero solo de forma binaria, falta la conversion a decimal

;;******************************
.model tiny
.code
.387  ;con esta directiva decimos que se usaremos el coprocesador matematico 80387
org 100h

inicio:
        finit
        fld n1  ;cargamos a ST(0) "n1"
        fld n2  ;cargamos a ST(0) "n2", recorre la pila y "n1" pasa a  ST(1)
        faddp    ;sumamos ST(0)+ST(1) y desempilamos en ST(0)
        fst r   ;almacenamos en "r"
        fwait    ;espera instruccion  del procesador
        ;;***********mostrar EL RESULTADO en pantalla
        mov si, offset r
        mov di, offset resultado
        mov bx,[si]   ; en bx los 16 primeros bits de 23  de la "mantisa"
        mov ax,[si+2] ; en ax estaran los ultimos 7 bits de la "mantisa" +los 8 bits del exponente + el bit de
        shl ax,1      ; ponemos en el bit Carry el signo, y todo el exponente en ah
        jnc p1 ; pasamos si es positivo
        mov byte ptr [di],'-'
    p1: sub ah,127    ;obtenemos el exponente real
        ;mov dh,ah     ;salvamos exponente
        ;;********* solo tomaremo en cuenta 7 bist de la mantisa
        mov cx,8          ;_
    c1: shl al,1          ;
        jc p2             ;  
        mov dl,30h ; '0'  ;  
        jmp c2            ;    } ponemos el binario de AL en [DI+3]
    p2: mov dl,31h ; '1'  ;   /
    c2: mov [di+3],dl     ;  /
        inc di            ; /
        loop c1           ;-
        ;;*********ponemos el expoente en la cadena
        mov cx,3        ;3 digitos en decimal max 255
        xchg al,ah      ;AL = expoente; AH = 0
        mov bl,10
    c3: div bl
        add ah,30h      ;convertimos a ASCCI
        mov [di+8],ax
        xor ah,ah
        dec di
        loop c3
        mov dx, offset resultado
        mov ah,9
        int 21h


fin: int 20h
n1 dd 1.25    ;numero uno
n2 dd 2.25    ;numero dos
r  dd 0.0    ;resultado
resultado db '+1.        *2^     (RESUTADO EN BINARIO)','$'
end inicio

374
ASM (Ensamblador) / Re: uso del coprocesador
« en: Martes 23 de Septiembre de 2003, 06:45 »
.model tiny
.code
.387  ;con esta directiva decimos que se usaremos el coprocesador matematico 80387
org 100h

inicio:
        fild n1  ;cargamos a ST(0) "n1"(ENTERO)
        fild n2  ;cargamos a ST(0) "n2", recorre la pila y "n1" pasa a  ST(1)(ENTERO)
        faddp    ;sumamos ST(0)+ST(1) y desempilamos en ST(0) (ENTERO)
        fist r   ;almacenamos en "r"   (ENTERO)
        fwait    ;espera instruccion  del procesador


fin: int 20h
n1 dw 1    ;numero uno
n2 dw 2    ;numero dos
r  dw 0    ;resultado

end inicio

375
ASM (Ensamblador) / Argumentos en linea de comando
« en: Martes 2 de Septiembre de 2003, 04:41 »
Hola!
veo que vas por buen camino, tambien que estas trabajando en un fromato .EXE; para mi seria mas facil hacerlo en formato .COM asi no hay muchas complicaciones con los segmentos, para aclarar dudas te hare algunas preguntas: "LINEA" es una cadena? , primero quieres leer los parametros de la linea de comandos no es mas director procesar desde esa direccion(80H) ? claro que eso depende tambien depende, pero por lo demas me parece que si solo quieres poner los paramentros en una cadea que manipules mas facil ya lo tienes , que mas quieres hacer???

Páginas: 1 ... 13 14 [15]