Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: Assembler, was bedeutet $

  Alt 4. Jan 2006, 15:07
Zitat von mumu:
wenn wir von DsDatenPointer zwei abziehen, dann sind wir bei iLow, oder? iLow zeigt wiederrum auf das erste Byte von i und deshalb wird in i die Zahl 5 geschrieben. Wenn ich richtig liege, dann hast du hier nen punkt übersprungen (beabsichtigt oder unbeabsichtigt ist ja eigentlich egal). Mich interessiert blos ob ich das jetzt hier richtig interpretiert hab?
Ich habe da nichts ausgelassen. Alle EQU sind Assembler-Anweisungen und verändern den aktuellen Programmcodezähler nicht. Alle Assembler-Anweisungen (.CODE, .DATA, ASSUME, EQU, .IDEAL, IF, ...) werden vor $ "versteckt". Somit sieht der Speicher so aus:

Code:
DS:00 MiniArray
DS:32 i
DS:34 DsDatenPointer

CS:00 MOV DI, 2
...
Wenn nun in Word(DS:34,DS:35) (=DsDatenPointer) die Zahl 34 steht (=OFFSET DsDatenPointer) und man davon nun 2 abzieht, landt man bei 32, was wiederum der Offset von "i" ist.


Zitat:
ein was versteh ich aber trotzdem noch nicht so ganz:
MOV WORD PTR [BX-DI],5
hätte es jetzt einen Unterschied gemacht folgendes zu schreiben: MOV BYTE PTR [BX-DI],5
Ja, da du nicht weißt, was im anderen Byte steht (uninstalisiert) kann das Word eine ziemlich große Zahl werden.


Zitat:
transferriert MOV WORD PTR [BX,DI],5 ins Byte 1 von i 5 und ins Byte 2 auch 5, oder wie?
Durch das "WORD PTR" ist klar, dass du ein WORD moven willst. Also wird deine Zahl 5 im Assemblat vom Assembler als ein WORD abgelegt => 0005h.
  Mit Zitat antworten Zitat