Hola a todos, ya habia querido antes iniciarme en ensamblador, y esta vez me toca a a la fuerza aprender, pues llevo esta materia :s jaja.. como sea, nos han marcado de tarea un pequeño programa que lea del teclado 4 numeros del 1 al 15 y meterlos en una pila, pero en forma de hexadecimal, es decir que yo pueda ingresar 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f y lo unico que tiene que hacer el programa es devolverme el valor real, es decir, si meto a que me devuelva 10, b->11, c->12 y asi sucesivamente.
Se que debería ser sencillo, pero esque no se nada de ensamblador :(, hasta ahorita llevo la entrada y el almacenaje en pila, planeaba que al momento de hacer el pop hiciera la conversion, pero no e podido !  :( :( :( a ver si agluien me ayuda, hasta aorita esto es lo que tengo:
pila segment stack "STACK"
	dw 4 DUP(0)
pila ends
data segment
data ends
code segment
		assume cs:code,ds:data,ss:pila
	inicio:
		mov ax, data    ;un db es una palabra de 16 its
		mov ds, ax     ;//cargar el segmento de codigo en memoria
		
		MOV     AH,01h	;Le meto 1 a ah para que meta en al
		INT     21h 	;Espera el teclado
		mov ah,0h 	;limpio ah
		push ax	 	;lo meto en la pila
		
		MOV     AH,01h
		INT     21h
		mov ah,0h
		push ax
		
		MOV     AH,01h
		INT     21h
		mov ah,0h
		push ax
		MOV     AH,01h
		INT     21h
		mov ah,0h
		push ax
		
		;lo hice 4 veces, y ahora a hacer el pop
;POP
		pop ax                 ;Y ya no se que mas hacer!
		cmp    ax,'a'          ; una comparacion talvez?
		jz salt                    ; asi se hace la comparacion?
		
		salt proc near        ;pero que  pasa si no es una a?
		sub al,31h              ; como ponerle el else ???? (o algo asi)
		mov dl,al
		mov ah,02h
		int 21h
		salt endp
		
		MOV 	AX, 4C00h  ;halt    dos dice que es la terminacion del programa
		INT 21h  ;;int rebisa lo que esta en 21h.
                 ;es la interrupcion de pantalla con la funcion 4c que es la de hald
		
	
	code ends 
end inicio
; que perdido estoy,ayudenme :(
EI: juntando mensajes.
Ninguna idea?
Ya estoy cerca de terminar, pero a ver si me resuelven esta duda,
yo realizo una comparacion con cmp, si es igual a la cadena, hago el salto a una etiqueta con el je y si no es igual salto hacia otra etiqueta con el jne, pero ahora, el problema esque como esta una etiqueta detras de otra, pues me hace el proceso seguido, ya se que estoy haciendo algo mal, pues no deberia suceder esto, pero esque no se como indicarle que despues de realizar la etiqueta vuelva a la linea de donde salto  :-\, intente hacerlo con call y proc, pero esque no me deja poner je call procedimiento :S ayuden a este novato porfa
			
			
			
				busca en google como hacer la conversion hexadecimal a decimal luego lo adaptas, no es muy dificil.
Y sobre el else
.IF
.ELSE
.ENDIF
?