INSTRUKCJE Instrukcje przeniesienia: Instrukcje konwersji: Arytmetyczne instrukcje:

Podobne dokumenty
Programowanie Niskopoziomowe

Architektura komputerów. Asembler procesorów rodziny x86

Architektura Systemów Komputerowych

Załącznik do ćwiczenia w środowisku MASM32 wersji 10 Sterowanie przebiegiem wykonania programu

Architektura komputerów

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

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

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

Metody Realizacji Języków Programowania

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

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Kod hex Instrukcja Opis 37 AAA Koryguj AL po dodawaniu BCD

Programowanie Niskopoziomowe

Programowanie komputera

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

ROZDZIAŁ SZÓSTY:ZBIÓR INSTRUKCJI PROCESORA 80x86

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Ćwiczenie 3. Konwersja liczb binarnych

Lista instrukcji mikroprocesora Programowanie w assemblerze

Programowanie w asemblerze Architektura procesora

Sterowanie pracą programu

PROGRAMY REZYDENTNE Terminate and State Resident, TSR

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

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

Zuzanna Hartleb i Artur Angiel

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

Programowanie niskopoziomowe

Struktura i działanie jednostki centralnej

Metody Realizacji Języków Programowania

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

Sprzęt i architektura komputerów

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.

1. Operacje logiczne A B A OR B

Architektura komputerów

Technika mikroprocesorowa

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

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

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

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

Architektura komputerów

Informacje wstępne. Historia Maszyna Turinga

Procesory rodziny x86. Dariusz Chaberski

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne

Adam Kotynia, Łukasz Kowalczyk

ROZDZIAŁ DZIEWIĄTY: OPERACJE ARYTMETYCZNE I LOGICZNE

Programowanie mikrokontrolera 8051

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

Sprzęt i architektura komputerów

002 Opcode Strony projektu:

Programming in Assembler. Laboratory manual. Exercise 6

Programowalne układy logiczne

Budowa wnętrza procesora x86

organizacja procesora 8086

1. Asembler i wstawki asemblerowe w C

Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A

PROGRAMOWANIE NISKOPOZIOMOWE

START: ; start programu od adresu 0100H ; zerowanie komórek od 01H do 07FH ( 1 dec dec)

Notatka Aplikacyjna NA 03006PL Maj 2016

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

Programowanie mikrokontrolerów (CISC)

WOJSKOWA AKADEMIA TECHNICZNA

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

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

Lista rozkazów mikrokontrolera 8051

5. Mikroprocesory 8086 i 8088

Architektura systemów komputerowych. Lista instrukcji procesora

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

Algorytm mnożenia sekwencyjnego (wariant 1)

Optymalizacja wykonania programów sekwencyjnych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Architektura komputerów

Architektura typu Single-Cycle

Obszar rejestrów specjalnych. Laboratorium Podstaw Techniki Mikroprocesorowej Instytut Mikroelektroniki i Optoelektroniki PW

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Ćwiczenie nr 4. Zasady kodowania podprogramów

Technika mikroprocesorowa I Wykład 2

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

LISTA ROZKAZÓW i TRYBY ADRESOWANIA

Jerzy Nawrocki, Wprowadzenie do informatyki

Programowanie Niskopoziomowe

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

Budowa linii asemblera

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

Ćwiczenie nr 6. Programowanie mieszane

Programowanie w asemblerze Architektury równoległe

Programowanie w asemblerze Środowiska 64-bitowe

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Faktura Orange z 11 lipca 2014 roku zawierająca złośliwe oprogramowanie ANALIZA

Materiały do wykładu. 4. Mikroprocesor. Marcin Peczarski. Instytut Informatyki Uniwersytet Warszawski

Języki formalne i techniki translacji

Lista Rozkazów: Język komputera

MIKROPROCESORY I MIKROKONTROLERY INSTRUKCJE / KOMENDY / ROZKAZY: PRZEGLĄD I KILKA PRZYKŁADÓW DLA PRZYPOMNIENIA, GŁÓWNE REJESTRY ROBOCZE CPU:

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Architektury Komputerów - Laboratorium Informatyka III rok studia dzienne

Podstawy programowania w języku C i C++

Mikrooperacje. Mikrooperacje arytmetyczne

Mikrokontroler ATmega32. Tryby adresowania Rejestry funkcyjne

Asembler - język maszynowy procesora

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Architektura Systemów Komputerowych

Transkrypt:

INSTRUKCJE Instrukcje przeniesienia: mov, lea, les, push, pop, pushf, popf Instrukcje konwersji: cbw, cwd, xlat Arytmetyczne instrukcje: add, inc sub, dec, cmp, neg, mul, imul, div, idiv Logiczne instrukcje: and, or, xor, not, shl, shr, rcl, rcr Instrukcje wejścia - wyjścia: in, out Instrukcje łańcuchowe: movs, stos, lods Instrukcje kontroli toku programu: jmp, call, ret,conditional jumps Operacje na bitach: clc, stc, cmc.

Instrukcje przeniesienia Funkcja: kopiowanie dannych od jednego miejsca do drugiego Instrukcje: Mov Xchg lds, les, lfs, lgs, lss lea, push, pusha, pushad, pushf, pushfd, pop, popa, popad, popf, popfd lahf, sahf

XCHG operand1, operand2 Działanie zamienia wartości dwóch operandów Specyfikacje: xchg reg, mem xchg reg, reg xchg ax, reg16 xchg eax, reg32 ;dla 80386 i wyższej

LxS dest, source Działanie: ładuje 32b operand (AL,np.) równocześnie w reg.segmentowym i reg.przesun. Specyfikacje: lds reg16, mem32 les reg16, mem32 lfs reg16, mem32; dla 80386 i wyższej lgs reg16, mem32; dla 80386 i wyższej lss reg16, mem32; dla 80386 i wyższej

LEA (Load Effective Address) Forma: lea dest, source Działanie: ładuje AE do rejestru docelowego Specyfikacja: lea reg16, mem lea reg32, mem Przykłady: lea ax, [bx] (=mov ax, bx) lea bx, 3[bx](=add bx,3) lea ax, 3[bx](=mov ax, (bx+3) - nie dozwolone) lea bx, 4[bp+si]

LAHF i SAHF lahf (load ah from flags) ładuje do AH zawart. rejestru znacznikowego sahf (store ah into flags) - ładuje do rejestru znacznikowego zawart. AH

INSTRUKCJE KONWERSJI CBW convert byte to word (AL->AX) CWD convert word to double word (AX->DX:AX) CWDE convert word to double word (AX->EAX) CDQ convert 32b to 64b (eax->edx:eax) XLAT przetwarza zawart. AL wg. tablica w pam.

INSTRUKCJE ARYTMETYCZNE Dodawanie: ADD, ADC, INC, XADD, AAA DAA Odejmowanie: SUB, SBB, DEC, AAS, DAS NEG Mnożenie: MUL, IMUL, AAM Dzielenie: DIV, IDIV, AAD CMP

Dodawanie ADD (ADC):add dest, src dest := dest + src adc dest, src dest := dest + src + CF add reg, reg add reg, mem add mem, reg add reg, immediate data add mem, immediate data add eax/ax/al, immediate data INC: inc mem inc reg8/16

Przykłady ; J:= K + M mov ax, K add ax, M mov J, ax ; J := K + M + N + P mov ax, K add ax, M add ax, N add ax, P mov J, ax

Odejmowanie SUB (SBB):SUB dest, src dest := dest - src sbb dest, src dest := dest - src - C sub reg, reg sub reg, mem sub mem, reg sub reg, immediate data sub mem, immediate data sub eax/ax/al, immediate data DEC: dec mem inc reg8/16

Przykłady ; J := K - J mov ax, K ;? mov ax, J sub ax, J ; sub ax, K mov J, ax ; J := J - (K + M) (lub J := J - K - M) mov ax, K ; AX := K + M add ax, M sub J, ax ; J := J - (K + M) ;ALBO: mov ax, J sub ax, K sub ax, M mov J, ax

NEG NEG dest dest := 0 dest Specyfikacja: Przykady: ; J := - J neg J ; J := -K mov ax, K neg ax mov J, ax neg reg/mem

Mnożenie (MUL, IMUL) mul src16/8 imul src16/8 imul dest, src1, imm_src imul dest, imm_src imul dest, src Speczfikacje: mul reg/mem imul reg/mem imul reg, reg/mem, immediate imul reg, immediate/reg/mem acc32/16:= acc16/8 * src16/8 dest := src1 * imm_src dest := dest * imm_src dest := dest * src

Przykłady ;*********** (J+K-M)*L ************* mov ax, J add ax, K sub ax, M mul L ;********** ((J*7 + K) * 6 + M) * 2 *********** imul bx, 7 add bx, K imul bx, 6 add bx, M add bx, bx ;BX := BX * 2

Dzielenie (DIV, IDIV) div src; AX(AL):=DX:AX(AX)/src16(8)!reszta: DX(AH) idiv src; AX(AL):=DX:AX(AX)/src16(8)!reszta: DX(AH) Specyfikacje: div reg/mem idiv reg/mem ; ********** J? := (K?*M?)/P? ********* mov ax, K imul M ; 32 bit resultat - w DX:AX!!! idiv P mov J, ax

Porównanie CMP dest, src (dest - src) Speczfiakcja: cmp reg, reg cmp reg, mem cmp mem, reg cmp reg, immediate data cmp mem, immediate data cmp eax/ax/al, immediate data

Ustawianie znaczników Z (wynik zerowy): Oprnd1 = Oprnd2 C (przeniesienie): Oprnd1 < Oprnd2 (C=1) Oprnd1 >= Oprnd2 (C=0)

INSTRUKCJE LOGICZNE AND, OR, XOR NOT instr dest, source SHL/SAL, SHR, SAR, SHLD, and SHRD RCL, RCR, ROL, ROR TEST

Specyfikacja dla AND, OR, XOR and reg, reg and mem, reg and reg, mem and reg, immediate data and mem, immediate data and eax/ax/al, immediate data

AND Działanie: 0 and 0 = 0 0 and 1 = 0 1 and 0 = 0 1 and 1 = 1 Zastosowanie logiczne mnożenie, zerowanie bitów, sprawdzenie bitów: and al, 5 and Liczba,0f0h and dx, maska

OR Działanie: 0 or 0 = 0 0 or 1 = 1 1 or 0 = 1 1 or 1 = 1 Zastosowanie logicznasuma, ustawianie bitów, sprawdzenie bitów: or dl, 7 or Liczba,01101000b or dx, 80h

XOR (exclusive OR) Działanie: 0 xor 0 = 0 0 xor 1 = 1 1 xor 0 = 1 1 xor 1 = 0 Zastosowanie zerowanie, sprawdzenie bitów: xor al, al xor Liczba,0f0h xor dx, maska

NOT Działanie: not 0 = 1 not 1 = 0 Specyfikacja: not reg not mem

Test Działa tak samo, jak AND, tylko nie wpisuje wynik operacji do pierwszego operanda

SHR/L, SAR/L, SHRD/L SHL dest, count shr dest, count PRZYKŁADY ZASTOSOWANIE

sal dest, count sar dest, count

Specyfikacja shl reg, 1 shl mem, 1 shl reg, imm shl mem, imm shl reg, cl shl mem, cl

RCL/R, ROR/L ROL dest, count RCL dest, count

ROR dest, count RCR dest, count SPECYFIKACJA: rcl reg, 1 rcl mem, 1 rcl reg, imm (2) rcl mem, imm (2) rcl reg, cl rcl mem, cl

SHLD / SHRD shld operand1, operand2, immediate shld operand1, operand2, cl shrd operand1, operand2, immediate shrd operand1, operand2, cl

Zadania Podaj zawartość DX po: mov dh, 01101110b or dh, 0f3h mov cl, 15 ror cl,3 xor dh, cl mov dl, cl

Skoki Skoki bezwarunkowe JMP target JMP etykieta/wskaźnik adresu/ reg16 Przykład:.model small.data napis1 db 'pierwszy $' napis2 db 'drugi $'.code start: mov ax,seg napis1 mov ds,ax mov ah,9 dx,napis1 int 21h jmp przeskocz mov ah,9 mov dx,offset napis2 int 21h przeskocz: mov ah,4ch int 21h end start end

Skoki warunkowe i instrukcje porównawcze

.model small ; ZGADNIJ CO TEN PROGRAM ROBI!.data liczba db 16d komunikat1 db 'Podana liczba spełnia założenia ',13,10,'$' komunikat2 db 'Podana liczba nie spełnia założenia ',13,10,'$'.code start: mov ax,seg liczba mov ds,ax mov al,liczba ;sprawdzenie???? test al,1 jnz nie_spelnia ; porównanie z liczba 6 cmp al, 6 jb nie_spelnia cmp al, 15 jae nie_spelnia; teraz liczba spełnia podane warunki??? JAKIE??? ; wypisanie komunikatu mov ah,9 mov dx,offset komunikat1 INT 21h jmp koniec nie_spelnia: mov ah,9 mov dx,offset komunikat2 int 21h koniec: mov ah,4ch int 21h end start end

end start ;PROGRAM WYLICZA SUMĘ OT A DO B.model small.stack 24h.486 ;udostępnienie instrukcji procesora 486. data liczba dd 0 ; liczba do wypisania dzielnik dd 10 licznik dw 0 napis db '???????????????? : $'.code start: mov ax,seg liczba ; = MOV AX, @DATA mov ds,ax xor ebx,ebx ; w ebx będzie przechowyw. SUMĘ mov edx,4 ; A - Początek sumowania petla1: cmp dx,122 ; B - Koniec sumowania ja wyjscie ;wyjście jeżeli dx>122 add ebx,edx inc dx ; JAK MYŚLIŚ PO CO TO? inc dx ; I TO 2 RAZY!... jmp petla1 wyjscie: mov liczba,ebx ;przekopiowanie sumy do liczba call wypisz_liczbe ; proc. wypisująca liczbę ;** wyjscie z programu ** mov ah,4ch int 21h wypisz_liczbe proc pushad ;*** odlozenie na stos cyfr liczby *** mov eax,liczba ; przenieść liczbę do eax petla: mov edx,0 div dzielnik ;dzieli edx:eax przez 32-u bitowy ; dzielnik.. reszta w edx wynik w eax push dx ;reszta na stos (reszta z przedziału 0..9) inc licznik ; zliczanie cyfr liczby cmp ax,0 ;czy zakończyć dzielenie (wynik=0 to tak) jne petla ;*** wypisanie liczby *** mov ah,9 mov dx,offset napis int 21h mov cx,licznik wypisz: pop dx add dx, 48 mov ah, 2 int 21h loop wypisz popad ret wypisz_liczbe ENDP ; ile cyfr do wypisania

Pętle w asemblerze Pętla typu FOR... LOOP(E/CX, etykieta) mov (e)cx, liczba etykieta1: push (e)cx... pop (e)cx loop etykieta1 Pętla typu repeat...until Skok:... cmp al,wynik jne Skok... Pętla typu while... et1: cmp ax, 1 je skok... jmp et1 skok:...

OPERACJE ZE ZNACZNIKACH AH i Rejestr Znacznikowy (instrukcje): LAHF (Load AH from Flags) SAHF (Store AH into Flags) Ustawianie i zerowanie znaczników CLD wyzerowanie znacznika kierunku; STD ustawianie znacznika kierunku; STC ustawianie znacznika przeniesienia; CLC wyzerowanie znacznika przeniesienia; CMC migotanie znacznika przeniesienia STI ustawienie znacznika przerwania(zezwolenie na przerwanie) CLI zatrzymanie przerwania;