Multiplicar en asm, alguien me ayuda?

komoasi
30 de Junio del 2008
Hola a todos! ando haciendo un programita y la verdad apenas se imprimir algo en asm, este programa no me multiplica el numero que entra desde el teclado, a ver si alguien me ayuda, aqui esta :

; --- EXE file format
.model small
.stack 100h
.data

data2 db 10,"Introduzca el texto.", 10, 13, '$'
data3 db "Al terminar, presione Enter.", 10, 13, '$'

;--------- Insert Data and Equates HERE

;--------- Declare other variables with DB, DW, etc. here


.code
start:
mov ax, @data
mov ds, ax ;set segment register
mov es, ax ;set segment register
and sp, not 3 ;align stack to avoid AC fault

lea dx, data2
mov ah, 09
int 21h

lea dx, data3
mov ah, 09
int 21h

print1:
mov ah, 01
int 21h

cmp al, 0dh
je divx
jne print1

divx:
mov cx, 0
mov cl, al

mov al, cl
mov bl, 4
mul bl

mov dx, ax
mov ah, 9
int 21h

exit:
mov ax, 4c00h ; terminate program
int 21h
end start

mil gracias de antemano!

Perceval
30 de Junio del 2008
Bueno no recuerdo el codigo entero pero tenia varios errores. Primero fijate que no tenes que pasarlo a CL para hacer la multiplicacion vacia, AX, y coloca el numero ingresado, pero acordate restarle lo 30H que te da con el ingreso ASCII... Y luego esta bien BL, 4 mul BL.. y el dato te queda en AX, eso esta correcto pero, creo, si no me equivoco, no podes usar el Int 21h con AH = 9... Porque es para cadenas terminadas en $, en todo caso agregalo. Mi consejo es que te bajes el EMU8086, que se consigue en internet... incluso full, Ahi vas a poder seguir el valor de los registros.. Cualquier duda consultame. Espero que te sirva de algo