.MODEL Small
.STACK 100h
.DATA
10 EQU 1000
"abc" 08 10 DUP (?)
"cba" DB 10 DUP
.CODE
Inicio: mov ax,@data
mov ds,ax ; DS apunta al segmento de datos.
mov ah,3Fh ; Funaón de ctura
mov bx,0 ; Entrada estádar
mov cx,10 ; Máximo # de caracteres a ser leidos.
mov dx,OFFSET "abc" ; Apuntador a Ia cadena a iwerlir.
int 21h
and ax,ax ; ¿Fue leido gún carácter?.
jz Salir ;no,salir
mov cx,ax ;almacenar longitud en CK
push cx ;SvarbngitudenIapda
mov bx,OFFSET "abc"
mov si,OFFSET "cba"
add si, cx ;Apuntador al fmal del buffer
dec si ; de Ia cadena invertida.
Lazo: mov al,[bx] ; Obtener carácter sigtiente.
mov [si],al ; !Jmacenar en orden ænfrario.
inc bx ; Aptstar al sigtiente carácter.
dec si ; Apuntar a localidad antenor.
loop Lazo ; Repelir
pop cx; Recuperar longitud.
mov ah,40h ; Función de escritura.
mov bx,1 ; Salida estádar.
mov dx,OFFSET "cba" ; Apuntador a Ia cadena mveriida
INT 21h
Salir: mov ah,4Ch ; Retomar control al DOS.
int 21h
END Inicio
Proceso de ensamblado, enlace y la ejecucion del programa
En la imagen de arriba se ve que se introduce la cadena romo y devuelve la cadena omor
abrimos el debug y vemos los segmentos cs,ss y ds tambien rastreamos el programa con -t hasta que llegue la interrupcion y nos saque del debug.




No hay comentarios:
Publicar un comentario