🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.asm
8 messages
8 total messages Started by yesma Wed, 22 Sep 2010 20:15
Pytanie o Porty Procesora
#2341
Author: yesma
Date: Wed, 22 Sep 2010 20:15
8 lines
249 bytes
Jeżeli adres bazowy portu równoległego to 0x378
i jest tam rejestr ośmiobitowy , to jak to jest że pod adresem
0x379 jest następny rejestr ośmiobitowy , wydawało mi się
że powinien być przynajmniej bajt dalej ?

--
Pozdrawiam - Grzechu

Re: Pytanie o Porty Procesora
#2342
Author: "Bogdan (bogdro)
Date: Thu, 23 Sep 2010 18:57
17 lines
786 bytes
W dniu 22.09.2010 20:15, yesma pisze:
> Jeżeli adres bazowy portu równoległego to 0x378
> i jest tam rejestr ośmiobitowy , to jak to jest że pod adresem
> 0x379 jest następny rejestr ośmiobitowy , wydawało mi się
> że powinien być przynajmniej bajt dalej ?

 Dlaczego? 8 bitów = 1 bajt, 0x378 + 1 = 0x379? W zasadzie odległości
między portami nie są chyba określone przez "bitowość" danego portu.
 Czy może coś głębszego, o czym nie pamiętam w tej chwili, jest w tym
pytaniu?

--
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org   www.TorProject.org   Soft (EN): miniurl.pl/bogdro-soft

Re: Pytanie o Porty Procesora
#2343
Author: yesma
Date: Thu, 23 Sep 2010 21:17
22 lines
880 bytes
Bogdan (bogdro) pisze:
> W dniu 22.09.2010 20:15, yesma pisze:
>> Jeżeli adres bazowy portu równoległego to 0x378
>> i jest tam rejestr ośmiobitowy , to jak to jest że pod adresem
>> 0x379 jest następny rejestr ośmiobitowy , wydawało mi się
>> że powinien być przynajmniej bajt dalej ?
>
>  Dlaczego? 8 bitów = 1 bajt, 0x378 + 1 = 0x379? W zasadzie odległości
> między portami nie są chyba określone przez "bitowość" danego portu.
>  Czy może coś głębszego, o czym nie pamiętam w tej chwili, jest w tym
> pytaniu?
>

Powiedzmy że w segmencie .data jest jest dana ośmio bitowa czyli bajt
to następna dana będzie miała adres jeden bajt dalej, a z tego co widzę
to adresy portów są word ale adres portu następnego jest jeden bit dalej
, nie wiem czy czegoś nie rozumiem czy po prostu in i out coś ukrywa.

--
Pozdrawiam - Grzechu
Linux x86_64

Re: Pytanie o Porty Procesora
#2344
Author: Michoo
Date: Fri, 24 Sep 2010 13:23
15 lines
615 bytes
W dniu 23.09.2010 21:17, yesma pisze:
> Powiedzmy że w segmencie .data jest jest dana ośmio bitowa czyli bajt
> to następna dana będzie miała adres jeden bajt dalej, a z tego co widzę
> to adresy portów są word ale adres portu następnego jest jeden bit dalej
> , nie wiem czy czegoś nie rozumiem czy po prostu in i out coś ukrywa.
Mylisz rozmiar "wskaźnika" z rozmiarem "zmiennej".
Adres może być zawsze 16 bitowy, ale adresować:
- kolejne bajty - zaadresujesz 65536 lokacji w pamięci i 65536 bajtów
- kolejne słowa - nadal 65536 lokacji w pamięci ale 2*65536 bajtów
...

--
Pozdrawiam
Michoo

Re: Pytanie o Porty Procesora
#2345
Author: yesma
Date: Fri, 24 Sep 2010 19:34
20 lines
810 bytes
Michoo pisze:
> W dniu 23.09.2010 21:17, yesma pisze:
>> Powiedzmy że w segmencie .data jest jest dana ośmio bitowa czyli bajt
>> to następna dana będzie miała adres jeden bajt dalej, a z tego co widzę
>> to adresy portów są word ale adres portu następnego jest jeden bit dalej
>> , nie wiem czy czegoś nie rozumiem czy po prostu in i out coś ukrywa.
> Mylisz rozmiar "wskaźnika" z rozmiarem "zmiennej".

Może tak napisałem że tak to wygląda ale nie mylę.
Wiem że adres może być np 4bajtowy i wskazywać na zmienną bajtową
ale następna zmienna będzie miała adres poprzedniej zmiennej + 8

Wydaje mi się że tu chodzi o adres fizyczny i adres mapowany w pamięci
I na to wygląda że adres portu równoległego jest adresem fizycznym.

Dzięki za odpowiedź

--
Pozdrawiam - Grzechu

Re: Pytanie o Porty Procesora
#2346
Author: "Bogdan (bogdro)
Date: Fri, 24 Sep 2010 20:59
41 lines
1491 bytes
W dniu 24.09.2010 19:34, yesma pisze:
> Michoo pisze:
>> W dniu 23.09.2010 21:17, yesma pisze:
>>> Powiedzmy że w segmencie .data jest jest dana ośmio bitowa czyli bajt
>>> to następna dana będzie miała adres jeden bajt dalej, a z tego co
>>> widzę
>>> to adresy portów są word ale adres portu następnego jest jeden bit
>>> dalej
>>> , nie wiem czy czegoś nie rozumiem czy po prostu in i out coś ukrywa.
>> Mylisz rozmiar "wskaźnika" z rozmiarem "zmiennej".
>
> Może tak napisałem że tak to wygląda ale nie mylę.
> Wiem że adres może być np 4bajtowy i wskazywać na zmienną bajtową
> ale następna zmienna będzie miała adres poprzedniej zmiennej + 8

 Nie. Na przykład:


	mov	eax, offset a
	mov	ebx, offset b

...

a db 0
b db 0

 Adresy w rejestrach EAX i EBX są 32-bitowe, ale adres zmiennej "b" to
adres zmiennej "a" powiększony o 1 (rozmiar zmiennej "a"), a nie o 4
(rozmiar rejestru adresowego, np. EAX).

> Wydaje mi się że tu chodzi o adres fizyczny i adres mapowany w pamięci
> I na to wygląda że adres portu równoległego jest adresem fizycznym.

 Tak, adres portu równoległego to adres urządzenia fizycznego i nie
działa tak jak porty mapowane do pamięci.

--
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org   www.TorProject.org   Soft (EN): miniurl.pl/bogdro-soft
Re: Pytanie o Porty Procesora
#2347
Author: Marek Borowski
Date: Sat, 25 Sep 2010 10:21
29 lines
1087 bytes
On 24-09-2010 19:34, yesma wrote:
> Michoo pisze:
>> W dniu 23.09.2010 21:17, yesma pisze:
>>> Powiedzmy że w segmencie .data jest jest dana ośmio bitowa czyli bajt
>>> to następna dana będzie miała adres jeden bajt dalej, a z tego co widzę
>>> to adresy portów są word ale adres portu następnego jest jeden bit dalej
>>> , nie wiem czy czegoś nie rozumiem czy po prostu in i out coś ukrywa.
>> Mylisz rozmiar "wskaźnika" z rozmiarem "zmiennej".
>
> Może tak napisałem że tak to wygląda ale nie mylę.
> Wiem że adres może być np 4bajtowy i wskazywać na zmienną bajtową
> ale następna zmienna będzie miała adres poprzedniej zmiennej + 8
>
> Wydaje mi się że tu chodzi o adres fizyczny i adres mapowany w pamięci
> I na to wygląda że adres portu równoległego jest adresem fizycznym.
>
Chyba wiem w czym jest problem. Procesor x86 nalezy do grupy dziwnych
procesorow ktore maja porty IO zaimplementowane jako inna przestrzen
adresowa niz pamiec. Zwroc uwage ze dostep do portu I/O jest na x86
realizowany poprzez specjalne instrukcje.


Pozdr

Marek




Re: Pytanie o Porty Procesora
#2348
Author: yesma
Date: Sat, 25 Sep 2010 20:40
73 lines
1637 bytes
Bogdan (bogdro) pisze:
> W dniu 24.09.2010 19:34, yesma pisze:
>> Michoo pisze:
>>> W dniu 23.09.2010 21:17, yesma pisze:
>>>> Powiedzmy że w segmencie .data jest jest dana ośmio bitowa czyli bajt
>>>> to następna dana będzie miała adres jeden bajt dalej, a z tego co
>>>> widzę
>>>> to adresy portów są word ale adres portu następnego jest jeden bit
>>>> dalej
>>>> , nie wiem czy czegoś nie rozumiem czy po prostu in i out coś ukrywa.
>>> Mylisz rozmiar "wskaźnika" z rozmiarem "zmiennej".
>> Może tak napisałem że tak to wygląda ale nie mylę.
>> Wiem że adres może być np 4bajtowy i wskazywać na zmienną bajtową
>> ale następna zmienna będzie miała adres poprzedniej zmiennej + 8

Tutaj chodziło mi + 8 bitów zamotałem się trochę.

>
>  Nie. Na przykład:
>
>
> 	mov	eax, offset a
> 	mov	ebx, offset b
>
> ....
>
> a db 0
> b db 0
>
>  Adresy w rejestrach EAX i EBX są 32-bitowe, ale adres zmiennej "b" to
> adres zmiennej "a" powiększony o 1 (rozmiar zmiennej "a"), a nie o 4
> (rozmiar rejestru adresowego, np. EAX).
>

Tak już sprawdziłem adresy zmieniają się co bajt ( + 1 == + 1bajt)

section .data

         a        db 0
         b        db 0
         c        dd 0
         d        db 0

;a      00600198
;b      00600199
;c      0060019A
;d      0060019E

         tmp      dd 0

section .text
global _start
_start:

         mov eax,a
	mov [tmp],eax
	sys_write 1,tmp,4
         mov eax,b
	mov [tmp],eax
	sys_write 1,tmp,4
         mov eax,c
	mov [tmp],eax
	sys_write 1,tmp,4
         mov eax,d
	mov [tmp],eax
	sys_write 1,tmp,4

sys_exit

--
Pozdrawiam - Grzechu
Linux x86_64

Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads