; Pasar un número decimal a un array de asciis para poder mostrarlo DATOS SEGMENT num dw 10045 ; valor máximo 65535 bcd db 5 dup (?),'$' DATOS ENDS PILA SEGMENT STACK 'stack' db 128 dup(?) PILA ENDS CODIGO SEGMENT assume cs:codigo,ds:datos,ss:pila ppal proc far push ds ;Dirección de retorno al PSP sub ax,ax push ax mov ax,datos ;Inicialización del registro DS mov ds,ax mov ax,num push ax ;Introducimos el número mov ax,offset bcd ;Introducimos dir. tabla resultado push ax call to_bcd lea dx,bcd ;lea equivale a mov mov ah,9 int 21h retf ppal endp to_bcd proc push ax push bx push dx push bp push si push di mov bp,sp mov ax,16[bp] ; 16d = 10h = 0ah mov di,14[bp] ; 14d = 0eh mov bx,5 ;nos colocamos al final mov si,0ah ;la base por la q dividiremos (10) bucle:xor dx,dx div si add dl,'0' ;consigo el ascii del resto de la operación dec bx mov [di][bx],dl jnz bucle pop si pop di pop bp pop dx pop bx pop ax ret 4 to_bcd endp CODIGO ENDS END PPAL