Forum Forum 1 Grupy Ćwiczeniowej Strona Główna

Forum 1 Grupy Ćwiczeniowej
Forum studentów informatyki Politechniki Białostockiej
 

Asembler - Klasowka

 
Napisz nowy temat   Odpowiedz do tematu    Forum Forum 1 Grupy Ćwiczeniowej Strona Główna -> 3 semestr
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Linka



Dołączył: 13 Mar 2007
Posty: 98
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Śro 20:22, 14 Lis 2007    Temat postu: Asembler - Klasowka

ma ktos moze dobrze rozwiazaną tą klasowke prof turbodebagier?

..bo niby skad mam wiedziec czy robie dobrze...
Wink
Powrót do góry
Zobacz profil autora
boro



Dołączył: 27 Lut 2007
Posty: 286
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Śro 20:51, 14 Lis 2007    Temat postu:

jak wyswietla prawidlowy wynik to znaczy ze masz dobrze :P
Powrót do góry
Zobacz profil autora
Linka



Dołączył: 13 Mar 2007
Posty: 98
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Śro 20:56, 14 Lis 2007    Temat postu:

z tego co wiem to klasowka ma byc na kartce Boro;)
Powrót do góry
Zobacz profil autora
boro



Dołączył: 27 Lut 2007
Posty: 286
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Śro 21:05, 14 Lis 2007    Temat postu:

mozesz przeciez napisac program ktory bedzie liczyl zadanka :P masz tam kompilator ktory wylapie bledy wiec bedziesz miala wieksza pewnosc ze masz dobrze niz gdybys rozwiazywala zadanie na kartce.
Powrót do góry
Zobacz profil autora
Linka



Dołączył: 13 Mar 2007
Posty: 98
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Śro 21:19, 14 Lis 2007    Temat postu:

Boro... moze masz cos takiego juz?SmileVery Happy podziel sie;) 3ba sobie pomagac:D
Powrót do góry
Zobacz profil autora
boro



Dołączył: 27 Lut 2007
Posty: 286
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Śro 22:10, 14 Lis 2007    Temat postu:

szczerze mowiac to nic nie mam. mam okropne opory jesli chodzi o nauke asemblera :/ na piatek nie przygotowuje sie. pisze program na ASD na poniedzialek wiec zbytnio nie mam czasu zeby od podstaw uczyc sie z asm.
Powrót do góry
Zobacz profil autora
czart



Dołączył: 02 Mar 2007
Posty: 168
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Z lasu

PostWysłany: Śro 22:50, 14 Lis 2007    Temat postu:

NIE WIEM CZY DOBRZE, JAK KTOŚ MA NIECH RZUCI WYNIK DLA PORÓWNANIA.

zad1.

MOV BX, 101011101B
MOV AL,0BH

BX = 00000001|01011101
0B = 16(dziesietny) = 00010000(binarnie)

PUSH 1234H
POP DX

1234H:
4=0100
3=0011
2=0010
1=0001

stąd:
DX=00010010|00110100

MOV BL,DH

BL = 00010010

MOV AH,BL

AH = 00010010

stąd

AX = AH|AL = 00010010|00010000
Powrót do góry
Zobacz profil autora
chodor



Dołączył: 28 Lut 2007
Posty: 6
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Czw 17:00, 15 Lis 2007    Temat postu:

jest jeden błąd bo 0B to 11 dziesietnie a binarnie 0000 1011 i wtedy
i wtedy ax= 0001 0010 0000 1011
Powrót do góry
Zobacz profil autora
Linka



Dołączył: 13 Mar 2007
Posty: 98
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Czw 17:10, 15 Lis 2007    Temat postu:

własnie tez tak myslałam... Smile

Chodor, Ty chyba masz zrobioną tą klasówke:)
jak mozesz to wes zapodaj;)
Powrót do góry
Zobacz profil autora
dziemian_rec



Dołączył: 08 Mar 2007
Posty: 38
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: z nikąd

PostWysłany: Czw 17:17, 15 Lis 2007    Temat postu:

ale kombinujecie :/
1) mov al, 0bh
---> 0bh do al (młodszy bajt wyniku)
2) push 1234h
pop dx
---> 12h do dh
3) mov bl,dh
--->12h do bl
4) mov ah,bl
---> 0bh do ah (starszy bajt wyniku)

1. instrukcja wogóle nie potrzebna Very Happy
Powrót do góry
Zobacz profil autora
chodor



Dołączył: 28 Lut 2007
Posty: 6
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Czw 17:31, 15 Lis 2007    Temat postu:

to np robilismy na laborkach z asemblera zadanie 2 :

.model small
.stack 100h
.data
wynik dw 0
x dw 4
y dw 1
z dw 2

.code
procedura PROC NEAR
push bp
mov bp,sp

mov bx,[bp+8]
sub bx,[bp+6]
add bx,[bp+4]

mov wynik,bx
pop bp
ret
procedura ENDP
start:
mov ax,@data
mov ds,ax
push x
push y
push z
call procedura
pop x
pop y
pop z


mov ah,4ch
int 21h
END start
Powrót do góry
Zobacz profil autora
czart



Dołączył: 02 Mar 2007
Posty: 168
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Z lasu

PostWysłany: Czw 18:17, 15 Lis 2007    Temat postu:

Faktycznie sie walnalem z tym 0Bh;

smurf Farmer: zadna instrukcja, po prostu napisałem jak to rozwiązywałem krok po kroku. Może ktoś skorzysta na tym.
Powrót do góry
Zobacz profil autora
denciaq



Dołączył: 29 Paź 2007
Posty: 52
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Czw 21:52, 15 Lis 2007    Temat postu:

ktos wie po co to jest ???
procedura PROC NEAR
push bp <<< o to
mov bp,sp <<< i to
Powrót do góry
Zobacz profil autora
fala (aka tomek)



Dołączył: 03 Lis 2007
Posty: 67
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Łapy

PostWysłany: Pią 1:26, 16 Lis 2007    Temat postu:


Cytat:
procedura PROC NEAR

nagłówek procedury, near chyba oznacza ze procedura i wywolanie znajduje sie w tym samym segmencie kodu (cokolwiek by to nie znaczylo Razz bo sam nie wiem co to dokladnie znaczy, w zrodlach takie cos widzialem Razz)


Cytat:
push bp <<< o to

nic co mogłoby być niezrozumiałe po prostu: wrzuca bp na stos
(akurat w procedurach parametry sa przekazywane przez rejestry, dlatego aby przekazac parametr do funkcji trzeba zachowac wykorzystywane w niej rejestry na stosie, a przed wyjsciem z procedury przywrocic ich zawartosc pobierajac je spowrotem ze stosu "pop bp" (zeby mozna bylo te rejestry wykorzystac i nie stracic ich wartosci po zakonczeniu procedury


Cytat:
mov bp,sp <<< i to

jak dla mnie to kopiuje zawartosc sp do bp Razz tyle tylko ze to jest chyba kwestia tego w jaki sposob mozna adresowac a w jaki nie... 'sp' to jest StackPointer, wlasnie przegladam wyklady pani TurboDebagier i tam coś było odnośnite adresowania, i chyba nie można bezpośrednio przez 'sp' robic adresowania, dlatego skopiowany zostal do 'bp' ktory juz mozna wykorzystac do tego celu (tak mi sie wydaje)


(to tak na mój rozum, ale zastrzegam że moge sie mylić co do prawidłowości mojego rozumowania)
Powrót do góry
Zobacz profil autora
eewkaa



Dołączył: 01 Mar 2007
Posty: 50
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: z mieszkania

PostWysłany: Nie 16:35, 25 Lis 2007    Temat postu:

Kilka osób prosiło o rozwiązanie zadań z klasówki.


Zadanie 2
Napisz procedurę, która dostaje przez stos 2 parametry (x,y,z) i wylicza wyraz (z-x)+5-y; wynik zwraca do zmiennej globalnej W.
Pokaż przykładowe wywołanie procedury.


Kod:
.MODEL small
.STACK 100h
.DATA
   W dw 0
   x dw 3
   y dw 4
   z dw 8
.CODE

procedura PROC NEAR         
   push bp               ;w tym momencie tworzymy ramke
   mov bp,sp            ;stosu wykorzystywana przez procedure
   
   ;dostep do elementu na szczycie stosu: [bp+4]
   ;dostep do kolejnych elementow: [bp+i], gdzie i = 6,8,...
   
   mov bx,[bp+4]         ;do bx przesuwamy z
   sub bx,[bp+8]         ;od bx odejmujemy x, wynik w bx
   add bx,5            ;do bx dodajemy 5, wynik w bx
   sub bx,[bp+6]         ;do bx odejmujemy y, wynik w bx
   
   mov W,bx            ;kopiujemy zawartosc bx do zmiennej globalnej W
   
   pop bp               ;niszczymy utworzona ramke stosu
   ret                  ;powracamy do programu glownego
procedura ENDP



start:
   mov ax,@data         ;ustawienie segmentu danych na
   mov ds,ax            ;dane naszego programu
   
   push x               ;ladujemy na stos kolejno:
   push y               ;x, y, z
   push z
   
   call procedura         ;wywolujemy nasza procedure
   
   pop z               ;zdejmujemy ze stosu wczesniej polozone dane
   pop y
   pop x

   mov ah,4ch            ;konczymy program
   int 21h

END start



Zadanie 3
Napisz program, który sumuje elementy tablic D1 i D2, a wyniki wpisuje do D2. Tablice D1 i D2 mają po 90 elementów.


Kod:
.MODEL small
.STACK 100h
.DATA   
      D1 db 90 dup (1)   ;tablica 90 elementow o wartosciach 1
      D2 db 90 dup (3)   ;tablica 90 elementow o wartosciach 3
.CODE
   mov ax,@data         ;ustawienie segmentu danych na
   mov ds,ax            ;dane naszego programu

   mov cx,90            ;inicjalizacja licznika, po kazdym przejsciu petli
                     ;licznik automatycznie jest zmniejszany o 1
   petla:
      mov si,cx      ;do rejestru indeksowego (si) przenosimy wartosc,
                      ;ktora obecnie znajduje sie w liczniku
      sub si,1         ;pomniejszamy ,si o 1, gdyz indeksy tablic numerowane sa od 0

      mov al,D1+si      ;wykonujemy dodawanie 2 elementow tablic D1 i D2, ktore znajduja sie pod tym
      add D2+si,al      ;samym indeksem, wynik zapisujemy do D2

   loop petla   
   
   mov ah,4ch            ;zakonczenie programu
   int 21h

END



Zadanie 3
Skopiuj pod adres fizyczny D1A53h zawartość pamięci o adresie logicznym AC12:C32Bh

Od razu zaznaczam, że nie mam pojęcia czy to zadanie jest poprawnie zrobione...


Kod:
mov bx,C32Bh
mov ax,AC12h
mov ds,ax

mov dx,[bx]

mov bx,3
mov ax,D1A5h
mov ds,ax

mov [bx],dx
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Forum 1 Grupy Ćwiczeniowej Strona Główna -> 3 semestr Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
deoxBlue v1.0 // Theme created by Sopel stylerbb.net & programosy.pl

Regulamin