Gurdar datos en la variable? ASM

Iniciado por Riki_89D, 12 Octubre 2009, 17:50 PM

0 Miembros y 1 Visitante están viendo este tema.

Riki_89D

Hola veran ayer realizando pruebas en asm finalize con este codigo:

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

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Riki_89D

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

Eternal Idol

El codigo esta mal ... sin verlo solo podemos adivinar.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Riki_89D

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

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


Eternal Idol

Código (asm) [Seleccionar]
mov dl, 10 ;bajamos una linea
mov ah, 02h
int 21h

lea dx, nombre + 2
mov ah, 09h
int 21h
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Riki_89D

Hola eternal,quedria asin elc odigo?

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



Eternal Idol

Si, excepto por un detalle, las cadenas en MS-DOS terminan en $ asi que yo puse esto:

Código (cpp) [Seleccionar]
TOTAL DB 20 DUP('$') ;Cadena de texto final

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

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Riki_89D

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

Eternal Idol

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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón