000
28.05.2002, 19:44
thinktank
|
Ich bin beim Lesen von " Programmiersprache Assembler - eine strukturierte Einführung" von Reiner Backer auf folgende Fehler ( oder doch nicht ?) gestoßen :
auf S.131 :
(im Code Beispiel)
mov ah, 02h ; Mit diesem Interrupt erfragen wir den Status ; des Druckers. Der Druckerstatus wird ; anschließend xor dx, dx ; <- Warum soll man dx auf 0 setzen ? int 17h ;im AH-Register zurückgegeben.
(...)
test ah, 10000000b ; Bit - 7 gesetzt ? (...) je Fehler ; Springe wenn Bit - [b]5[/b] gesetzt ist zu Fehler ( Warum Bit-5 ? )
test ah, 00100000b ; Bit -5 gesetzt ? (...) jne Fehler ; Springe wenn Bit - 7 nicht gesetzt ist zu Fehler ( Warum Bit- 7 ?)
Auf der nächsten Seite gehts weiter : ( wieder beim Code - Beispiel )
mov ah, 10100101b ; AH = 1010 0101 shl ah, 1 ; AH = 0100 1010 und CF = 1 mov cL, 4 ; CH = 4 ( wieso jetzt CH , ich dachte er schiebt was in ;CL ( warum eigentlich so kompliziert mit [b]c[/b]L ? )) shl ah, cL ; why cL ?
Beim Codebeispiel für SHR :
mov ah, 10100101b ; AH = 1111 1110 shr ah, 1 ; AH = 0111 1111 und CF = 0 mov cL, 4 ; CH = 4 wieso jetzt schon wieder CH? Ich dachte er ;schiebt was in CL. shr ah, cL ; why cL ?
Ich bin absoluter Noob in ASM, deshalb bin jetzt etwas verwirrt =). Ausserdem ist das die 9.Auflage ( vom Februar 2002 ). Sind das jetzt Fehler oder ned ?
BTW :
Benutzt ihr MSVC zum assemblieren ?
--
Dieser Beitrag wurde am 28.05.2002 um 19:49 von thinktank bearbeitet.
|
|
Profil || Suche
|
001
28.05.2002, 21:56
Tron
|
*buchausdemregalkram*
drucker: dx gibt die nummer des druckers an, also 0 fuer lpt1:
bei mir stehen die bits richtig rum da, also:
test ah, 10000000b ; Bit - 7 gesetzt ? (...) jne Fehler ; Springe wenn Bit - 7 gesetzt ist zu Fehler ( Warum Bit-5 ? )
test ah, 00100000b ; Bit -5 gesetzt ? (...) je Fehler ; Springe wenn Bit - 5 nicht gesetzt ist zu Fehler ( Warum Bit- 7 ?) allerdings ist bei meiner auflage die pruefung der flags verdreht (also jne statt je und umgekehrt) der code aus deinem buch ist richtig, nur die kommentare sind falsch.
shl: da wurde ein fehler aus meiner ausgabe nur halb korrigiert, bei mir steht ueberall ch. das ist falsch, es muss natuerlich ueberall cl heissen, da fuer das schieben ueber mehrere bits das cl register als zaehler verwendet wird gros/kleinschreibung tut bei asm nichts zur sache. btw: ab dem 386er kann man shl/shr/sal/sar/rol/ror/rcl/rcr ueber mehrere bits auch ohne das cl register verwenden, also direkt z.b. shl ax, 5
shr: hier prinzipiell selbes problem wieder nur halbherzig korrigiert, das bitmuster aus dem kommentar passt natuerlich nicht zum code; was in meiner ausgabe uebrigens noch richtig war, da steht naemlich mov ah,11111110b
ich benutze nasm
--
'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams
'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett
|
|
Profil || Suche
|
002
29.05.2002, 14:40
TheTinySteini
|
lol, ich hab das Buch in der Ausgabe von 13.-16. Tausend von Mai 1995. Da sind die Fehler mit dem cL auch drin - also falsche Kommentare. Aber das Druckerbeispiel ist richtig. Richtige Bit-Angabe, richtiger Sprungbefehl...
--
TheTinySteini Coder Poke646 "Don't Panic" - Hitchhiker's Guide to the Galaxy
|
|
Profil || Suche
|