Sam86
Sortir du Manuel 1. Sam86  /   2. Sam86 et les autres  /   3. Le langage  /   4. Ligne de commande  /   5. Contact

2. Sam86 et les autres

Prise en main rapide pour les utilisateurs expérimentés.

 

2.1 Sam86 n'est pas sensible à la casse.

    abc dw 1
    mov ax, [abc]
    <=>aBc DW 1
    mOv Ax, [ABC]
    Les exemples n'ont aucune signification.

2.2 Variables et labels.

    Les deux écritures ci-dessous générent le même code mais celle de gauche émet un warning (attention) car la variable abc n'occupe que 8 bits or EAX est 32 bits. Ces messages n'interrompent pas la compilation. Il est recommandé de ne pas les ignorer car ils peuvent vous éviter des bogues.

    abc db 1
    mov eax, [abc]
       Pas de contrôle =>
    <= Attention !!!   
    abc: db 1
    mov eax, [abc]

    Pour le forçage, utilisez byte, word et dword.

    abc db 1
    mov eax, [abc]
             Ok =>abc db 1
    mov eax, dword [abc]

    Vous pouvez ne pas afficher les warnings en utilisant les options silencieuses. (cf ligne de commande)

2.3 Référence aux variables et aux labels.

    Les crochets sont facultatifs.

    abc dw 1
    mov ax, abc
    <=>abc dw 1
    mov ax, [abc]

    La directive OFFSET permet de mettre en immédiate l'adresse d'une référence.

    abc dw 1
    mov ax, offset abc
    <=>*abc dw 1
    lea ax, [abc]
    * Ces deux écritures ont un sens équivalent pas mais ne sont pas identiques.
    La première prend un octet de moins (à cause de l'optimisation sur AX).

2.4 Ni ASSUME, Ni MODEL

    Le ret génère toujours un retour near. Pour les retours far, utilisez retf.

2.5 n DUP(x)

    La directive DUP fonctionne sous Sam86, mais pas la directives times.

    pile db 0,0,0,0,0,0<=>pile db 6 dup(0)