[assembler] Port (378h) I/O

Pagina: 1
Acties:
  • 283 views sinds 30-01-2008
  • Reageer

  • Devil
  • Registratie: Oktober 2001
  • Niet online

Devil

King of morons

Topicstarter
Kan iemand mij uitleggen wat hier fout aan is?
Hij crashed met de melding 'priviliged instruction bla bla'
code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            mov     dx, 378h //set data port
        
        add     dx, 2h   // Switch to  controll port
        mov     al, 0x03     // RS=0, R/W=0, E=0
        out     dx, al
        
        sub     dx, 2h // Switch back to Data port
        mov     al, data
        out     dx, al 

        add     dx, 2h      // To controll port again
        mov     al, 0x02    // RS=0, R/W=0, E=1
        out     dx, al  
        mov     al, 0x03    // RS=0, R/W=0, E=0
        out     dx, al
        mov     al, 0x01    // RS=0, R/W=1, E=0
        out     dx, al

After all, we are nothing more or less than what we choose to reveal.


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Directe poort IO mag niet in een NT OS, ook niet in ASM. (ik neem aan dat je Windows NT draait)

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Devil
  • Registratie: Oktober 2001
  • Niet online

Devil

King of morons

Topicstarter
Ja klopt, ik draai win2000.
Hoe moet ik het dan aanpakken, via bios de porten benaderen, of mag dat ook niet?

After all, we are nothing more or less than what we choose to reveal.


  • Devil
  • Registratie: Oktober 2001
  • Niet online

Devil

King of morons

Topicstarter
Is directe port IO op geen enkele maniet mogelijk in win NT. Er zit niet ergens nog een ouwe dos compatabiliteits modus in of iets dergelijks?

After all, we are nothing more or less than what we choose to reveal.


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Het kan alleen als je OF de WinNT API ervoor gebruikt (vraag me niet hoe, maar het schijnt te kunnen) OF je prog als native DOS compilet, dan moet het ook werken.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Uitvoeren van out mag onder NT alleen in Ring0 dus je kan 2 dingen doen, a)je eigen driver schrijven of b) DlPortIO gebruiken waar al een driverte bij zit die dit voor je regelt.

  • Devil
  • Registratie: Oktober 2001
  • Niet online

Devil

King of morons

Topicstarter
BLeg rot NT, ik wou juist een keertje niet afhankelijk zijn van libs en drivers van anderen :(

After all, we are nothing more or less than what we choose to reveal.


  • JayTaph
  • Registratie: Oktober 1999
  • Laatst online: 28-11-2025

JayTaph

Portability is for canoes.

Tja... als je een OS 'veilig' en 'secure' wilt hebben, dan moet je als programma natuurlijk wel aan bepaalde regels houden. Een van die regels is: gij zult niet direct I/O'en..

Yo dawg, I heard you like posts so I posted below your post so you can post again.


  • PCR
  • Registratie: Juni 2001
  • Laatst online: 21:57

PCR

Op maandag 21 januari 2002 23:20 schreef JayTaph het volgende:
Tja... als je een OS 'veilig' en 'secure' wilt hebben, dan moet je als programma natuurlijk wel aan bepaalde regels houden. Een van die regels is: gij zult niet direct I/O'en..
Ik snap hem wel, hij wil graag de controle zoveel mogelijk in eigen handen houden :)

  • JayTaph
  • Registratie: Oktober 1999
  • Laatst online: 28-11-2025

JayTaph

Portability is for canoes.

MS-DOS :+

Yo dawg, I heard you like posts so I posted below your post so you can post again.


Verwijderd

Op maandag 21 januari 2002 21:30 schreef NaOH het volgende:
Kan iemand mij uitleggen wat hier fout aan is?
Hij crashed met de melding 'priviliged instruction bla bla'
code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            mov     dx, 378h //set data port
        
        add     dx, 2h   // Switch to  controll port
        mov     al, 0x03     // RS=0, R/W=0, E=0
        out     dx, al
        
        sub     dx, 2h // Switch back to Data port
        mov     al, data
        out     dx, al 

        add     dx, 2h      // To controll port again
        mov     al, 0x02    // RS=0, R/W=0, E=1
        out     dx, al  
        mov     al, 0x03    // RS=0, R/W=0, E=0
        out     dx, al
        mov     al, 0x01    // RS=0, R/W=1, E=0
        out     dx, al
Die privileged error kreeg ik ook! Begon ik meteen na te denken; is daarom die ZIP drive zo baggertraag onder Win2000? En mag dit wel onder XP?

Verwijderd

Op dinsdag 22 januari 2002 11:52 schreef hvdberg het volgende:
En mag dit wel onder XP?
Nope mag niet.

  • Nibble
  • Registratie: Juli 2001
  • Laatst online: 09-09 09:06
Op maandag 21 januari 2002 21:30 schreef NaOH het volgende:
Kan iemand mij uitleggen wat hier fout aan is?
Hij crashed met de melding 'priviliged instruction bla bla'
code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            mov     dx, 378h //set data port
        
        add     dx, 2h   // Switch to  controll port
        mov     al, 0x03     // RS=0, R/W=0, E=0
        out     dx, al
        
        sub     dx, 2h // Switch back to Data port
        mov     al, data
        out     dx, al 

        add     dx, 2h      // To controll port again
        mov     al, 0x02    // RS=0, R/W=0, E=1
        out     dx, al  
        mov     al, 0x03    // RS=0, R/W=0, E=0
        out     dx, al
        mov     al, 0x01    // RS=0, R/W=1, E=0
        out     dx, al
Direct aanspreken van IO mag niet in NT omgeving (NT, 2K, XP). Komt omdat de HAL (Hardware Abstraction Layer) ertussen zit, doe je niets aan.
ASM in NT is in de regel een 'big nono'.

T is for TANK, and T is for TERROR ... and K is the K for KILLING in error.


  • JayTaph
  • Registratie: Oktober 1999
  • Laatst online: 28-11-2025

JayTaph

Portability is for canoes.

Op dinsdag 22 januari 2002 13:07 schreef Nibble het volgende:

[..]

Direct aanspreken van IO mag niet in NT omgeving (NT, 2K, XP). Komt omdat de HAL (Hardware Abstraction Layer) ertussen zit, doe je niets aan.
ASM in NT is in de regel een 'big nono'.
Da's onzin. Elk C-progamma wordt ook gecompileerd naar asm. Je moet alleen zorgen dat je geen privileged instructies gebruikt, that's all

Yo dawg, I heard you like posts so I posted below your post so you can post again.


  • rstegers
  • Registratie: November 2001
  • Laatst online: 14-09 08:48
DlPortIo (www.sstnet.com) is de enige optie om het te doen. Lijkt me geen probleem om deze te gebruiken...

  • drZymo
  • Registratie: Augustus 2000
  • Laatst online: 09-08 22:22
Doe zoals ik. Ik heb een MS-DOS 6.20 partitie aangemaakt voor dit soort dingen. Ik draai al een jaar ofzo dual boot DOS en Windows (2k of xp whatever). Als ik echt ouderwets wil doen dan ga ik dus naar DOS en proggel ik daar een beetje. :P Werkt ideaal.

"There are three stages in scientific discovery: first, people deny that it is true; then they deny that it is important; finally they credit the wrong person."


  • Devil
  • Registratie: Oktober 2001
  • Niet online

Devil

King of morons

Topicstarter
Op dinsdag 22 januari 2002 13:50 schreef rstegers het volgende:
DlPortIo (www.sstnet.com) is de enige optie om het te doen. Lijkt me geen probleem om deze te gebruiken...
Het is ook geen probleem, want voor zover ik weet werkt port io naar behoren. maar ik wilde dus graag zelf de controle hebben. Ben namelijk bezig met Yalcd (yet another lcd thing) en mijn hoofdoellen zijn:
Snelheid (niet meer 20% proc usage kwijt aan je lcd software)
portability (tussen besturingssytemen)
En compactheid (geen onnodige toeters en bellen, geen Gui ed.

After all, we are nothing more or less than what we choose to reveal.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15-09 19:59

Creepy

Tactical Espionage Splatterer

Als je wilt dat ie ook onder NT/2000/XP draait, zul je toch echt iets anders moeten verzinnen dan direct I/O, zoals een eigen driver of bijv. het gebruik van DirectPortI/O.

20% cpu usage? Welk idioot programma gebruik jij dan? Zodra zoiets als een LCD proggie meer in gebruikt neemt dan 5% o.i.d. gooi ik het er meteen af..

Mijn ideale prog heb ik al (duh.. zie sig :). Neemt op een P166 minder dan 1% CPU usage in gebruik. Je hoeft echt niet in assembler te gaan proggem om je CPU usage zo laag te krijgen. De huidige compilers optimalisen flink voor je.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Devil
  • Registratie: Oktober 2001
  • Niet online

Devil

King of morons

Topicstarter
Op dinsdag 22 januari 2002 21:40 schreef Creepy het volgende:
Je hoeft echt niet in assembler te gaan proggem om je CPU usage zo laag te krijgen. De huidige compilers optimalisen flink voor je.
Ja das waar, maar assembler is een stuk leuker :)
* Devil houd van het gevoel dat hij de leiding heeft ipv de compiler

Nice progje btw.

After all, we are nothing more or less than what we choose to reveal.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15-09 19:59

Creepy

Tactical Espionage Splatterer

Hmm.. je hebt wel meer "controle" ja. wat dat betreft is het jammer dat mijn ASM kennis niet veel verder gaat dan wat z80 opcodes en bios calls :)

Ach ja... * Creepy gebruikt stiekum ook 2 kleine asm routines voor directe toegang tot I/O poorten onder win9x/me :)
en DLPortI/O voor de me/nt/2000 variant.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1