Ensamblador - ayuda para codigo en assembler

 
Vista:

ayuda para codigo en assembler

Publicado por Luis (1 intervención) el 07/06/2009 18:27:55
bueno yo soy novato en este lenguaje y necesito q me ayuden a ver q errores hay en este programita

....

;Programa impresión de ingreso de datos por teclado e impresión en pantalla de opciones (1-3)
pila segment stack
db 64 dup ("pila")
pila ends

data segment

let1 db "Este es mi primer programa $"
let2 db 13,10,"Cual mensaje deseas (1-3)$"
let3 db 13,10, "deseas terminar el programa (s/n)$"
let4 db 13,10, "___________ERROR___________$"

msg1 db "Mensaje UNO$"
msg2 db "Mensaje DOS$"
msg3 db "Mensaje TRES$"

data ends

codigo segment
assume cs:codigo,ds:data,ss:pila
inicio:
mov ax,data ; Instrucciones para todo programa
mov ds,ax ;
call clrscr
mov dx,offset let1
mov ah,09h
int 21h

mov dx,offset let2
mov ah,09h
int 21h
lee_tecla: mov ah,01h
int 21h
mensaje1: cmp al,31h
jne mensaje2
mov ah,09h
lea dx,msg1
int 21h
jmp salir
mensaje2: cmp al,32h
jne mensaje3
mov ah,09h
lea dx,msg2
int 21h
jmp salir
mensaje3: cmp al,33h
jne error
mov ah,09h
lea dx,msg3
int 21h
jmp salir

exit: lea dx,let3
mov ah,09h
int 21h
mov ah,01h
int 21h
cmp al,"s"
je salir
cmp al,"S"
je salir
cmp al,"n"
je ciclar
cmp al,"N"
je ciclar
error: lea dx,let4
mov ah,09h
int 21h
jmp exit
ciclar: call clrscr
; jmp ciclar2
salir: call clrscr
mov ax,4d00h
int 21h
; procedimiento para limpiar pantalla
clrscr proc near
mov ax,0600h
mov bh,07h
mov cx,0000h
mov dx,184fh
int 10h ;interrupcion del BIOS
mov ah,02h
mov dx,0
mov bh,0
int 10h
ret
clrscr endp

mov ax,4c00h
int 21h

codigo ends
end inicio
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

RE:ayuda para codigo en assembler

Publicado por MSH (120 intervenciones) el 07/07/2009 03:57:42
Tenías pequeños errores en los saltos

;Programa impresión de ingreso de datos por teclado e impresión en pantalla de opciones (1-3)
pila segment stack
db 64 dup ("pila")
pila ends

data segment

let1 db "Este es mi primer programa $"
let2 db 13,10,"Cual mensaje deseas (1-3)$"
let3 db 13,10, "deseas terminar el programa (s/n)$"
let4 db 13,10, "___________ERROR___________$"

msg1 db "Mensaje UNO$"
msg2 db "Mensaje DOS$"
msg3 db "Mensaje TRES$"

data ends

codigo segment
assume cs:codigo,ds:data,ss:pila
inicio:
mov ax,data ; Instrucciones para todo programa
mov ds,ax ;
ciclar2:
call clrscr
mov dx,offset let1
mov ah,09h
int 21h

mov dx,offset let2
mov ah,09h
int 21h
lee_tecla:
mov ah,07h
int 21h
mensaje1: cmp al,31h
jne mensaje2
mov ah,09h
lea dx,msg1
int 21h
jmp exit
mensaje2: cmp al,32h
jne mensaje3
mov ah,09h
lea dx,msg2
int 21h
jmp exit
mensaje3: cmp al,33h
jne errores
mov ah,09h
lea dx,msg3
int 21h
jmp exit

exit:
lea dx,let3
mov ah,09h
int 21h
mov ah,01h
int 21h
cmp al,"s"
je salir
cmp al,"S"
je salir
cmp al,"n"
je ciclar
cmp al,"N"
je ciclar
errores:
lea dx,let4
mov ah,09h
int 21h
jmp exit
ciclar: call clrscr
jmp ciclar2
salir:
mov ax,4c00h
int 21h

; procedimiento para limpiar pantalla
clrscr proc near
mov ax,0600h
mov bh,07h
mov cx,0000h
mov dx,184fh
int 10h ;interrupcion del BIOS
mov ah,02h
mov dx,0
mov bh,0
int 10h
ret
clrscr endp

codigo ends
end inicio
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