Toon posts:

Assembler Data Segment

Pagina: 1
Acties:

Verwijderd

Topicstarter
in masm is het volgende mogelijk:

Code Segment
Assume cs:Code,ds:Data,ss:Opslag
//code
Code Ends

Opslag Segment Stack
dw 100h dup(?)
Opslag Ends

Data Segment
//Data
Data Ends

als nu het ds register veranderd wordt dan schuift meteen het hele Data Segment mee, in nasm echter heb je de syntax

section .text
//code

section .data
//data

en als ik nu het ds register verander lijkt het alsof de data op het segment van de oude ds register blijft staan.

Wie kan mij uitleggen hoe dit zit.

Verwijderd

Topicstarter
niemand????

  • FoggyFreek
  • Registratie: Juni 2000
  • Laatst online: 23-07 17:23

FoggyFreek

I'm a llama again!

Op dinsdag 21 mei 2002 11:35 schreef jakman het volgende:
niemand????
Lees de FAQ even.. zometeen krijg je nog een slotje, dat zou zonde zijn.
na 6 uur pas omhoogschoppen :P met een zinnige opmerking :)

-- Altijd blijven prutsen --


  • HMC
  • Registratie: Juli 2001
  • Laatst online: 29-10-2023

HMC

Pluviophile

Ik begrijp niet helemaal wat je bedoelt, maar
kan je de boel niet ff tijdelijk op een stack pleuren?
Pluk je het daar weer vandaan....

Eat the bugs, live in a pod


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13:44
Ik wil het je best uitleggen, maar ik begrijp je probleem niet. Zelf heb ik alleen (een beetje) ervaring met MASM dus misschien kan ik het ook niet begrijpen, maar vooral wat je bedoelt met 'meeschuiven' is me onduidelijk.

Het lijkt me voor de hand liggen dat de data die je ergens hebt neergezet nooit van plaats veranderd, maar dat je door het DS te variëren je gezichtspunt kan wijzigen. Dat zou natuurlijk in beide assemblers zo moeten werken.

Even for the record: gaat het om real of protected mode?

Verwijderd

Topicstarter
Op dinsdag 21 mei 2002 11:41 schreef HMC het volgende:
Ik begrijp niet helemaal wat je bedoelt, maar
kan je de boel niet ff tijdelijk op een stack pleuren?
Pluk je het daar weer vandaan....
voorbeeld:

section .data
Hallo db "Dit is een tekst",13,10,0

Hoe zou ik nu Hallo op de stack moeten zetten dan?

nb het gaat om real mode 16 bit

Verwijderd

Topicstarter
Volgens mij zit het zo

je hebt een SEGMENT en een OFFSET

dat wordt als volgt uitgerekend

segment = 0x2000h
offset = 0x1000h
adres = 0x21000h

dit is wel degelijk een ander adres als

segment = 0x1000h
offset = 0x2000h
adres = 0x12000

  • joca
  • Registratie: Oktober 2000
  • Laatst online: 12-07-2025
Dat adres verhaal van jou klopt volgens mij. Verder kan ik je niet echt verder helpen, er is niet veel blijven hangen van de assembler lessen op school.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13:44
Je uitleg over segment/offset addressering klopt (adres = 10h * segment + offset), dat is dus duidelijk. Maar wat was nu je probleem? :)

Verwijderd

je zult het adres van je declaratie op de stack moeten zetten.
Pagina: 1