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
http://www.ctyme.com/intr/rb-2563.htm
http://www.programmersheaven.com/mb/x86_asm/336421/336427/re-problem-inputting-string--using--int-0ah/
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
El codigo esta mal ... sin verlo solo podemos adivinar.
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
mov dl, 10 ;bajamos una linea
mov ah, 02h
int 21h
lea dx, nombre + 2
mov ah, 09h
int 21h
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
Si, excepto por un detalle, las cadenas en MS-DOS terminan en $ asi que yo puse esto:
TOTAL DB 20 DUP('$') ;Cadena de texto final
Mientras te funcione ... este codigo es arcaico y obsoleto de cualquier manera ;D
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
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.
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
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).
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
Si, el loader al menos tiene que ser de 16 bits.
MASM es Microsoft Macro Assembler, podes aprovechar los macros o no ;)
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
Cita de: Riki_89D en 15 Octubre 2009, 13:49 PMEntonces 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.
AA WENO OK,SIEMPRE AVIA PENSADO QUE POR EL ECHO DE QUE UN PROGRAMA ESTE ECHO EN ASM SIEMPRE SRIA MAS RAPIDO.
SALU2
Nop, los compiladores llevan años y años de optimizacion encima.
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:
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
Te falta el . antes del 386 ;D
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