teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

改善

2018/03/18 22:45

投稿

carnage0216
carnage0216

スコア194

title CHANGED
File without changes
body CHANGED
@@ -51,4 +51,8 @@
51
51
  ようやく回答者様の皆様の回答が理解できてきました。
52
52
  以後できる限り気を付けて質問します。
53
53
  どうかよろしくお願いいたします。
54
- 本当に申し訳ありませんでした。
54
+ 本当に申し訳ありませんでした。
55
+
56
+
57
+ 3/19 復習している際に疑問が出来たので再度以下の事に関して質問したいのですが、ここでは書きにくいため新しく質問を作ります。回答していただけると大変ありがたいです。
58
+ 一時的に質問をしないとのことでしたが今回に関してはどうかお許しください。

5

改善

2018/03/18 22:45

投稿

carnage0216
carnage0216

スコア194

title CHANGED
File without changes
body CHANGED
@@ -51,15 +51,4 @@
51
51
  ようやく回答者様の皆様の回答が理解できてきました。
52
52
  以後できる限り気を付けて質問します。
53
53
  どうかよろしくお願いいたします。
54
- 本当に申し訳ありませんでした。
54
+ 本当に申し訳ありませんでした。
55
-
56
-
57
- 2018/3/19 <質問の追加>
58
- 今更で申し訳ありません。
59
- width%4の余りが1の時、
60
- 4-(width*3)%4のあまりが1でありダミーデータとして使われるのですよね?
61
- 大変恥ずかしいことにwidthに実際の値、例えばwidth=4n + 1より4-(width*3)%4のwidthに5をいれて4-(5*3)%4として余りを求めてみたのですが1と出ませんでした。
62
- 皆様さんはどうやってあまりが1だと導いたのでしょうか?
63
- 先ほどから復習にと紙に書いて計算しているのですが全く導けません。
64
- また大きな勘違いをして皆様にご迷惑をおかけしてしまうかもしれませんが余りが1になる理由が知りたいです。
65
- できれば計算過程なども書いていただけると大変ありがたいです。どうかよろしくお願いいたします。

4

質問の復習による質問

2018/03/18 19:46

投稿

carnage0216
carnage0216

スコア194

title CHANGED
File without changes
body CHANGED
@@ -51,4 +51,15 @@
51
51
  ようやく回答者様の皆様の回答が理解できてきました。
52
52
  以後できる限り気を付けて質問します。
53
53
  どうかよろしくお願いいたします。
54
- 本当に申し訳ありませんでした。
54
+ 本当に申し訳ありませんでした。
55
+
56
+
57
+ 2018/3/19 <質問の追加>
58
+ 今更で申し訳ありません。
59
+ width%4の余りが1の時、
60
+ 4-(width*3)%4のあまりが1でありダミーデータとして使われるのですよね?
61
+ 大変恥ずかしいことにwidthに実際の値、例えばwidth=4n + 1より4-(width*3)%4のwidthに5をいれて4-(5*3)%4として余りを求めてみたのですが1と出ませんでした。
62
+ 皆様さんはどうやってあまりが1だと導いたのでしょうか?
63
+ 先ほどから復習にと紙に書いて計算しているのですが全く導けません。
64
+ また大きな勘違いをして皆様にご迷惑をおかけしてしまうかもしれませんが余りが1になる理由が知りたいです。
65
+ できれば計算過程なども書いていただけると大変ありがたいです。どうかよろしくお願いいたします。

3

誤字

2018/03/18 17:55

投稿

carnage0216
carnage0216

スコア194

title CHANGED
File without changes
body CHANGED
@@ -44,4 +44,11 @@
44
44
 
45
45
  以上5つの質問でありますが、どうか解説して頂けると大変助かります。
46
46
  C言語を勉強している上でより技術を磨くためにアセンブリ言語を身に着けたいと思います。
47
- どうかよろしくお願いいたします。
47
+ どうかよろしくお願いいたします。
48
+
49
+ 修正
50
+ 論理積と足し算を勘違いして使っていました。
51
+ ようやく回答者様の皆様の回答が理解できてきました。
52
+ 以後できる限り気を付けて質問します。
53
+ どうかよろしくお願いいたします。
54
+ 本当に申し訳ありませんでした。

2

2018/03/04 13:56

投稿

carnage0216
carnage0216

スコア194

title CHANGED
File without changes
body CHANGED
@@ -20,7 +20,8 @@
20
20
  (⓷eaxレジスタとebxレジスタを乗算するのはわかるのですがプログラムにはmul ebxとしか書いていないのですが、なぜmul ebxと書いただけでeaxレジスタとebxレジスタを乗算する結果がebxに入る理由がわかりません。演算結果を一旦別のレジスタに入れた後に、mov命令でebxに演算結果をいれるならば理解できます。このアセンブリプログラムを出力したCPUの構造故にmul ebxと書いただけでeaxレジスタとebxレジスタの乗算結果がebxに入るのでしょうか?だとしたら仕方ないです。)
21
21
 
22
22
  その後4バイトの乗算であるため上位4バイトがedxと下位4バイトがeaxレジスタへ代入されるようです
23
- (⓸この乗算結果を二つのレジスタに乗算の結果を分割して入れている命令部分はプログラムのどこに書いてあるのでしょうか?
23
+ (⓸この乗算結果を二つのレジスタに乗算の結果を分割して入れている命令部分はプログラムのどこに書いてあるのでしょうか?
24
+ どのようにアセンブリ命令を書くことで分割してレジスタに入れられたのでしょうか?)
24
25
 
25
26
  最後にダミーデータを知るために下位4バイトを入れたeaxレジスタと0x00000003で乗算して余りを取得したと書いてあります。これでダミーデータが得られたそうですが、なぜ得られたのか解説をよんでもいまいちわかりません。(⓹下位4バイトを入れたeaxレジスタと0x00000003で乗算して余りを取得したと書いてあります。これでダミーデータが得られた理由がわかりません。また何で割ったのかわからないのですがアセンブリプログラムには書いてあるでしょうか?)
26
27
 

1

修正

2018/03/02 22:05

投稿

carnage0216
carnage0216

スコア194

title CHANGED
File without changes
body CHANGED
@@ -27,14 +27,14 @@
27
27
  プログラムは以下の通りです。
28
28
  ```
29
29
  mov wMargine, 0
30
- mov eax, width /* • */
30
+ mov eax, width /* */
31
31
  and eax, 0x00000003 /* %4 */
32
32
  jz no_margin
33
33
 
34
- xor edx, edx /* ƒNƒŠƒA */
34
+ xor edx, edx /* クリア */
35
- mov eax, width /* • */
35
+ mov eax, width /* */
36
36
  mov ebx, 3 /* 3 */
37
- mul ebx /* • x 3 */
37
+ mul ebx /* x 3 */
38
38
  and eax, 0x00000003 /* %4 */
39
39
  mov ebx, 4 /* 4 */
40
40
  sub ebx, eax