riccardinofuffolo

Calcolatori elettronici - #306

Jun 7th, 2011
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DIM EQU 10
  2. .MODEL SMALL
  3. .STACK
  4. .DATA          
  5.  
  6. TAVOLA DB DIM*DIM DUP(?)
  7.  
  8. .CODE
  9. .STARTUP        
  10.  
  11. )
  12. MOV BX, 0                              ; Indice di riga
  13. MOV CX, 1                              ; Moltiplicatore
  14.  
  15. COLONNA: MOV SI, 1                     ; Indice di colonna (dovrei partire da 1, uso un artificio per semplificare!)
  16.                  
  17.     RIGA:    MOV AX, CX                ; Sposto il moltiplicatore su AX
  18.              MUL SI                    ; Operazione su 16 bit, ma a me serve solo la parte bassa (AX, anzi, AL!)
  19.              MOV TAVOLA[BX][SI-1], AL  ; Così sfrutto SI sia per indirizzi che per moltiplicazioni
  20.              INC SI                    ; Lavoro con byte -> perfetta analogia SI++ del C
  21.              CMP SI, DIM+1             ; Ho finito le colonne della riga?
  22.     JNE RIGA                        
  23.                                        ; Al termine di ogni riga...
  24.          INC CX                        ; Incremento il moltiplicatore    
  25.          ADD BX, SI                    ; AGGIUNGO a BX la nuova posizione di inizio riga (fine ultima colonna!)
  26.          DEC BX                        ; ... ricordandomi il decremento di 1 (sono partito da 1)                                                                
  27.          CMP BX, DIM*DIM               ; Ho finito le righe della tabella?
  28. JNE COLONNA
  29.          
  30.    
  31.      
  32. .EXIT
  33. END
Advertisement
Add Comment
Please, Sign In to add comment