viernes, 28 de mayo de 2010

Digitales III – Prof. Mendoza – 3ª Evaluación del Semestre 2006-I

Este programa se requeria que dependiendo de las teclas de movimientos del teclado (flechas) se fuesen cambiando el color de los pixeles, basicamente uno iba llevando el cursor e indicando la posicion donde se encotraba con un color.

En esta practica se requeria el uso de Public y Extern. En el archivo pixeles.asm estaba la rutina principal del programa, en el archivo archivo.asm se declaran las rutinas externas.

El contenido del Archivo pixeles.asm

   1:                 .model small


   2:                  .stack 64h


   3:   


   4:                  .data


   5:  xmax            dw 639


   6:  xmin            dw 0


   7:  ymax            dw 479


   8:  ymin            dw 0


   9:  ejex            dw ?


  10:  ejey            dw ?


  11:   


  12:   


  13:                  .code


  14:  ; se declarara EXTRN todo aquello que se encuentra en otro archivo


  15:  ; y se usara en este programa. y se declara PUBLIC todo aquello


  16:  ; que se encuentra en este archivo y se usara en las rutinas


  17:  ; que se encuentran en los otros archivos


  18:   


  19:                  extrn pintar:near


  20:                  extrn leerpixel:near


  21:                  public ejex


  22:                  public ejey


  23:   


  24:  ; se inicializar los segmentos


  25:                  mov ax,@data


  26:                  mov ds,ax


  27:                  mov es,ax


  28:  ; se establece el modo grafico 12h, donde la resolucion es de 640x480


  29:  ; a 16 colores


  30:   


  31:  inicio:         mov ejex,0


  32:                  mov ejey,0


  33:                  mov ah,0


  34:                  mov al,12h


  35:                  int 10h


  36:  ; se espera a que se pulse una tecla y se verifica que sea una de las


  37:  ; teclas validas para proceder a pintar el pixel


  38:   


  39:  teclas:         mov ah,0


  40:                  int 16h


  41:                  cmp ax,4d00h


  42:                  je right


  43:                  cmp ax,4b00h


  44:                  je left


  45:                  cmp ax,4800h


  46:                  je up


  47:                  cmp ax,5000h


  48:                  je down


  49:                  cmp ax,3062h


  50:                  je clrscr


  51:                  cmp ax,3042h


  52:                  je clrscr


  53:                  cmp al,27


  54:                  je exit


  55:                  jmp teclas


  56:  ; para pintar el pixel se procede a leer el pixel anteriormente pintado


  57:  ; para conocer el color de este, se incrementa este valor y se procede


  58:  ; a pintar el siguiente dependiendo de la direccion seleccionada


  59:  right:          mov bx,ejex


  60:                  cmp bx,xmax


  61:                  je teclas


  62:                  call leerpixel


  63:                  inc ejex


  64:                  inc al


  65:                  call pintar


  66:                  jmp teclas


  67:   


  68:  left:           mov bx,ejex


  69:                  cmp bx,xmin


  70:                  je teclas


  71:                  call leerpixel


  72:                  dec ejex


  73:                  inc al


  74:                  call pintar


  75:                  jmp teclas


  76:   


  77:  up:             mov bx,ejey


  78:                  cmp bx,ymin


  79:                  je teclas


  80:                  call leerpixel


  81:                  dec ejey


  82:                  inc al


  83:                  call pintar


  84:                  jmp teclas


  85:   


  86:  down:           mov bx,ejey


  87:                  cmp bx,ymax


  88:                  je teclas1


  89:                  call leerpixel


  90:                  inc ejey


  91:                  inc al


  92:                  call pintar


  93:  teclas1:        jmp teclas


  94:   


  95:  clrscr:         jmp inicio


  96:   


  97:  ; se reestablece el modo texto y se sale del programa


  98:   


  99:  exit:           mov ah,0


 100:                  mov al,3


 101:                  int 10h


 102:                  mov ax,4c00h


 103:                  int 21h


 104:   


 105:                  end




El contenido del archivo archivo.asm solo se declaran las rutinas



 




   1:                  .model small


   2:                  .code


   3:                  public leerpixel


   4:                  public pintar


   5:                  extrn ejex


   6:                  extrn ejey


   7:  proc leerpixel near


   8:                  mov ah,0dh


   9:                  mov bh,0


  10:                  mov cx,ejex


  11:                  mov dx,ejey


  12:                  int 10h


  13:                  retn


  14:  leerpixel endp


  15:   


  16:  proc pintar near


  17:                  mov ah,0ch


  18:                  mov bh,0


  19:                  mov cx,ejex


  20:                  mov dx,ejey


  21:                  int 10h


  22:                  retn


  23:  pintar endp


  24:                  end


No hay comentarios:

Publicar un comentario