Jeg får ingen kompileringsfejl med d.o. eksempel i min TC++3.0, men mon ikke de er fordi SHR shifter hele registret, dvs. egentlig AX ? I såfald giver det jo mening at du ikke kan bruge AL og AH, som jo er low og high byte af AX. Prøv med dette i stedet for:
asm { MOV AX, 0X80 MOV BX, 7 SHR AX, BX }
Noget helt andet er at jeg ikke forstår hvorfor du ikke bare bruge C's standard operation til nøjagtig det samme:
A >>= 7;
(Shift A's indhold 7 bits til højre. A <<=4 shifter analogt 4 bits til venstre.)
Soepro >> Jeg forstår godt at mit eksempel virker, det skal virke, og det virker også på min.
Mit problem er at det reelle program ikke har SHR AL, AH men SHR AL, BL og det virker ikke fordi når man laver et SHR kald skal count værdien det register der indeholder hvor mange gange der skal shiftes til højre være AL, AH eller AX.
Men så kan du jo bare bruge varianten med BX - den fungerer også. (Om du skriver BX eller BL, har jo ingen betydning, hvis du specifikt flytter værdien 7. Ellers kan du jo cleare HIGH-bittene ved at AND'e med 0XF: AND AX, 0xF)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.