This site uses cookies own and third. If you continue to browse consider to accept the use of cookies. OK More Info.

listas en assembler ciclo loop emu8086 [facil]

  • 3 Replies
  • 4328 Views

0 Members and 1 Guest are viewing this topic.

Offline ErielSinh

  • *
  • Underc0der
  • Posts: 13
  • Actividad:
    0%
  • Country: 00
  • Reputación 1
  • The karma is a bitch
    • View Profile

listas en assembler ciclo loop emu8086 [facil]

  • on: December 09, 2020, 09:44:47 pm
El siguiente programa es un ejemplo sencillo de como funciona el ciclo de repeticion equivalente al for
Programa que imprime una lista y suma todos sus componentes
Code: You are not allowed to view links. Register or Login
org 100h;iniciamos en la direccion 100h de la memoria
mov bx,0 ; utilizaremos un contador en bx para movernos dentro de la lista, este inicia en cero
mov cx,5; en cx se declara el numero de repeticiones del loop nuestra lista tendra un tamaño de 5 asi que con 5 repeticiones  basta
 repetir:  ;   aqui empezara el loop, tenemos nuestro loop con la etiqueta repetir:
; aqui debemos poner todas las acciones que queremos que se repitan
  mov al,lista[bx];  copiamos el contenido almacenado en lista[posicion] en al
  add suma, al ; sumamos a la variable suma el valor contenido en al, es como suma=suma+al
  add bx,1;  movemos nuestra posicion de la lista para la siguiente repeticion
 loop repetir ; al llegar aqui saltara a la etiqueta repetir:
ret ; abajo de ret declararemos todos nuestras variables
 
lista db 4,3,5,78,1   ; declaramos nuestra lista en data byte con los valores 4,3,5,78,1
suma db 0; inicializamos una variable suma para almacenar el total de la suma de la lista
Ejecutamos nuestro codigo en emu8086, viendo las variables


Ahora veremos otro ejemplo con listas
Programa para determinar el mayor de una lista
Code: You are not allowed to view links. Register or Login
org 100h
 mov bx,0
 mov cx,n
 
 repeticion:
   mov ax,lista[bx]
   cmp ax,mayor
   jg cambiar
   jmp continuar
   cambiar:
     mov mayor,ax   
   
   continuar:
   add suma,ax
   add bx,2     
   
 loop repeticion
ret
n dw 5 
lista dw 4,3,5,7,1
suma dw 0   
mayor dw 0
Ejecutamos el codigo en emu8086


a modo de ejercicio intenten sacar el menor de la lista


« Last Edit: December 10, 2020, 01:16:24 am by ErielSinh »

Offline DtxdF

  • *
  • Moderador Global
  • Posts: 1144
  • Actividad:
    20%
  • Country: 00
  • Reputación 27
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • View Profile
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.
    • Email

Re:listas en assembler ciclo loop emu8086 [facil]

  • on: December 10, 2020, 01:48:52 am
Genial aporte @You are not allowed to view links. Register or Login. Como pequeñas recomendaciones, para no acceder constantemente a la memoria, lo que podría usar es un registro y a su vez, almacenar el resultado en memoria; como nimiedad mía, lo que puede hacer es que en vez (si su ensamblador le permite) de ajustar el registro CX con el valor inmediato, disponer de una constante (es lo mismo, pero no en código) o si prefiere (aunque también depende de lo que haga el programa y sus necesidades), es usar una variable que especifique el número de repeticiones; y por último, usar INC para sumar un solo número y gastar menos bytes.

Aquí le dejo un ejemplo más o menos de lo que dije anteriormente:
Code: (asm) You are not allowed to view links. Register or Login
; Programa escrito en TASM para sumar todos los números de un arreglo.

MODEL Tiny
DATASEG
lista DB  1,2,3,4 ; es igual a 0A (10, en decimal)
suma  DB  0
NREP  EQU 4

CODESEG
ORG 100h
start:
LEA SI, lista
LEA DI, suma
MOV CX, nrep
XOR DL, DL

repetir:
MOV AL, [SI]
ADD DL, AL
INC SI

LOOP repetir
MOV [DI], DL

END start

~ DtxdF
Los seres humanos son robots, cuyo combustible es el afanado dinero.

Offline ErielSinh

  • *
  • Underc0der
  • Posts: 13
  • Actividad:
    0%
  • Country: 00
  • Reputación 1
  • The karma is a bitch
    • View Profile

Re:listas en assembler ciclo loop emu8086 [facil]

  • on: December 10, 2020, 01:52:29 am
gracias por las recomendaciones, estoy haciendo un curso de assembler para luego empezar con cracking quise compartir algunos ejercicios que habia resuelto para practicar algunos ejercicios

Offline DtxdF

  • *
  • Moderador Global
  • Posts: 1144
  • Actividad:
    20%
  • Country: 00
  • Reputación 27
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • View Profile
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.
    • Email

Re:listas en assembler ciclo loop emu8086 [facil]

  • on: December 10, 2020, 03:04:38 am
@You are not allowed to view links. Register or Login

Excelente que tenga deseos por adentrarse en este hermoso mundo. Siga así y no le tiemble el pulso a la hora de seguir compartiendo estos grandiosos aportes, que de seguro, ayudarán a muchos.

Suerte.

~ DtxdF
Los seres humanos son robots, cuyo combustible es el afanado dinero.