🚀 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 18:15
Pytanie o Porty Procesora
#2396
Author: yesma
Date: Wed, 22 Sep 2010 18:15
7 lines
974 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
#2397
Author: Bogdan (bogdro)
Date: Thu, 23 Sep 2010 16:57
16 lines
1640 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
#2398
Author: yesma
Date: Thu, 23 Sep 2010 19:17
21 lines
1741 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
#2399
Author: Michoo
Date: Fri, 24 Sep 2010 11:23
14 lines
1494 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
#2400
Author: yesma
Date: Fri, 24 Sep 2010 17:34
19 lines
1727 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
#2401
Author: Bogdan (bogdro)
Date: Fri, 24 Sep 2010 18:59
41 lines
2495 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
#2403
Author: Marek Borowski
Date: Sat, 25 Sep 2010 08:21
25 lines
2127 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
#2402
Author: yesma
Date: Sat, 25 Sep 2010 18:40
72 lines
2672 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