Ensamblador - Ayuda con un problema de ensamblador

   
Vista:

Ayuda con un problema de ensamblador

Publicado por Álvaro Alvarado (1 intervención) el 19/06/2014 05:01:46
El trabajo se realizará bajo DEBUG.
Introducir una cadena de carácteres, la cual contiene espacios, finalizando la lectura hasta un punto (código ASCII: 2E).
Después de la lectura imprimir la siguiente letra del alfabeto.

Ejemplo:
* Cadena de Entrada: Hola a todo el mundo.
* Cadena de Salida:
Ipmb b upep fm nvoep

Realizar el trazado del código.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Cesar

Ayuda con un problema de ensamblador

Publicado por Cesar (1 intervención) el 01/07/2014 18:15:42
Aqui esta tu codigo:
NAME template
PAGE 60,96
TITLE template.asm -- A .EXE x86 asm file

; --- EXE file format
.model small
.stack 100h
.data
msg db 10,13,"Bienvenido Usuario Introduce un Mensaje ",'$'
msg2 db 10,13,"Finalizar la escritura con punto",'$'
msg3 db 10,13,"Mensaje Convertido",'$'

.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
parrafo db 128 dup(0)
convertido db 128 dup(0)

_$inicio:

mov di,0
mov cx,0
mov dx,offset msg
call mensajes
mov dl,0ah
call caracter

_$captura:

mov ah,01h
int 21h
cmp al,2Eh ;Comparar con punto
je _$restauracion
mov parrafo[di],al
inc di
inc cx
cmp di,128 ;Ajustar Limite para 128 caracteres.
je exit
jmp _$captura

_$restauracion:
mov dl,0ah
call caracter
mov di,0
_$conversion:
mov dl,parrafo[di]
cmp dl,20h
je _$anadir
add dl,1

_$anadir:
mov convertido[di],dl
inc di
cmp di,cx
je _$restauracion2
jmp _$conversion

_$restauracion2:
mov di,0

_$imprimir:

mov dl,convertido[di]
call caracter
inc di
cmp di,cx
je exit
jmp _$imprimir


mensajes proc
push ax dx cx

mov ah,09h
int 21h


pop cx dx ax
ret
mensajes endp


caracter proc
push ax dx cx

mov ah,02h
int 21h


pop cx dx ax
ret
caracter endp


;--------- Program Exit
exit:

mov ax,4c00h ; terminate program
int 21h

;--------- Place your functions here

;--------- No more code afte this line
end start ; DOS entry point is start


Te adjunto el archivo .asm tambien.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar