asembler5

asembler5



EAX(32 bity)

31

Starsze bity

15

7 0

Młodsze bity

ECX (32 bity)

31

9 Starsze bity

Carry Flag

(znacznik przeniesienia)

15

7 0 Młodsze bity

Rysunek 2.8. Rysunek prezentują, jak przesuwają się bity dla instrukcji SHLD

EAX (32 bity)

31 15 7 0

Starsze bity Młodsze bity

ECX(32 bity)

3^ ^5 ^ 0 Carry Flag Starsze bity Młodsze bity , . . . . ,

' (znacznik przeniesienia)

Rysunek 2.9. Rysunek prezentujący, jak przesuwają się bity dla instrukcji SHRD

2.3. Instrukcje wywołania procedury i powrotu

Instrukcje związane z procedurami

Procedury to wydzielone części programu, które mogą być wielokrotnie wywoływane, bez potrzeby kopiowania tego samego kodu w różne miejsca. Tworzenie takich procedur (nazywanych też podprogramami) jest możliwe przy użyciu instrukcji związanych z procedurami.

CALL (wywołanie funkcji/podprogramu)

Składnia: CALL nazwa_funkcji

Służy do wywołania jakiejś funkcji. Poniżej przedstawiam przykład użycia tej instrukcji:

pmh 0

cali Ex1tProcess

A zatem, jak widać, odkładamy na stos wartość zero i wywołujemy funkcję, która zakończy program. Przed instrukcją CALL odkładamy na stos argumenty funkcji za pomocą znanej już nam instrukcji PUSH. Pamiętajmy, żeby odkładać argumenty w odpowiedniej kolejności, więc jeśli funkcja przedstawia się tak: JakasFunkcja(argumentl, argumentż, nryument3), to jej wywołanie będzie następujące (zaczynamy od końcowego argumentu):

push argument3 push argument2 push argumentl cali JakasFunkcja

RET (powrót)

Składnia: RET

Wychodzi z danej funkcji/procedury i wraca do miejsca jej wywołania, będziemy używać tej instrukcji na końcu procedur.

Tworzenie procedur/funkcji

Procedury tworzymy za pomocą dyrektyw PROC i ENDP. Przykładowy program z procedurą wygląda następująco:

.386

.model fiat, stdcall option casemap: nonę

Include

Include

Include

Windows.inc

kernel32.inc

user32.inc

Includelib Includelib

user32.1ib kernel32.1ib

.data

MsgCaption

MsgText

db "Informacja", 0 db "Witaj!", 0

.data?

.codę

start:


Wyszukiwarka

Podobne podstrony:
asembler4 EAX (32 bity) 31 15 WWWMKBiBISIBBk-i 7 0 Starsze bity -- Młodsze bity Carry
asembler3 Przesuwa w lewo bity pierwszego operandu o podaną liczbę bitów w operandzie drugim. Stars
p1020911 (2) SCSI - 3 §€ 16 i 32 bity 840, 80, 160, 320 MB/s 87,15, 31 urządzeń Leszek Borzemski 31
p1020911 (2) SCSI - 3 §€ 16 i 32 bity 840, 80, 160, 320 MB/s 87,15, 31 urządzeń Leszek Borzemski 31
Image26 o 15 16 31 wersja 4 bity długość nagłówka 4 bity typ usługi (TOS) 3 bitów długość
datagram (2) o 15 1*$ 31 Wersja 4 bity długość nagłowia 4 bit v łyp usługi (TOS) 8 bitów dług
tcp (2) numer portu źródłowego 1*3 bitów numer portu przeznaczenia 1*3 bitów numer sekwencyjny 32 bi
•Adres IP składa się z 32 bitów. •Zamiast pracować z 32 bitami jednocześnie, przyjęto dzielić 32 bit
sch 2 A 5 126 12,13,12? 127 123 129,15,16,19,20 17 24 21,10 18 26 22 161 16 2 2 8 21 30,29 140,32
skanowanie 10 11 15 32 10POLITYKA SPOŁECZNA WOBEC LUDZI STARSZYCHI NIEPEŁNOSPRAWNYCH Dr Michał Kubi
skan4 2) 14 31 47 65 85 86 87 104 105 118 1,1 1,22,03,1 3,83,92,1 6,02,74,5 IV 1) 15 16 32 48 49 6
Slajd5 Magistrala ISA - nowa 32 bity danych 32 bitowy obszar adresowania Logika na płycie r Szyna IS
SOISK83 - 1.4. Klasy adresów IP Teoretycznie, mając do dyspozycji 32 bity, możemy wygenerować 212 =

więcej podobnych podstron