Autor Thema: eine Frage zu einem COde  (Gelesen 5796 mal)

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« am: 19. July 2006, 23:14 »

dw (irq2 and 0xFFFF) ;Offset für IRQx
dw 0x8 ;Codesegment 8
db 0 ;
db 10001110b ;"Präsenz"-Bit, DPL und Segmenttyp
dw irq2 shr 16


was bewirkt das "and 0xFFFF" ???
bite erlährt es mir, weil ich sonst verzweifele ...
thetrue way is my way

__OS_coder

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 19. July 2006, 23:29 »
Der Ausdruck (irq2 and 0xFFFF) bewirkt, dass nur die unteren 16bits der Adresse irq2(ich denke mal das ne Adresse von nem IRQ Handler XD) behalten werden, der rest wird 0. Und da bei diesem Interrupt Gate nunmal das erste Wort die unteren 16bit der 32bit-Handleradresse speichern sollen, muss dafür gesorgt werden, dass auch nur die unteren 16bits gespeichert werden. ;)

Ich hoffe die Antwort hat geholfen...

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #2 am: 19. July 2006, 23:36 »
jop, danke, jetzt verstehe ich es einigermassen
thetrue way is my way

__OS_coder

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 19. July 2006, 23:43 »
Kleine Frage... welchen Assembler benutzt denn du?
Und was hast du denn noch nicht verstanden?

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #4 am: 19. July 2006, 23:46 »
Zitat von: __OS_coder
Kleine Frage... welchen Assembler benutzt denn du?
Und was hast du denn noch nicht verstanden?

seid paar stunden benutze ich FASM :D

ÖHM, also wenn man AND benutzt, dann ist:

0110b AND 1010b

das ergibt doch
0010b
aber wieso wird bei adn 0xFFFF 16 nullen drangestellt?
thetrue way is my way

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #5 am: 20. July 2006, 01:23 »
Zitat von: thetrue
ÖHM, also wenn man AND benutzt, dann ist:
0110b AND 1010b
das ergibt doch
0010b


jo

Zitat von: thetrue
aber wieso wird bei and 0xFFFF 16 nullen drangestellt?

 :?:
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #6 am: 20. July 2006, 01:29 »
Es werden nicht 16 Nullen drangehängt. Es werden dann nur die unteren 16 Bit berücksichtigt, der Rest auf Null. Damit du einen 16 Bit Wert hast und keinen größeren werden die Werte ab Bit16 genullt (wenn ich das mal so sagen darf). Dann hast du einen 16 Bit wert.

Beispiel:

Wert = 12345678h

Wert and 0FFFFh

Wert = 5678h

bitmaster
In the Future everyone will need OS-64!!!

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #7 am: 20. July 2006, 01:59 »
ahh, alles klar danke @all
thetrue way is my way

 

Einloggen