Im Grunde sind es jeweils 2 Befehle.
Dieses kopiert den Wert/Inhalt von x2 nach x1
Hier also den Wert $FF in den Speicherbereich der Variable B.
Wobei das obere nur die Kurzfassung ist, ausfühlich würde es so aussehn, wobei B eigentlich ein Pointer (hier ist es ein BYTEPoinTeR) zu einem bestimmten Speicherbereich ist:
Code:
MOV BYTE PTR &B, $FF
MOV BYTE PTR [Pointer], $FF
Das LOCK ist ein Befehl, welcher die CPU für den nachfolgenden Befehl in einen Singlethreadmodus schaltet, es wird also sozusagen nur der nachfolgende Befehlausgeführt, während die anderen threads warten ... somit kann also kein anderer Thread wärend dieser Zeit Befehl ausführen, welcher zu dieser Zeit eventuell auch auf deisen Speicherbereich zugreifen könnte (es läuft ja schließlich Keiner)
also
LOCK MOV BYTE PTR &B, $FF
oder
LOCK MOV &B, $FF
setzt alle Bits (ist beim ByteBounter halt besser) auf 1 und somit auf TRUE, ohne daß zur selben Zeit ein anderer Thread auf B zugreifen kann.
Darum kann man auch ganz normal
lesend auf B zugreifen, ohne das es Probleme gibt.