Inicio | ¿Sidebar? | RSS

Examen Práctico de Ensamblador

Hoy fue mi examen práctico de ensamblador. Llegué tranquilo como de costumbre a los exámenes (eey aja, eey,..,eey)...

El objetivo: Realizar una aplicación funcional bajo MSDOS que utilice el modo gráfico, fondo azul, con un punto de color blanco en la pantalla (De preferencia en el centro), y permita moverlo con las teclas 8,4,6 y 2 del teclado numérico.

Y bueno... me tranquilicé y comencé a ordenar las ideas,... Tardé bastante tiempo para terminar, incluso, compañeros que normalmente no les gusta la programación terminaron antes que yo :P , pero bueno, terminé y he ahí el final.

  1. ;cambiar el fondo a color azul
  2. ;poner un pixel color blanco
  3. ;usando la tecla
  4. ;usando la tecla 8,2,4,6 moveremos el pixel
  5. GRAPH MACRO    ;iniciamos modo gráfico
  6.       MOV AH,00H
  7.       MOV AL,12H
  8.       INT 10H
  9.    ENDM
  10.  
  11. PALETA MACRO color   ;Permite definir la paleta
  12.       MOV AH,0BH
  13.       MOV BH,00H
  14.       MOV BL,color
  15.       INT 10H
  16.    ENDM
  17.  
  18. PUNTO MACRO x,y,color
  19.       MOV AH,0CH
  20.       MOV AL,color   ;Color blanco
  21.       MOV BH,0
  22.       MOV CX,x
  23.       MOV DX,y
  24.       INT 10H
  25.    ENDM
  26.  
  27. .model small
  28. .stack
  29. .data
  30.    xx dw 1
  31.    yy dw 1
  32.    x dw 320
  33.    y dw 240
  34. .code
  35. .startup
  36.  
  37.    GRAPH    ;Seteamos modo gráfico 640*480
  38.    PALETA 1 ;Color azul
  39.    
  40.    PUSH AX
  41.    PUSH BX
  42.  
  43.    mover:
  44.       PUNTO xx,yy,0
  45.       PUNTO x,y,7
  46.  
  47.    MOV AH,07H  ;READKEY
  48.    INT 21H     ;
  49.    
  50.    CMP AL,56; Caracter '8'
  51.       JE UP
  52.    CMP AL,52; Caracter '4'
  53.       JE LEFT
  54.    CMP AL,54; Caracter '6'
  55.       JE RIGHT
  56.    CMP AL,50; Caracter '2'
  57.       JE DOWN
  58.    CMP AL,27; Salir
  59.       JE SALIR
  60.       JNE mover
  61.    
  62.    ;UP:
  63.    DOWN:
  64.       MOV AX,y
  65.       MOV yy,AX   ;Guardamos posicion anterior
  66.          mov bx,x;X lo movemos a XX
  67.          MOV xx,bx
  68.       INC AX
  69.       MOV y,AX
  70.       JMP mover
  71.  
  72.    LEFT:
  73.       MOV AX,x
  74.       MOV xx,AX   ;Guardamos posicion anterior
  75.          mov bx,y;X lo movemos a XX
  76.          MOV yy,bx
  77.       DEC AX
  78.       MOV x, AX
  79.       JMP mover  
  80.  
  81.    RIGHT:
  82.       MOV AX,x
  83.       MOV xx,AX   ;Guardamos posicion anterior
  84.          mov bx,y;X lo movemos a XX
  85.          MOV yy,bx
  86.       INC AX
  87.       MOV X, AX
  88.       JMP mover  
  89.  
  90.    ;DOWN:
  91.    UP:
  92.       MOV AX,y
  93.       MOV yy,AX   ;Guardamos posicion anterior
  94.          mov bx,x;X lo movemos a XX
  95.          MOV xx,bx
  96.       DEC AX
  97.       MOV y, AX
  98.       JMP mover  
  99.  
  100.    JMP mover
  101.  
  102.    MOV AH,07H  ;READKEY
  103.    INT 21H     ;
  104.  
  105.    SALIR:
  106.  
  107.    MOV AH,00H
  108.    MOV AL,03H
  109.    INT 10H
  110. .exit
  111. end

16 comentarios en "Examen Práctico de Ensamblador"

Victor

Olvide mensionar algo... Saqué 10 de calificación :D

ImZyos!

Vaya asombroso, ASM, un lenguaje complicado, yo programo microcontroladores, claro que son de una arquitectura RISK 25 instrucciones unicamente, pero permite muchisimas cosas, si pudieras poner algun tuto de como cargarlo en el debug.exe de la consola del windows, Saludos, un blog exelente

Victor

bueno, pues para cargarlo en el debug hmm,... recuerdo (tengo rato que no lo utilizo) que se tiene que poner <strong>debug</strong> seguido del nombre de la aplicación o creo que también el archivo con con código asm y empezará a recorrer línea por línea debugueando... ¿Si era esa la pregunta? se me fue el cuete :D

ImZyos!

pues, no es mi maximo aprender asm, no es muy usable para lo que me agra programar, pero siempre es bueno hecharle ojo al code

Mis Algoritmos » Blog Archive » Examen de ensamblador optimizado

[...] El código anterior fue es un asco jeje, me agarraron en curva, no sabía qué hacer,… Pero bueno, ya no importa, revisando mi anotaciones de Ensamblador y tratando de optimizar un poquito el código logre dejarlo un poco más pequeño en cantidad de líneas, más lógico :-S y documentado jeje (claro que se puede optimizar más, pero aún no se cómo)… [...]

gaby

esta genial este programa... sabes que a nosotros nos dejaron hacerlo en la escuela pero no habia podido hacerlo.... asi que ya lo copie... gracias... saludos gaby

gaby

bueno... perdon.. es que yo apenas voy comenzando con el lenguaje ensamblador asi que me es de mucha ayuda... hey si puedes contactame... gabrielacatano@hotmail.com
creo que me ayudarias bastante a aprender a programar.... gracias nuevamente!

Victor

Gracias Gaby ;-), la única forma en la que podría ayudarte es ofreciendote <a href="http://www.mis-algoritmos.com/foro" rel="nofollow">el foro</a>,... así no perderás la oportunidad de recibir una respuesta.

Carlos

Oye esta elegante, voy a utilizarlo para un proyecto de la U.
Gracias

PabloMDiez

Que tal? Y como puede aplicarse esto a la programación para celulares (específicamente para los Sony Ericsson)? Se crear patches básicos, pero los avanzados utilizan assembler y no se nada!! =( Algun curso básico como para aprender algo??

Saludos!

Victor De la Rocha

No creo que pueda aplicarse a la programación de celulares esto, supongo que para eso hay aplicaciones al estilo de Visual Basic.

Rubén

Hola Victor amigo buena tus apuntes, te felicito bueno quisiera pedirte un favor para que me autorices el uso de tu código soy principiante estoy llevando un curso "Microprocesadores I", claro que siempre he respetado el Copyrigth del autor bueno bye específicamente pienso usar el "editor basico de texto".

Victor De la Rocha

Adelante, claro que puedes usarlo ;)

Fern0S

he ecnontrado un buen tutorial de asm que estoy comenzando a leer. por si a alguien le interesa les dejo el link:

http://todoprogra.com/2007/09/04/tutorial-de-ensamblador-asm-1/

Salu2

Sonia

Hola, tengo que hacer una práctica en la que tengo que hacer lo que haces tú arriba y además que pulsando el 1 o el 2 cambie la velocidad de movimiento del pixel.
El caso es que al ejecutarlo funciona durante unos segundos y luego se para. No nos han explicado casi nada y no sé que más hacer, mis conocimientos no llegan a tanto. Podrías ayudarme o incluso te puedo recompensar económicamente si me lo consigues sacar. Igual queda un poco mal esto, pero de verdad que ya no sé que más hacer, además solamente me quedan 3 días :S

Bueno, a ver si me dices algo, un saludo!!

Victor De la Rocha

Sonia, yo dejé de usar ASM hace tiempo. No me creo capaz de hacerlo así nomás por que si jeje... buscate un libro de ensamblador, segúro que así lo logras.

Cuando yo lo usaba, no me dieron las indicaciones, todo lo investigabamos.

Deja un comentario

Suscribirse a los comentarios.