Caricare documenti e articoli online 
INFtub.com è un sito progettato per cercare i documenti in vari tipi di file e il caricamento di articoli online.


 
Non ricordi la password?  ››  Iscriviti gratis
 

Assembler - I REGISTRI

finanze






Benedetti Vallenari Mirco


INTRODUZIONE:



Per programmare il microprocessore, cioè per scrivere programmi e procedure eseguibili dal microprocessore, si usa un linguaggio simbolico chiamato LINGUAGGIO ASSEMBLY, fornito da istruzioni che rappresentano il funzionamento interno del processore e le sue operazioni elementari.

Si dice che l' assembly è un linguaggio orientato alla macchina,infatti per programmare in assembly occorre conoscere l' architettura del microprocessore e del sistema di calcolo.


Per tradurre un programma sorgente scritto in assembly 8088/8086, si usa un programma assemblatore che accetta i linguaggi assembly e li traduce automaticamente in codice oggetto, quindi assegna alle frasi scritte il rispettivo codice macchina.


I REGISTRI:

Se il microprocessore ha un parallelismo uguale a 16, possiamo avere 4 registri a 16 bit, a loro volta ogni registro si divide in due registri a 8 bit:



I registri a 16 bit si chiamano : AX - BX - CX - DX
























AX

AH


AL




BX

BH


BL




CX

CH


CL




DX

DH


DL















H= hight L= low


Il registro  AX oltre ad essere un registro accumulatore,(Registri accumulatori,sui quali sono state implementate le operazioni aritmetico - logiche),viene utilizzato nelle moltiplicazioni e divisioni, e anche attraverso le operazioni di input e output verso le periferiche.


Il registro BX viene utilizzato come indice di un vettore o come base di una tabella.


Il registro CX viene utilizzato come contatore per esempio nelle istruzioni loop


Il registro DX viene utilizzato in moltiplicazioni per contenere la parte più significativa di un prodotto o nelle divisioni per contenere il resto,nelle istruzioni IN e OUT e in molte chiamate al sistema operativo DOS.



STAMPARE A VIDEO UN CARATTERE:


mov dl,'A'   ;Il carattere da stampare deve essere nel registro DL

mov ah,02

int 21h



LEGGERE UN CARATTERE DA TASTIERA:


mov ah,01

int 21h   ;Il carattere letto si trova nel registro AL



ESERCIZIO:
somma tra 2 numeri e stampa a video il risultato;


mov al,3  ; assegno al registro 3

mov ah,5 ; assegno al registro 3

add al,ah ; sommo i due registri il risultato si trova in al


mov ah,02   ;stampo a video il risultato

mov dl,al

add dl,'0'

int 21h



VARIABILI:


Nome variabile tipo valore di inizializzazione


Es:

numero db ;la variabile numero contiene 5 ed è di tipo define bite


Tipo variabili;

DB : define bite 0..255
DW : define word 0..65535 = 64k


Valore di inizializzazione:


Se non vogliamo mettere nessun valore mettiamo ?



CONFRONTO:


cmp x,y ;confronto x con y


dopo questa istruzione ci può andare:

je    x=y jge x≥y

jl    x<y jz x = 0

jle x≤y jnz x ≠ 0

jg x>y jnz x ≠ 0

jmp Salto senza condizioni


Es:

mov al,n1

cmp al,n1 ;confronto al con n1

jne fine ; se non sono uguali salta a fine:

mov ah,02 ;se sono uguali stampa U

mov dl 'U'

int 21h

jmp end ;salta a end e finisce il programma

..

.

.

fine:   ;etichetta fine:

mov dl,'D' ; se sono diversi salta qui e stampa D

mov ah,02

int 21h

end ;fine programma



VETTORI:


Array db 200 dup('A')


200 è la dimensione del vettore

Dup sta per duplica

Tra ( ) c'e il valore di inizializzazione


DICHIARAZIONE DI UNA STRINGA


Stringa db " asino ki legge $ "


STAMPARE UNA STRINGA A VIDEO:


mov ah,09

lea dx,stringa ;lea carica l' indirizzo della stringa

int 21h



MOLTIPLICAZIONE


mul












BIT



BIT



MUL

BL


MUL

BX










AX =

AL*BL


DX:AX =

AX*BX




















DIVISIONE

DIV










BIT



BIT



DIV

BL


DIV

BX











AL / BL


DX :AX /

BX


IN

AL

RISULTATO


IN

AX

RISULTATO

IN

AH

RESTO


IN

DX

RESTO




SERIALE:


Entrambe le macchine devono venire sincronizzate quindi devono avere gli stessi parametri;


Baud rate bps ( bite per secondo)



Bps






Bps






Bps






Bps






Bps






bps






Bps






bps






Bit di parità:


pari 00

dispari    01

nessun bit   10 & 00


Servono in modo che chi riceve può capire se sono avvenuti degli errori.


Bit di stop:


0 bit

1 bit



Lunghezza parola:


7 bit  10

8 bit  11

lunghezza


n , 8 , 1 bit di stop


Baud rate   parità































baud rate

bit di parità


Lunghezza
















bit di stop















PARAMETRI:


Mov ah,0

Mov al,0e3h

Mov dx porta(com.)

Int 14h


SPEDIRE UN CARATTERE


Mov ah,01

Mov dx,porta

Mov al,carattere

Int 14h


RICEVERE un carattere dalla seriale:


mov ah,02

mov dx,porta

int 21h


LEGGERE LO STATO DELLA SERIALE:


mov ah,03

mov dx,porta

int 14h

test ah,1

jz next


mov ah,02

mov dx,0

int 14h

mov dl,al

mov ah,02

int 21h

jmp next







CLRSER CANCELLA SCHERMO:


mov ah,06

mov al,0

mov bh,7

muv cx,0

mov dh,24

mov dl,79

int 10h


SPOSTA CURSORE RIGA - COLONNA


Mov ah,02

Mov bh,0

Mov dh riga (y)

Mov dl colonna (x)

Int 10h


CONTROLLA LO STATO DELLA TASTIERA:


mov ah,01

int 16h

jz avanti   ;se non c'è il carattere salta



SCHELETRO


STACK SEGMENT WORD STACK 'STACK'

STACK ENDS

DATA SEGMENT WORD PUBLIC 'DATA'


;VARIABILI


DATA ENDS

CODE SEGMENT BYTE PUBLIC 'CODE'

ASSUME CS:CODE,ES:CODE,DS:DATA,SS:STACK

START: MOV AX,DATA;AX=DATA

MOV DS,AX;DS=X


;PROGRAMMA


MOV AX,4C00h

INT 21h

CODE ENDS

END START




Privacy




Articolo informazione


Hits: 6407
Apprezzato: scheda appunto

Commentare questo articolo:

Non sei registrato
Devi essere registrato per commentare

ISCRIVITI



Copiare il codice

nella pagina web del tuo sito.


Copyright InfTub.com 2024