Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: Riki_89D en 12 Octubre 2009, 17:50 pm



Título: Gurdar datos en la variable? ASM
Publicado por: Riki_89D en 12 Octubre 2009, 17:50 pm
Hola veran ayer realizando pruebas en asm finalize con este codigo:
Código:
dat segmetn

var1 db ?

dat ends

....

mov ah,07h
int 21h
mov var1,al



ai entiendo que se pide k pulses una tecla,el caracter de esa tecla finalmente queda almacenada en var1,y efectivamente aisn fue,pero pense que si podia hacer eso pues tambien podia hacerlo con varios caracteres,osea una cadena,entonces leei sobre la funcion 0AH,pero no me que nada claro como se utiliza,alguien puede enseñarme porfavor??

como guardo una cadea que yo escribo en esa variable?



salu2


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Eternal Idol en 12 Octubre 2009, 18:13 pm
http://www.ctyme.com/intr/rb-2563.htm

http://www.programmersheaven.com/mb/x86_asm/336421/336427/re-problem-inputting-string--using--int-0ah/


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Riki_89D en 12 Octubre 2009, 18:44 pm
Hola lo e probado esos codigos pero no me funcan :( no lo entiendo asta e echo copiar y pegar para asegurarme de k estavan bien i todo i me compila bn i todo pero nada osea el programa se me abre,despues puedo teclear la cadena de caracteres pero cuando pulso enter pum me salen simbolos raros como caras i otroas cosas por que me pasa eso?



salu2


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Eternal Idol en 12 Octubre 2009, 18:48 pm
El codigo esta mal ... sin verlo solo podemos adivinar.


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Riki_89D en 12 Octubre 2009, 19:49 pm
Eternal gracias por contestar,pues qui va el codigo,este codigo solo me permite teclear los caracteres peor nose como hacerlo para mostrar eso caracteres :S



salu2
Código:
DTS SEGMENT

NOMBRE LABEL BYTE
MAXIMO DB 13 ;MAXIMO DE CARACTERES QUE SE PUEDEN TECLEAR
CARAC DB ? ;Caracteres tecleados
TOTAL DB 20 DUP('') ;Cadena de texto final

DTS ENDS



STK SEGMENT STACK
DB 128 DUP('STK')
STK ENDS

COD SEGMENT
BEGIN PROC FAR
ASSUME CS:COD,DS:DTS,SS:STK

PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DTS
MOV DS,AX
PUSH AX
MOV AH,0AH
LEA DX,NOMBRE
INT 21H
POP AX

RET
BEGIN ENDP
COD ENDS
END BEGIN


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Eternal Idol en 12 Octubre 2009, 20:09 pm
Código
  1. mov dl, 10 ;bajamos una linea
  2. mov ah, 02h
  3. int 21h
  4.  
  5. lea dx, nombre + 2
  6. mov ah, 09h
  7. int 21h


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Riki_89D en 12 Octubre 2009, 20:36 pm
Hola eternal,quedria asin elc odigo?
Código:
DTS SEGMENT

NOMBRE LABEL BYTE
MAXIMO DB 13 ;MAXIMO DE CARACTERES QUE SE PUEDEN TECLEAR
CARAC DB ? ;Caracteres tecleados
TOTAL DB 20 DUP('') ;Cadena de texto final

DTS ENDS



STK SEGMENT STACK
DB 128 DUP('STK')
STK ENDS

COD SEGMENT
BEGIN PROC FAR
ASSUME CS:COD,DS:DTS,SS:STK

PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DTS
MOV DS,AX
PUSH AX
MOV AH,0AH
LEA DX,NOMBRE
INT 21H
POP AX

mov dl, 10 ;bajamos una linea
mov ah, 02h
int 21h
 
lea dx, NOMBRE + 2
mov ah, 09h
int 21h

RET
BEGIN ENDP
COD ENDS
END BEGIN



Título: Re: Gurdar datos en la variable? ASM
Publicado por: Eternal Idol en 12 Octubre 2009, 23:57 pm
Si, excepto por un detalle, las cadenas en MS-DOS terminan en $ asi que yo puse esto:

Código
  1. TOTAL DB 20 DUP('$') ;Cadena de texto final

Mientras te funcione ... este codigo es arcaico y obsoleto de cualquier manera  ;D



Título: Re: Gurdar datos en la variable? ASM
Publicado por: Riki_89D en 14 Octubre 2009, 12:35 pm
Hola eternal,gracias por tus respuestas,y si ya se que este code es obsoleto,pero estoi aprendiendo a programar en ASM,estudi ASM de 16 bits para saver como va un poco los registors etc,no profundico mucho con las interrupciones por que mi intencion es pasarme al ASM de 32 dentro de poco,gracias pro la ayuda


un saludo


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Eternal Idol en 14 Octubre 2009, 13:00 pm
De nadas, mas que nada lo digo para que no inviertas tiempo haciendo el codigo seguro por ejemplo, con que mas o menos vaya es suficiente para que comprendas en ese sistema.


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Riki_89D en 15 Octubre 2009, 11:51 am
Eternal perdona que vuelva a marearte,peor tengo unas preguntas mas,ahora me quiero pasar al programacion en ensamblador de 32 bits,que com`pilador me recomiendas tu?

y una pregunta que me pica la curiosidad,los S.o que estan echo con ASM como el kalibri o el Manuet estan echos en ASM de 32 bits no?

un saludo


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Eternal Idol en 15 Octubre 2009, 11:59 am
Te recomiendo el paquete MASM32, es el ensamblador oficial de Microsoft mas las cabeceras necesarias para la API de Windows, muchisimos macros utiles y el que mas recursos (tutoriales, documentacion, ejemplos, etc.) tiene.

El primero que mencionas no lo conozco, MenuetOS si (salvo la version de 64 bits claro y todos necesitan un boot en 16 ya que la maquina bootea en modo real como si fuera una 8086).


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Riki_89D en 15 Octubre 2009, 13:33 pm
Oks entonces entiendo que un S.o necesita ASM de 16 bitd deguro!pero wno kien svae programar en 32 bits save en 16 supongo xd pues gracias por la info,un saludo,ara me bajo el masm 32

EI: juntando mensajes.

Ui se me olvida decirte algo,e leio por ai en internet que dicen que el MASM (Ensamblador de 32 bits) se le llama Ensamblador de alto nivel!,eso no lo entiendo mucho,sesupone que ensamblador es un lenguaje de bajo nivel no? por que dicen eso?



Salu2


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Eternal Idol en 15 Octubre 2009, 13:42 pm
Si, el loader al menos tiene que ser de 16 bits.

MASM es Microsoft Macro Assembler, podes aprovechar los macros o no  ;)


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Riki_89D en 15 Octubre 2009, 13:49 pm
Entonces seguira siendo mas rapido y ocupando menos memoria un programa echo en MASM32 que uno echo en ++?


Ahora si ya no tengo mas preguntas (pErdon por mi ingorancia)



Salu2


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Eternal Idol en 15 Octubre 2009, 13:52 pm
Entonces seguira siendo mas rapido y ocupando menos memoria un programa echo en MASM32 que uno echo en ++?

Que tenga soporte para macros no cambia nada, las macros son traducidas directamente a lo que equivalen en assembly (y eso lo escribis vos u otro programador). Pero no quiere decir que tus programas sean mas rapidos, el compilador es una herramienta escrita por expertos muy dificil de superar. Normalmente los programas reservan mucha mas memoria de la que ocupan en disco con lo cual es irrelevante el lenguaje en que esten escritos, es decir si tenes un programa de 2KB y otro de 50KB pero los dos reservan 1GB de memoria virtual ... esos 48KB no tienen la mas minima importancia.


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Riki_89D en 15 Octubre 2009, 14:03 pm
AA WENO OK,SIEMPRE AVIA PENSADO QUE POR EL ECHO DE QUE UN PROGRAMA ESTE ECHO EN ASM SIEMPRE SRIA MAS RAPIDO.

SALU2


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Eternal Idol en 15 Octubre 2009, 14:07 pm
Nop, los compiladores llevan años y años de optimizacion encima.


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Riki_89D en 15 Octubre 2009, 14:20 pm
Vaya que mal que estoi xd,pero lo que si es cierto es que se pueden hacer coss que con otros lenguaje sno se puede verdad?


x ciertto te echo caso i me baje  el masm32,pero me da erroes como este:

 Assembling: C:\masm32\pro.asm
C:\masm32\pro.asm(1) : error A2008: syntax error : integer
C:\masm32\pro.asm(2) : error A2085: instruction or register not accepted in current CPU mode
\masm32\include\windows.inc(60) : error A2119: language type must be specified
\masm32\include\windows.inc(61) : error A2119: language type must be specified
\masm32\include\windows.inc(62) : error A2119: language type must be specified
\masm32\include\windows.inc(63) : error A2119: language type must be specified
\masm32\include\windows.inc(64) : error A2119: language type must be specified
\masm32\include\windows.inc(65) : error A2119: language type must be specified
\masm32\include\windows.inc(66) : error A2119: language type must be specified
\masm32\include\windows.inc(67) : error A2119: language type must be specified
\masm32\include\windows.inc(68) : error A2119: language type must be specified
\masm32\include\windows.inc(69) : error A2119: language type must be specified
\masm32\include\windows.inc(70) : error A2119: language type must be specified
\masm32\include\windows.inc(71) : error A2119: language type must be specified
\masm32\include\windows.inc(72) : error A2119: language type must be specified
\masm32\include\windows.inc(73) : error A2119: language type must be specified
\masm32\include\windows.inc(74) : error A2119: language type must be specified
\masm32\include\windows.inc(75) : error A2119: language type must be specified
\masm32\include\windows.inc(76) : error A2119: language type must be specified
\masm32\include\windows.inc(77) : error A2119: language type must be specified
\masm32\include\windows.inc(78) : error A2119: language type must be specified
\masm32\include\windows.inc(79) : error A2119: language type must be specified
\masm32\include\windows.inc(80) : error A2119: language type must be specified
\masm32\include\windows.inc(81) : error A2119: language type must be specified
\masm32\include\windows.inc(82) : error A2119: language type must be specified
\masm32\include\windows.inc(83) : error A2119: language type must be specified
\masm32\include\windows.inc(84) : error A2119: language type must be specified
\masm32\include\kernel32.inc(8) : error A2119: language type must be specified
\masm32\include\kernel32.inc(9) : error A2119: language type must be specified
\masm32\include\kernel32.inc(12) : error A2119: language type must be specified
\masm32\include\kernel32.inc(13) : error A2119: language type must be specified
\masm32\include\kernel32.inc(16) : error A2119: language type must be specified
\masm32\include\kernel32.inc(17) : error A2119: language type must be specified
\masm32\include\kernel32.inc(18) : error A2119: language type must be specified
\masm32\include\kernel32.inc(20) : error A2119: language type must be specified
\masm32\include\kernel32.inc(22) : error A2119: language type must be specified
\masm32\include\kernel32.inc(23) : error A2119: language type must be specified
\masm32\include\kernel32.inc(24) : error A2119: language type must be specified
\masm32\include\kernel32.inc(25) : error A2119: language type must be specified
\masm32\include\kernel32.inc(26) : error A2119: language type must be specified
\masm32\include\kernel32.inc(27) : error A2119: language type must be specified
\masm32\include\kernel32.inc(28) : error A2119: language type must be specified
\masm32\include\kernel32.inc(31) : error A2119: language type must be specified
\masm32\include\kernel32.inc(32) : error A2119: language type must be specified
\masm32\include\kernel32.inc(33) : error A2119: language type must be specified
\masm32\include\kernel32.inc(36) : error A2119: language type must be specified
\masm32\include\kernel32.inc(39) : error A2119: language type must be specified
\masm32\include\kernel32.inc(40) : error A2119: language type must be specified
\masm32\include\kernel32.inc(41) : error A2119: language type must be specified
\masm32\include\kernel32.inc(44) : error A2119: language type must be specified
\masm32\include\kernel32.inc(45) : error A2119: language type must be specified
\masm32\include\kernel32.inc(46) : error A2119: language type must be specified
\masm32\include\kernel32.inc(47) : error A2119: language type must be specified
\masm32\include\kernel32.inc(48) : error A2119: language type must be specified
\masm32\include\kernel32.inc(49) : error A2119: language type must be specified
\masm32\include\kernel32.inc(50) : error A2119: language type must be specified
\masm32\include\kernel32.inc(53) : error A2119: language type must be specified
\masm32\include\kernel32.inc(54) : error A2119: language type must be specified
\masm32\include\kernel32.inc(55) : error A2119: language type must be specified
\masm32\include\kernel32.inc(56) : error A2119: language type must be specified
\masm32\include\kernel32.inc(57) : error A2119: language type must be specified
\masm32\include\kernel32.inc(58) : error A2119: language type must be specified
\masm32\include\kernel32.inc(61) : error A2119: language type must be specified
\masm32\include\kernel32.inc(62) : error A2119: language type must be specified
\masm32\include\kernel32.inc(63) : error A2119: language type must be specified
\masm32\include\kernel32.inc(66) : error A2119: language type must be specified
\masm32\include\kernel32.inc(67) : error A2119: language type must be specified
\masm32\include\kernel32.inc(68) : error A2119: language type must be specified
\masm32\include\kernel32.inc(69) : error A2119: language type must be specified
\masm32\include\kernel32.inc(71) : error A2119: language type must be specified
\masm32\include\kernel32.inc(72) : error A2119: language type must be specified
\masm32\include\kernel32.inc(75) : error A2119: language type must be specified
\masm32\include\kernel32.inc(78) : error A2119: language type must be specified
\masm32\include\kernel32.inc(79) : error A2119: language type must be specified
\masm32\include\kernel32.inc(80) : error A2119: language type must be specified
\masm32\include\kernel32.inc(83) : error A2119: language type must be specified
\masm32\include\kernel32.inc(84) : error A2119: language type must be specified
\masm32\include\kernel32.inc(85) : error A2119: language type must be specified
\masm32\include\kernel32.inc(88) : error A2119: language type must be specified
\masm32\include\kernel32.inc(91) : error A2119: language type must be specified
\masm32\include\kernel32.inc(92) : error A2119: language type must be specified
\masm32\include\kernel32.inc(93) : error A2119: language type must be specified
\masm32\include\kernel32.inc(96) : error A2119: language type must be specified
\masm32\include\kernel32.inc(97) : error A2119: language type must be specified
\masm32\include\kernel32.inc(98) : error A2119: language type must be specified
\masm32\include\kernel32.inc(99) : error A2119: language type must be specified
\masm32\include\kernel32.inc(102) : error A2119: language type must be specified
\masm32\include\kernel32.inc(105) : error A2119: language type must be specified
\masm32\include\kernel32.inc(106) : error A2119: language type must be specified
\masm32\include\kernel32.inc(107) : error A2119: language type must be specified
\masm32\include\kernel32.inc(110) : error A2119: language type must be specified
\masm32\include\kernel32.inc(111) : error A2119: language type must be specified
\masm32\include\kernel32.inc(112) : error A2119: language type must be specified
\masm32\include\kernel32.inc(115) : error A2119: language type must be specified
\masm32\include\kernel32.inc(116) : error A2119: language type must be specified
\masm32\include\kernel32.inc(117) : error A2119: language type must be specified
\masm32\include\kernel32.inc(120) : error A2119: language type must be specified
\masm32\include\kernel32.inc(121) : error A2119: language type must be specified
\masm32\include\kernel32.inc(122) : error A2119: language type must be specified
\masm32\include\kernel32.inc(125) : error A2119: language type must be specified
\masm32\include\kernel32.inc(125) : fatal error A1012: error count exceeds 100; stopping assembly
 El volumen de la unidad C no tiene etiqueta.
 El n£mero de serie del volumen es: E8FD-3490

 Directorio de C:\masm32

15/10/2009  14:20               469 pro.asm
               1 archivos            469 bytes
               0 dirs  55.452.766.208 bytes libres



y el codigo es este:
Código:

386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib

.data
MsgBoxCaption  db "Iczelion Tutorial No.2",0
MsgBoxText       db "Win32 Assembly is Great!",0

.code
start:
invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK
invoke ExitProcess, NULL
end start



un sencillo hola mundo,por que no me funciona?¿ que ago mal?


salu2


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Eternal Idol en 15 Octubre 2009, 14:22 pm
Te falta el . antes del 386  ;D


Título: Re: Gurdar datos en la variable? ASM
Publicado por: Riki_89D en 15 Octubre 2009, 21:11 pm
ya lo solucione eternal,e visto en el foro un manual de Ensamblador,pero necesito uno en PDF si puede ser porfavor :S lo e buscado i no encontre o un libro :(


salu2