Welcome, Guest
Username: Password: Remember me
  • Page:
  • 1

TOPIC: Código del cesar que hicimos en clase del jueves

Código del cesar que hicimos en clase del jueves 3 days 18 hours ago #9452

  • kirstein
  • kirstein's Avatar Topic Author
  • Offline
  • Profesor
  • Profesor
  • Posts: 2688
  • Karma: 666
  • Thank you received: 1577
Hola,

+ Acá está el ejemplo del código de cesar que arreglamos en clases para que recibiera de la línea de comandos la palabra a cambiar.
+ ¿Recuerdan que lo último que hicimos fue que les pregunté que alguno leyera en el minimanual de interrupciones en donde recibía el caracter a desplegar?. Yo dije que estaba 95% seguro que era en el dl y alguien me dijo que era en el al.
+ Pues era en el dl.
+ Le agregué la línea correspondiente a moverlo al dl antes de llamar a la int 21h y listo ya funciona como queríamos.
+ Como no revisamos que se enviara algo en la línea de comandos, si no le envían nada les va a pegar la máquina. En la clase del martes le vamos a agregar algunas cosillas como esas para que les sirva mejor de ejemplo para la tarea corta.
+ Además me gustaría que el martes recibiéramos también por la línea de comandos el número a sumar para que practiquemos como convertir un string a su valor numérico. Por favor me lo recuerdan en la clase.

Saludos,
Kirstein
; Este es un trozo de código que implementa el cifrado cesar simple.
; arreglado para que reciba la palabra por la línea de comandos y la despliegue
; cifrada a la salida estandar.
; Recuerden NO probarlo sin parámetros en la línea de comandos.

datos segment

    Palabra db 128 dup(?)
    Cesar db 3 

datos ends

                  
pila segment stack 'stack'

    dw 256 dup (?)

pila ends


codigo segment

    assume  cs:codigo, ds:datos, ss:pila
                                                                             
 inicio: 
          mov ax, ds
          mov es, ax

        ; push ds
        ; pop es


         mov ax, datos   ; protocolo de inicialización del programa.
         mov ds, ax
         mov ax, pila
         mov ss, ax

         ; Cargar la palabra de la línea de comandos

         mov si, 80h
         mov cl, byte ptr es:[si]   
         xor ch, ch
         inc cx 
         lea di, Palabra 

  linea: mov al, byte ptr es:[si]
         mov byte ptr [di], al
         inc si
         inc di
         loop linea   

         ; Supone que la palabra y el valor están correctos.

         nop
         nop
         nop 
         lea si, Palabra
         mov cl, byte ptr [si]
         xor ch, ch  

         mov ah, 02h 
  ciclo: inc si
         mov al, byte ptr [si]
         add al, Cesar
         cmp al, 'z'
         ja ajuste
   bien: mov byte ptr [si], al

         mov dl, al  ; instrucción que le agregué

         int 21h         
         loop ciclo 
         jmp salir   
 ajuste: sub al, 26
         jmp bien         
  salir: nop
         nop
         nop
         mov ax, 4C00h    ; protocolo de finalización del programa.
         int 21h    
codigo ends
end inicio

Please Identificarse to join the conversation.

  • Page:
  • 1
  • Not Allowed: to create new topic.
  • Not Allowed: to reply.
  • Not Allowed: to add attachements.
  • Not Allowed: to edit your message.
Time to create page: 0.128 seconds
Powered by Kunena Forum