[ sestric @ 01.05.2008. 02:12 ] @
Jel bi mogao da mi neko kaze koji je rezultat izvrsavanja sledecih operacija i da mi objasni postupak dobijanja istih?

Tekst je sledeci :

Sadržaj memorijske lokacije (bajta) jednak je vrijednosti nižeg bajta adrese te lokacije.

Sadržaj registara procesora je: (IP)=200H, (CS)=1000H, (DS)=0005H, (SS)=0009H, (ES)=00004H, (AX)=4H, (BX)=7H, (CX)=3H, (DX)=8H, (SP)=100H, (BP)=9H i dat je sledeći segment koda koji počinje od adrese CS:IP. Na datim linijama upisati vrijednosti koje se nalaze u registru AH nakon izvršavanja instrukcije u istom redu?
mov SI, DX
add AX, [BX] ________
add AL, [BP][SI] ________
add AX, [BX+4][SI] ________


Hvala unapred!
[ Branimir Maksimovic @ 10.05.2008. 00:26 ] @
Ovo lici na skolski zadatak al eto malo da ubijem vreme.

mov si, dx je jasno si = 8
potom, add ax, [bx] bi znacilo da se na ax dodaje sadrzaj adrese ds:bx sto je 5*16+7==57h.
posto je u zadatku receno da sadrzaj adrese predstavlja najnizi bajt adrese a ovde se radi
o dva bajta onda imamo i 58h na sledecoj adresi. Kako je intel little endian sabiramo 4h+5857h
i ax postaje 585bh. Dakle u ah se nalazi 58h.
Sledeca instrukcija sabira al sa sadrzajem adrese ss:bp + si, a potom dodaje na ax
sadrzaj adrese ds:bx + si + 4

Sintaksa mi je malo cudna posto intel ima indeksiranje u formatu [base + index*scale + displacement]
gde su base i index gp registri ( sem sto esp ne moze da bude index) a scale je 1,2,4 ili 8.

Pozzzzzzzzzzzzz!


[Ovu poruku je menjao Branimir Maksimovic dana 10.05.2008. u 01:36 GMT+1]