PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE...

23
PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

Transcript of PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE...

Page 1: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

PODSTAWOWE ELEMENTY ASEMBLERA

TRYBY ADRESOWANIA.

OPERATORY ASEMBLERA

Page 2: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

PODSTAWOWE ELEMENTY ASEMBLERA

Składnia języka

Postać wiersza programu

Dyrektywy i pseudoinstrukcje

Deklaracja zmiennych

Zmienne łańcuchowe

Odwrotne przechowywanie danych o rozmiarze powyżej jednego bajta

Podstawowa instrukcja przeniesienia: instrukcja MOV

Modele pamięci

Pliki *.COM i *.EXE

Pobranie adresu efektywnego

Page 3: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

Zbiór znaków alfabetu A-Z; a-z; 0-9;

Znaki specjalne: + - _ * / = ( ) [ ] < > , . ‘ „ : ? @ $ %

Spacje (20H), CR (0DH), NL (0AH)

Stałe liczba dwójkowa b, B: 10101b, 10101B

liczba ósemkowa q, Q: 1234q, 1234Q

liczba dziesiętna d, D:123, 123d, 123D

liczba szesnastkowa h, H; pierwszy znak nie może być litery: dopisujemy:12h, 12H, 0AH

stałe alfanumeryczne ASCII kody, albo ciągi liter w ‘/”: ‘qwer’, „qwer”, 10, 13

Słowa kluczowe

Nazwy symboliczne pierwszy znak ma być litera (a..z, A...Z), ‘@’, ‘_ ‘lub ‘?’: test_1, @asdf,?qwer,a.

rozróżniane są tylko pierwsze 31 znaki, nazwa może być 1 znak, ale nie ‘?’

SKŁADNIA JĘZYKA

Page 4: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

POSTAĆ WIERSZA PROGRAMU

Z instrukcją właściwą lub wywołania makroinstrukcji:

[etykieta:] [przedrostek] [instrukcja] [argument(y)] [;komentarz]

Z dyrektywą lub (pseudo) instrukcją: [nazwa] dyrektywa/instrukcja [argument(y)]

[;komentarz]

Format rozkazów: kod_mnemoniczny [argument_1], [argument_2],

[argument_3]

Page 5: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

DEREKTYWY I PSEUDOINSTRUKCJE

Deklaracja segmentu:SEGMENT/ENDS nazwa SEGMENT [typ] [połączenie] [‘nazwa_klasy’]

;............. wszystkie instrukcje i dane, należące temu segmentowi.............

nazwa ENDS

Deklaracja zawartości rejestrów segmentowych: ASSUME reg_seg: nazwa[,reg_seg: nazwa....]

Np. ASSUME DS:DANE

Inne dyrektywy: EQU - deklaracja stałych Np. ROZMIAR EQU 5000

PUBLIC

EXTERN

INCLUDE

Page 6: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

DEKLARACJA ZMIENNYCH

DB - dla zmiennych bajtowych ( np. byte, unsigned char),

DW - dla zmiennych słowowych (np. integer, short int),

DD - dla zmiennych dwusłowowych (np. long int),

DF - dla zmiennych trzysłowowych (np. real),

DQ - dla zmiennych czterosłowowych (np. double),

DT - dla zmiennych pięciosłowowych (np. extended).

Page 7: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

ZMIENNE ŁAŃCUCHOWE

Deklaracja bezpośrednia

CIĄG_LICZB db 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

TEKST db 'Cześć!'

Znaki db ‘abcdef’, 20, 30, ‘xyz’

Deklaracja poprzez dyrektywy dup (duplicate)

TABLICA db 1000 dup (0)

TABLICA_2 db 200 dup (1,2,3,4)

TABLICA_3 db 100 dup ('stosik')

Page 8: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

;==============================================================

; DEMO RÓŻNYCH ZMIENNYCH - DEKLARACJA I STOSOWANIE |

; 02.03.2012 T.D-Grekow |

;==============================================================

.MODEL SMALL

.386

.DATA

char db 10

integer dw 10000010b

long dd 1234h

real df 0abbacdh

double dq 1234abcdh

ext dt 0f0f0f0f0fh

tab1 db 1000 dup (0)

tab2 db 10 DUP (10 dup (5))

tab3 dd 10 dup (32 dup (8 dup ('$')))

temp1 db ?

temp2 dd ?

.CODE

MOV ax, @data

MOV ds, ax

MOV ax, integer

MOV al, tab2

MOV eax, tab3

MOV ah, 4ch

int 21h

END

Page 9: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

Odwrotne przechowywanie danych o rozmiarze powyżej jednego bajta

Liczby dw 0C83Ah, 700H, 419Dh, 9238h

Liczba dd 1256ABEFh

Adres 00000

Adres FFFFFh

EF

AB

56

12

➔Adres X

➔Adres X+1

➔Adres X+2

➔Adres X+3

Page 10: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

Modele pamięci Tiny

Small

Medium

Compact

Large

Huge

Page 11: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

Pliki *.COM i *.EXE Pliki typu .exe

Page 12: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

Pliki typu .com:

Model tiny

Przy kompilacja: klucz /t

Page 13: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

POBRANIA ADRESU EFEKTYWNEGO

Instrukcja LEA Przykład_2.3:

.............................

NAPIS DB ‘ALA MA KOTA$’

.............................

LEA DX, NAPIS

Dyrektywa offset: ........

.data

text1 db „TEKST1”

text2 db „TEKST2”

..............

mov dx, offset text1

.........

mov si, offset text2

………

Page 14: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

TRYBY ADRESOWANIA. OPERATORY ASEMBLERA Adresowanie domyślne (cbw, mul bx)

Adresowanie natychmiastowe (ang. immidiate, imm):

mov ax, 123h mov al, 123

??? mov cl, 123h???

Adresowanie rejestrowe: MOV BX, SI ; przepisz wartość si do bx

MOV DX, BX ; przepisz zawartość bx do dx

MOV AL, BX ; ŹLE! MOV CS, CX ; ŹLE! MOV DS, CS ; ŹLE!

Page 15: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

Adresowanie bezpośrednie

Proste: MOV AX, LICZBA

MOV AX, [LICZBA]

Z przesunięciem: LICZBA DB 15, 03AH, 23, 633, 0A9H, 0EH,

176

MOV AX, [LICZBA+3]

Page 16: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

Przykład (demo?)

.model small

.stack

.data

a db 3ah

b db 19

c db ?

.code

start:

mov ax, @data

mov ds, ax

mov al, a

mov ah, b

add ah, al

mov c, ah

end

Page 17: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

Indirektane adresowanie rejestrowe (SI, DI, BX, BP) NORMALNE

mov al, [si]

mov al, [di]

mov al, [bx]

mov al, [bp] ;UWAGA!!!

PREDEFINIOWANE

mov al, cs:[bx]

mov al, ds:[bp]

mov al, ss:[si]

mov al, es:[di]

Page 18: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

DS JEST DOMYŚLNY DLA BX, SI

i DI

• DLA BP – DOMYŚNY JEST SS!!!

Page 19: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

ADRESACJA BAZOWO INDEKSOWA

Normalna

• Z przesunięciem

Page 20: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

Reguły główne

BP -> SS

R32: Baza Indeks

Skalowany rejestr jest rejestrem Indeksowym

Page 21: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

Bazowy indeksowany ze skalowaniem

Sposoby zapisu adresu:

disp [index*n]

[base] [index*n]

disp [base] [index*n]

Page 22: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

Przykład

Tablica DW 5, 10, 15, 20, 25

.............

mov ax, [Tablica][esi*2]

mov ax, [ebx*2+Table]

mov eax, [ebx+ecx*4]

mov ax, [ebx*8+ecx+4]

mov ax, 4 [ecx] [ebx*4]

Page 23: PODSTAWOWE ELEMENTY ASEMBLERA. TRYBY …aragorn.pb.bialystok.pl/~teodora/AK/W2.pdf · PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje

Operatory Asemblera Operatory arytmetyczne (+, -, *, /, MOD)

dodawanie/odejmowanie: mov ax, licz1+licz2-licz3

mnożenie/dzielenie: mov cx, TabSize / ElemSize

MOD: reszta z dzielenia całkowitego:

mov ah, 14d MOD 3 ; =2

Operatory przesunięcia (SHL, SHR):mov ah, 3 SHL 3

Operatory logiczne: mov ax, konst OR 5

Operatory relacji:

mov cx, ((Var LT 100) AND 100) OR (Var GE 100) AND 200)