Foros del Web » Programación para mayores de 30 ;) » Programación General »

Una pequeña ayudita con Assembler!!!

Estas en el tema de Una pequeña ayudita con Assembler!!! en el foro de Programación General en Foros del Web. Hola a todos, soy nuevo en este foro y la verdad que esta excelente; demasiados temas interesantes que sirven de muchisima ayuda. Bueno les cuento ...
  #1 (permalink)  
Antiguo 30/09/2009, 17:13
 
Fecha de Ingreso: septiembre-2009
Mensajes: 1
Antigüedad: 14 años, 6 meses
Puntos: 0
Pregunta Una pequeña ayudita con Assembler!!!

Hola a todos, soy nuevo en este foro y la verdad que esta excelente; demasiados temas interesantes que sirven de muchisima ayuda.

Bueno les cuento mi problema e inconveniente.

He estado realizando un programita en Assembler que me permite calcular el factorial, pero no he podido realizar la impresion, ni la lectura para calcular dicho factorial, no se que me falta o en que voy mal.


Primero lo cargo en la direccion de tasm que me permite ver si esta bien y realmente no me sale ningun error, despues lo cargo en turbo assembler como tlink factorial.obj y todo perfecto ya despues al momento de ejecutarlo y llamarlo como factorial.exe no sale ningun mensaje, ni tampoco ninguna impresion.

De antemano muchas gracias por la colaboracion.

Tengo entendido que para la impresion de cadena de caracteres se utiliza:

mov ah,9
int 21 h

pero ni idea de donde colocarlo, ya que he intentado por todos lados y nada a no ser que me falte algo adicional.

Este es el programa Factorial.asm

DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
DATO_1 DB 0
DATO_2 DB 0
.CODE
FACT_DATO_1 DW 0
RESULT DW 0,0


START PROC
MOV AX, (arroba)DATA
MOV DS, AX
MOV SP, 64
MOV CL, DATO_1
CALL FACTOR
MOV FACT_DATO_1, AX
MOV CL, DATO_2
CALL FACTOR
MOV BX, FACT_DATO_1
MUL BX
MOV RESULT, AX
MOV RESULT+2, DX
MOV DX, OFFSET RESULT + 2
MOV AX, 4c00H
INT 21H


START ENDP
FACTOR PROC NEAR
MOV AX, 1
XOR CH, CH
CMP CX, 0
JZ FIN
IR:
MUL CX
DEC CX
JNZ IR
FIN:
RET

FACTOR ENDP
END
  #2 (permalink)  
Antiguo 02/10/2009, 02:56
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: Una pequeña ayudita con Assembler!!!

Si, el servicio 09h de la interrupcion 021h imprime una cadena (es decir no no le podes pasar un numero):
http://www.ctyme.com/intr/rb-2562.htm

Y con el servicio 01h de la misma interrupcion podes leer caracteres del teclado:
http://www.ctyme.com/intr/rb-2552.htm
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 14/10/2009, 04:29
 
Fecha de Ingreso: octubre-2009
Mensajes: 182
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Una pequeña ayudita con Assembler!!!

Hola. Siento que no te pueda ayudar pero viendo tus conocimientos de asambler quisiera pedirte una ayuda. Quisiera saber programar en ensamblador con C o con otro lenguaje, pero programar en samblador en 32 como en 64 bits, (tengo windows a 64 bits). Sabes de algun manual ue me pueda comprar o de alguna web que me podra ayudarme, o de algun tutorial que me pueda servir?. te dejo mi msn para contactar: [email protected]
  #4 (permalink)  
Antiguo 14/10/2009, 06:40
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: Una pequeña ayudita con Assembler!!!

Podes empezar por aca http://www.masm32.com y hay un libro llamado "Ensamblador para DOS, Linux y Windows que tambien te puede interesar.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 23/10/2009, 11:03
 
Fecha de Ingreso: julio-2009
Mensajes: 10
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Una pequeña ayudita con Assembler!!!

Bueno lo que tienes que saber es que al imprimir una cadena tienes que poner la direccion inicial en el registro dx, osea en dx tienes que poner la posisicon donde empieza tu cadena. Para mejor ayuda visita esta el blogspot de funcionmijo que tienes algunos ejmeplso de assembler ademas te proporciona un emulador para ejercicios de assembler.
  #6 (permalink)  
Antiguo 06/03/2010, 20:51
 
Fecha de Ingreso: marzo-2010
Mensajes: 1
Antigüedad: 14 años, 1 mes
Puntos: 0
ayudita con arreglos en Assembler!!!

Este programa me lo dejaron en la U de tarea, consiste en calcular el numero mayor dentro de un arreglo espero os sirva de algo.

Title Mayor de una lista
include irvine32.inc
.data
TableI Byte 204,223,187,54,135,2,77,44,218,199
Byte 162,209,85,254,107,233,151,36,92,100
Longuitud = ($-TableI)
Mayor Byte ?
Msj Byte "El mayor es:"
.code
main PROC
mov ecx,longuitud
mov eax,0
mov esi, OFFSET TableI
mov al, Byte PTR [esi]
mmay:
Cmp al, byte ptr [esi]
Jae Cont1
mov al, Byte PTR [esi]
Cont1:
inc esi
loop mmay
mov edx, offset msj
call WriteString
mov mayor,al
call WriteDec
CAll CRLF
exit
main ENDP
end main
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:42.