私は以下の値をAX:1000100001001に保存し、CLには1の値を持っていると言います。アセンブリ:ROL命令は正しい?
ROL AX、CL命令を実行すると、私のSWはAXの内容が10001000010010
正解は00010000100101であるべきですか? (私はすべてのビットを左にROLするので、MSBは右にLSBとして現れます)
私は以下の値をAX:1000100001001に保存し、CLには1の値を持っていると言います。アセンブリ:ROL命令は正しい?
ROL AX、CL命令を実行すると、私のSWはAXの内容が10001000010010
正解は00010000100101であるべきですか? (私はすべてのビットを左にROLするので、MSBは右にLSBとして現れます)
あなたのデバッガは先行ゼロを省略してあなたをだましました。
1 0001 0000 1001
そうそう、それの1左回転はあなたがcl
が1 rol
ある知っていればrol ax, cl
はかなり無意味であることを
0010 0010 0001 0010
注意され、実際に
0001 0001 0000 1001
です1で1が特殊なエンコードを持っていて、rol reg, imm8
のエンコードがありますあなたは他のカウントのために使うことができます。
ああああ!それはそれだった。私は気づいていないのでとても馬鹿です。ありがとうたくさんの皆さん:0 – Daeto
ゼロに設定されている他のビットは忘れていますが、そこに:0001 0001 0000 1001
(16ビット)。これをロールすると、答えは与えられたとおりになります。
はい、MSBはLSBとして表示されます。 **しかし**あなたの値を16ビットに詰め忘れた場合は、実際には 'AX'に' 0001 0001 0000 1001'があるので、 '0'LSBは' 0'LSBとして返されます;)おそらくMSBとMSBは設定されているかどうかにかかわらず、最上位ビット(この場合はビット#15)です。 – Jester