2016-03-22 24 views
1

私は以下の値をAX:1000100001001に保存し、CLには1の値を持っていると言います。アセンブリ:ROL命令は正しい?

ROL AX、CL命令を実行すると、私のSWはAXの内容が10001000010010

正解は00010000100101であるべきですか? (私はすべてのビットを左にROLするので、MSBは右にLSBとして現れます)

+2

はい、MSBはLSBとして表示されます。 **しかし**あなたの値を16ビットに詰め忘れた場合は、実際には 'AX'に' 0001 0001 0000 1001'があるので、 '0'LSBは' 0'LSBとして返されます;)おそらくMSBとMSBは設定されているかどうかにかかわらず、最上位ビット(この場合はビット#15)です。 – Jester

答えて

4

あなたのデバッガは先行ゼロを省略してあなたをだましました。

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

ああああ!それはそれだった。私は気づいていないのでとても馬鹿です。ありがとうたくさんの皆さん:0 – Daeto

2

ゼロに設定されている他のビットは忘れていますが、そこに:0001 0001 0000 1001(16ビット)。これをロールすると、答えは与えられたとおりになります。

関連する問題