STRUKTURA I ORGANIZACJA STOSU (FILO- First In Last Out) Rejestry stosu: SS i SP (Stack Segment i Stack Pointer)



Podobne dokumenty
Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

Programowanie Niskopoziomowe

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

PROGRAMY REZYDENTNE Terminate and State Resident, TSR

end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.

Ćwiczenie nr 6. Programowanie mieszane

INSTRUKCJE Instrukcje przeniesienia: Instrukcje konwersji: Arytmetyczne instrukcje:

Architektura komputerów. Asembler procesorów rodziny x86

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Adam Kotynia, Łukasz Kowalczyk

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Programowanie Niskopoziomowe

J. Duntemann Zrozumieć Assembler Leo J. Scanlon Assembler 8086/8088/80286 S. Kruk Programowanie w Języku Assembler

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

Ćwiczenie 3. Konwersja liczb binarnych

Programowanie niskopoziomowe

Sprzęt i architektura komputerów

Programowanie komputera

Zuzanna Hartleb i Artur Angiel

Sprzęt i architektura komputerów

Praktycznie całe zamieszanie dotyczące konwencji wywoływania funkcji kręci się w okół wskaźnika stosu.

Architektura Systemów Komputerowych

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Programming in Assembler. Laboratory manual. Exercise 6

WOJSKOWA AKADEMIA TECHNICZNA

PROGRAMOWANIE NISKOPOZIOMOWE

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

Procesory rodziny x86. Dariusz Chaberski

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Architektury Komputerów - Laboratorium Informatyka III rok studia dzienne

Ćwiczenie nr 4. Zasady kodowania podprogramów

Sterowanie pracą programu

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

organizacja procesora 8086

Dyrektywy asemblera. .286p.386p.486p.586p

Architektura systemów komputerowych Laboratorium 7 Symulator SMS32 Stos, Tablice, Procedury

Pamięć operacyjna. segment stosu. PUSH src - instrukcja składowania na stosie działa następująco

Architektura Systemów Komputerowych. Sterowanie programem skoki Przerwania

Technika Próżniowa. Przyszłość zależy od dobrego wyboru produktu. Wydanie Specjalne.

Programowanie Niskopoziomowe

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Architektura komputerów

PROGRAMOWANIE NISKOPOZIOMOWE. Adresowanie pośrednie rejestrowe. Stos PN.04. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

1. Asembler i wstawki asemblerowe w C

Lista instrukcji mikroprocesora Programowanie w assemblerze

Programowanie hybrydowe C (C++) - assembler. MS Visual Studio Inline Assembler

Architektura komputerów

1. Pobrać plik masm.zip (Macro Assembler 6.15 & Segmented Executable Linker 5.60) (

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Regulamin w konkurencjach solowych

ASSEMBLER. Mnemonik Dyrektywa Operandy (argumenty) - liczby i inne nazwy z prawej strony mnemoników, oddzielamy je przecinkiem, Instrukcja!

WYŻSZA SZKOŁA INFORMATYKI I ZARZĄDZANIA Z SIEDZIBĄ W RZESZOWIE. Projekt z przedmiotu: Języki asemblerowe. Temat:

Język asembler dla każdego

Podstawy programowania w języku C++

Architektura komputerów

Procedury. int mult (int mcand, int mlier){ int product = 0; while (mlier > 0) { product = product + mcand; mlier = mlier -1; } return product; }

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania.

Kod hex Instrukcja Opis 37 AAA Koryguj AL po dodawaniu BCD

Język programowania: Lista instrukcji (IL Instruction List)

Struktury. Przykład W8_1

Programowanie w asemblerze Środowiska 64-bitowe

Programowanie w asemblerze Środowiska 64-bitowe

5. Mikroprocesory 8086 i 8088

Jerzy Nawrocki, Wprowadzenie do informatyki

Struktura programu w asemblerze mikrokontrolera 8051

Programowanie hybrydowe łączenie C/C++ z asemblerem

Metody Realizacji Języków Programowania

PL/SQL. Zaawansowane tematy PL/SQL

Programowanie Niskopoziomowe

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

2 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/ / 24

Mikroinformatyka. Mechanizmy ochrony pamięci

002 Opcode Strony projektu:

Organizacja typowego mikroprocesora

Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe

Floating Point Unit Koprocesor umożliwia działania na liczbach ułamkowych (zmiennoprzecinkowych) 8 rejestrów 80-bitowych: st0,,st7 Typy danych

Architektura typu Single-Cycle

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

2.1. W architekturze MIPS, na liście instrukcji widzimy dwie instrukcje dotyczące funkcji: .text main: la $a0, string1 # drukuj pierwszy łańcuch

Ćwiczenie nr 1. Wprowadzenie do programowania w języku asemblera

Okna rysunkowe: rzutnie (VPORTS) RZUTNIE _VPORTS

ROZDZIAŁ PIĘTNASTY: CIĄGI ZNAKÓW I ZESTAWY ZNAKÓW

ROZDZIAŁ DWUDZIESTY CZWARTY: ZŁĄCZE GIER PC

Wstęp do programowania

architektura komputerów w 1 1

PROGRAMOWANIE NISKOPOZIOMOWE. Struktury w C. Przykład struktury PN.06. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

Dyrektywy asemblerowe

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Mikroprocesor Intel 8088 (8086)

Elektronika i techniki mikroprocesorowe

Sieci komputerowe. Definicja. Elementy

Transkrypt:

STOS I PROCEDURY STRUKTURA I ORGANIZACJA STOSU (FILO- First In Last Out) Rejestry stosu: SS i SP (Stack Segment i Stack Pointer) a) Stan początkowy b) Po załadowania pierwszego elementu (tu - zawartość AX) c) Po załadowania drugiego elementu (zawartość DS) d) Po odczytania drugiego elementu (zawartość DS) e) Po odczytania pierwszego elementu (zawartość AX).

INSTRUKCJE STOSU 1 push operand 16/32 (reg/mem) push ax push bh ;Nie! Push cf ; Nie! TABLICA dw 2000 dup (1234h) LICZBA dw? push TABLICA[bx][si] ;wstaw na stos zawartość odpowiednie komórki pam push LICZBA ;wstaw na stos wartość zmiennej LICZBA push 0 ;zapisz zero na stosie push 20abh ;zapisz 20abh na stosie

INSTRUKCJE STOSU 2 pop operand 16/32 (reg/mem) TABLICA dw 1000 dup(?) LICZBA dw? pop TABLICA[bx] ;zdejmij ze stosu wartość i wstaw do tablicy w miejsce ;skazane przez rejestr bx pop LICZBA ;zdejmij ze stosu wartość i wstaw do zmiennej LICZBA popa, popad pushf, pushfd/popf. popfd

Procedury Deklaracja procedury: Nazwa PROC [typ]; tresc Ret Nazwa ENDP typ: NEAR (skok wewnętrzny/domyślny), FAR (skok między segmentami)

Przykład: MOJA_PROCEDUURA PROC NEAR MOV AX,... MOV...... RET MOJA_PROCEDUURA ENDP!!! Wywołanie procedury: call Nazwa

Przekazywanie parametrów Przez rejestry Przykład... Przez stos przykład...

.model small.stack.data text db 'Ten tekst jest wyświetlany dzięki procedurze, która dostaje sw j parametr poprzez rejestr (DX)$'.code MOV ax, @data MOV ds, ax MOV dx, offset text CALL drukuj MOV ah, 4ch INT 21h ;to chyba jasne ; no to chyba teľ jasne - koäcz program drukuj PROC MOV ah,9 INT 21h ; urochamiam funkcję... RET drukuj ENDP END

.model small.stack.data text db 'Ten tekst jest wyświetlany dzięki procedurze, która dostaje swoj parametr poprzez STOS$'.code MOV ax, @data MOV ds, ax ;to chyba jasne push offset text; CALL drukuj MOV ah, 4ch ; no to chyba też jasne - kończę program INT 21h drukuj PROC END mov bp, sp mov dx, [bp+2]; MOV ah,9 INT 21h drukuj ENDP

Zerowanie rejestrów /CIEKAWIE W CZYM RÓŹNICA?.../ mov ax,0 ;wpisanie wartości bezpośredniej, instrukcja zajmuje 5 bajtów xor ax,ax ;wykonanie instrukcji xor na dwu identycznych liczbach bitowych, w wyniku otrzymamy zero, instrukcja zajmuje 2 bajty sub ax,ax ;odjęcie ax od ax, w wyniku otrzymamy zero, instrukcja zajmuje 2 bajty and ax,0 ;iloczyn logiczny ax i 0, w wyniku otrzymamy zero, instrukcja zajmuje 3 bajty

Procedury (dodatkowe) Pełna deklaracja procedury: Nazwa PROC [atrybuty] [Uses lista rejestrów] [,] [parametry [: definicja typu]...]; Atrybuty: Typ (dystans) (NEARDOMYŚLNE, FAR) Typ języka (STDSYSDOMYŚLNE, STDCALL, Pascal,C) Widoczność (PRIVATEDOMYŚLNE, PUBLIC) Lista rejestrów (Uses R1 R2 R3) Parametry (ARG A1 A2 A3)

Przekazywanie parametrów 2 Przez globalne zmienny Dyrektywa ARG

Przez globalne zmienny 1.model small.data text db Tekst po raz kolejny...$'.code MOV ax, @data MOV ds, ax MOV dx, offset text CALL drukuj MOV ah, 4ch INT 21h drukuj PROC MOV DX, OFFSET text MOV ah,9 INT 21h RET drukuj ENDP END

Przez globalne zmienny 2 JAK PISAĆ WIELOMODUŁOWE PROGRAMY Main.asm >> main.obj Lib.asm >> lib.obj tlink main lib [, nazwa aplikacji] >> XXX.exe

;********* BIBLIOTEKA NASZA******.model small kod segment public assume cs:kod, ds:dane ;************************************* ; MODUL GŁÓWNY PROGRAMU ;***********************************.model small kod segment public assume cs:kod extrn druk: proc, bierz: proc, koniec:proc, znak:byte start: call bierz mov dl, znak call druk call koniec kod ends end public druk,bierz,koniec, znak druk proc mov ah,2 int 21h ret druk endp bierz proc mov ah,1 int 21h mov znak,al ret bierz endp koniec proc mov ah, 4ch int 21h koniec endp dane segment znak db? dane ends kod ends end

;*********************************** ;********* BIBLIOTEKA NASZA****** ;***********************************.model small.data znak db? ;************************************* ; MODUL GŁÓWNY PROGRAMU ;***********************************.model small.code extrn druk: proc, bierz: proc, koniec:proc, znak:byte start: call bierz mov dl, 13 call druk mov dl,10 call druk mov dl, znak call druk call koniec end.code public druk,bierz,koniec, znak druk proc mov ah,2 int 21h ret druk endp bierz proc mov ax, @data mov ds, ax mov ah,1 int 21h mov znak,al ret bierz endp koniec proc mov ah, 4ch int 21h ret koniec endp end

Przekazywanie parametrów przez ARG Nazwa PROC [atrybuty] [Uses lista rejestrów] [,] [parametry [: definicja typu]...];.model SMALL.STACK.CODE MOV CX,1 MOV DX,2 PUSH CX DX 1234H 5678H CALL TST ADD SP,2 CALL TST MOV AH, 4CH INT 21H TST PROC pascal ARG X:word, Y:WORD, Z:DWORD MOV AX,X mov bx,y mov cx, word ptr z mov dx, word ptr z+2 RET TST ENDP END