;Programa que cuente el número de apariciones de un caracter en una cadena de texto DATOS SEGMENT cadena db 'pppp de microp','$' ;todas las cadenas son de tipo bite y acaban con $ cuenta dw (0) 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,offset cadena push ax xor ax,ax mov al,'p';Introducimos el caracter a buscar push ax call contar retf ppal endp contar proc push ax push bx push cx push dx push bp push di push si mov bp,sp xor bx,bx ;inicializamos mov si,18[bp] ;recuperamos la dirección de la cadena mov cx,16[bp] ;recuperamos el caracter bucle: mov al,[si] ;recuperamos el primer caracter de la cadena inc si cmp al,cl jne fin mov dx,cuenta inc dx mov cuenta,dx fin: cmp al,'$' jne bucle pop si pop di pop bp pop dx pop cx pop bx pop ax ret 4 contar endp CODIGO ENDS END PPAL