[asm] Adresvariabelen?????

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

  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13
Hallo,

op het moment zijn we bezig met een stukje assembler en vroegen ons af wat het vogende inhoud:

b[ax] -> waarde van adres pointed door ax als byte
w[ax] -> ,, ,, ,, ,, ,, ,, als word

maar wat betekent: [ax] ?????
dus wat betekent
code:
1
mov dx,[ax]

dus wat voor type krijg je std terug??? dus byte of word???


Is het zo dat als je zegt:
code:
1
mov dx,[ah]

je een byte krijgt
en bij
code:
1
mov dx,[ax]

een word ????

If you are not wiping out you are nog pushing enough...


  • Sjonny
  • Registratie: Maart 2001
  • Nu online

Sjonny

Fratser

Op zaterdag 29 september 2001 17:56 schreef Pinda het volgende:
<snip, veel te veel ;)>
ziet er uit als 16 bits code? dos omgeving... anyways:
code:
1
2
3
mov ax, 0100h    ; geheugen adres
mov dl, [ax]     ; wat op adres ds:ax staat in dl, 1 byte
mov dx, [ax]     ; wat op adres ds:ax staat in dx, 1 word

volgens mij mag mov dx, [al] helemaal niet .. 8 bits adres makes no sense at all..

The problem is in the part of your brain that handles intelligence.


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Op zaterdag 29 september 2001 18:02 schreef Sjonny het volgende:
volgens mij mag mov dx, [al] helemaal niet .. 8 bits adres makes no sense at all..
Stel dat het door je assembler komt, dan kun je daarna vast heerlijk debuggen.

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...


  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13
We zullen het linkje eens even bekijken....
Vage asm gedoe ook :(

If you are not wiping out you are nog pushing enough...


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

ja, daarom ben ik na m'n 16e ook volledig overgestapt op C++ 8-)

Verwijderd

Ik heb ook een keer het een en ander aan 80x86 Asm geleerd, om er vervolgens achter te komen dat die hele segment:offset adressering ontzettend oud en bagger is..

'protected mode' is tegenwoordig de standaard geloof ik.

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 09:29

Tuinhark

Retro

'g Geloof niet dat Xinu dat al ondersteunt. >:)

:Y)

  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13
He Tuinhark,

Sjek je mail ik heb de oplossing. We moesten in create.c nog de sp aanpassen.

If you are not wiping out you are nog pushing enough...


  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Op zaterdag 29 september 2001 17:56 schreef Pinda het volgende:

maar wat betekent: [ax] ?????
Iets in de trent van: pak word van adres ds:ax, als ik me niet vergis.
dus wat betekent
code:
1
mov dx,[ax]

dus wat voor type krijg je std terug??? dus byte of word???
word
Is het zo dat als je zegt:
code:
1
mov dx,[ah]

je een byte krijgt
en bij
code:
1
mov dx,[ax]

een word ????
code:
1
mov dx,[ah]

mag niet zomaar, zoals iemand al zei. Je kan geen byte in een word mikken. Dat zou dan bv. iets als dit moeten zijn:
code:
1
mov dl,[al]

Maar dan nog vind ik het vaag. 't Is een beetje lang geleden dat ik met Assembly heb gewerkt. Mensen die m'n Gfxfx pakketjes kennen weten wel hoe lang geleden. :)

En oh, ps vergeten te zetten? 'kweenie wat je allemaal aan 't uitvogelen bent, maar vergeet ook niet het ds te zetten dan...

[ specs ] [ Tweaker gallery ]


  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13
Over het datasegment hoef ik me niet druk te maken.
Op het moment zijn we voor school aan het hacken in een operating System genaamd XINU.

Er is een functie contextswitch die de staat van het huidige proces opslaat en het nieuwe proces laad. Het is de bedoeling dat we deze functie herschrijven zodat deze niet alleen de bp, si, di en ps bewaard maar ook ax,bx,cx,dx en es.

En daar kwamen we wat dingen tegen die we niet goed konden verklaren en zijn zo bij het assembler programmeren beland (deze code is dus in assembler).

If you are not wiping out you are nog pushing enough...


  • Onno
  • Registratie: Juni 1999
  • Niet online
Op zaterdag 29 september 2001 17:56 schreef Pinda het volgende:
b[ax] -> waarde van adres pointed door ax als byte
w[ax] -> ,, ,, ,, ,, ,, ,, als word
Schrijf dat voortaan gewoon even voluit. [byte ptr ax] en [word ptr ax]. Is wel zo duidelijk. :)
Op zondag 30 september 2001 13:59 schreef Explore het volgende:
Dat zou dan bv. iets als dit moeten zijn:
code:
1
mov dl,[al]
Zoals al gezegd is... dat kan niet. Een adres is altijd 16 of 32 bits.
Op zondag 30 september 2001 14:17 schreef Pinda het volgende:
Er is een functie contextswitch die de staat van het huidige proces opslaat en het nieuwe proces laad. Het is de bedoeling dat we deze functie herschrijven zodat deze niet alleen de bp, si, di en ps bewaard maar ook ax,bx,cx,dx en es.
Hmm, tijd dat dat OS het Task State Segment ontdekt denk ik. :+

  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13
Task State Segment?? Om eerlijk te zijn zegt me dat niet zoveel! Wat is dit :?
Kan me er wel iets bij voorstellen, maar hoe is het te gebruiken

If you are not wiping out you are nog pushing enough...


  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
Zeg Pinda,

Is die opgave nog gelukt....?
Zit nu met hetzelfde probleem...zelfde vraag zelfs..;-)

Kun je me mischien een link geven oid naar jouwn oplossing,
zodat ik daarmee verder kan gaan.

BvD.

Wat niet kan is nog nooit gebeurd


  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13
Ik heb hier geen links bij de hand, die heb ik allemaal thuis staan.

De hint die ik je wel even kan geven (laat ik het niet té makkelijk maken) is dat je eens in create.c moet gaan kijken.

Ik herken trouwens je nick niet...

Mocht je er niet uitkomen, schiet me dan even aan op school. Dan kan ik je nog meer vertellen!!

If you are not wiping out you are nog pushing enough...


  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
HIO Groningen toch ?

Je naam bij YABB komt me niet bekend voor.
In iedergeval bedankt zal het even bekijken..

Wat niet kan is nog nooit gebeurd


  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13
Idd HIO groningen...
Zit in groep1 bij het project! Jij????

If you are not wiping out you are nog pushing enough...


  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
Groep 3.

[Je bedoeld neem ik aan advanced databases project ?]

Ik heb overigens ook een mailtje gestuurd via YABB site..

Ben er nog niet helemaal uit, maar dat komt vast wel..

Meuldijk is overigens weer beter.

Wat niet kan is nog nooit gebeurd


  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13
YaBB of YapBB???? En naar mijn eigen mailadres of naar het YapBB adres??

Meuldijk weer beter? Handig....

If you are not wiping out you are nog pushing enough...


  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
YapBB adres.

Theorieles op vrijdag ?
Zie ik je dan wel

Wat niet kan is nog nooit gebeurd


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

JayTaph

Portability is for canoes.

Op zondag 30 september 2001 17:05 schreef Pinda het volgende:
Task State Segment?? Om eerlijk te zijn zegt me dat niet zoveel! Wat is dit :?
Kan me er wel iets bij voorstellen, maar hoe is het te gebruiken
Eventjes uitgaande van 32bits PMode:

Het TTS (task state segment) is een structure met daarin al je opgeslagen registers (ax,bx etc.. alle ring[0..4] ss en sp) en bijbehorende data (io bitmap etc)

Wat je in feite doet, is een initiele TSS opbouwen met daarin al je gegevens (CS:EIP goedzetten, EAX.. registers op 0 zetten (of DEADBEEF), SS:ESP's vullen etc etc etc).

Voor dat TTS maak je een TSS-descriptor aan (net zoals je een code-descriptor hebt). Dat wordt bijvoorbeeld 0x100.


Met een simpele JMP of CALL instructie kun je naar die task toespringen. De processor vult automatisch de huidige TSS met zijn huidige gegevens waaronder CS:EIP. Op het moment dat je dus weer terug springt naar deze task, gaat je processor gewoon door met waar hij was gebleven..


makkelijk he, dat je dat allemaal niet zelf hoeft te doen :)

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


  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

wel leuk allemaal, maar vergeet er niet bij te zeggen dat dat alleen kan als je supervisor rechten (privilege level 0) hebt, en die heb je meestal niet als user in een OS :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


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

JayTaph

Portability is for canoes.

Der zijn wel meer dingen waar je rekening mee moet houden, oa dus ring0 (of trap gates et al).

Maar ik ken zo geen tot weinig (nee, ik ken er geen), user-programma's die gebruik maken van TSS... Ik ga er dus vanuit dat ze bezig zijn met een eigen OS of iets dergelijks.

edit:

bijna gelijk na beter lezen.. :)

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


  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
juist, xinu om precies te zijn.. ;-)

Wat niet kan is nog nooit gebeurd


  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13
Jeez, heftige info maar wel erg leuk!
Ik zal eens even verder kijken hiernaar!

If you are not wiping out you are nog pushing enough...


  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op woensdag 03 oktober 2001 15:07 schreef JayTaph het volgende:
Der zijn wel meer dingen waar je rekening mee moet houden, oa dus ring0 (of trap gates et al).

Maar ik ken zo geen tot weinig (nee, ik ken er geen), user-programma's die gebruik maken van TSS... Ik ga er dus vanuit dat ze bezig zijn met een eigen OS of iets dergelijks.

edit:

bijna gelijk na beter lezen.. :)
ja maar de TSS wordt alleen gebruikt in 32 bits protected mode, en ze zijn in 16 bit real mode bezig :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


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

JayTaph

Portability is for canoes.

Op woensdag 03 oktober 2001 20:55 schreef OiSyN het volgende:

[..]

ja maar de TSS wordt alleen gebruikt in 32 bits protected mode, en ze zijn in 16 bit real mode bezig :)
er bestaat ook een 16bit tss..

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


  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op woensdag 03 oktober 2001 21:29 schreef JayTaph het volgende:

[..]

er bestaat ook een 16bit tss..
je hebt gelijk, vergeet dan maar even het bits-gedeelte (maar ksnap sowieso niet wat iemand wil met 16 bits protected mode :?) :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


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

JayTaph

Portability is for canoes.

Inderdaad... dan krijg je een beetje dat 286 pmode effect... leuk dat het kan.. maar geen hond die er gebruik van wil maken..

Ik snap eigenlijk nog steeds niet precies wat ze hiermee allemaal van plan zijn? Zijn ze nou het hele context-switching aan het aanpassen, uitpluizen of aan het bouwen?

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


  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13
We zijn druk bezig met het vak Operating Systems 2, hierbij is een opdracht waar je in het XINU systeem wat aan moet passen.

Het komt erop neer dat je tijdens de contextswitch extra registers moet gaan opslaan, standaard worden ci en di opgeslagen (C vraagt er niet om het opslaan van meer registers dit schijnt het zelf te doen(/ regelen?)). De opdracht is dan ook om de registers ax bx cx dx en es op te slaan....

dit is een kwestie van deze registers op de stack zetten, stackpointer wisselen en de registers voor het nieuwe proces weer poppen.

Omdat we hier niet uitkwamen zijn Tuinhark en ik een hele zooi tutorials gaan uitpluizen, uiteindelijke bleek het dat onze fout niet in de Assembler code zat maar dat we tijdens de create van een proces even wat meer ruimte op de stack moesten reserveren. En klaar waren we :o

If you are not wiping out you are nog pushing enough...


  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

dus jullie hebben het opgelost :?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13
Gelukkig wel, we hebben het er nog even met de leraar over gehad en die vond het een mooie oplossing :)

Het gaat hem er altijd om dat je wat hebt geleerd en dit gaat nu zeker op!!! :)

If you are not wiping out you are nog pushing enough...

Pagina: 1