[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 06/24 11:52 / Filesize : 195 KB / Number-of Response : 910
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

アセンブラ… Part 12



1 名前:デフォルトの名無しさん [2007/08/14(火) 17:18:08 ]

アセンブラ全般に関するスレッドです。

【前スレ】
アセンブラ… ( ゚д゚)ウッウー
pc11.2ch.net/test/read.cgi/tech/1174825173/



698 名前:690 mailto:sage [2008/06/21(土) 18:27:33 ]
詰まらない偽者がスレ汚ししてすみません。
最終レスは>>695です。
ありがとうございました。


699 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 18:48:48 ]
いいから消えろよクズ

700 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 18:57:46 ]
ほっとけ
構うな

701 名前:690 mailto:sage [2008/06/21(土) 19:16:46 ]
>>700
まったく同意

702 名前:690 mailto:sage [2008/06/21(土) 20:47:38 ]
誰だお前

703 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 22:33:55 ]
もう誰が誰だかわやくちゃなんだけど、休日にわざわざこんなスレにまできて...

なんかかわいそうだな。

704 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 20:35:43 ]
Re:> お前はなにを言っているのか

705 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:44:09 ]
king、コテ付け忘れてるぞ

706 名前:1stVirtue mailto:sage [2008/06/24(火) 21:10:58 ]
Reply:>>705 お前に何がわかるというのか。



707 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 01:47:33 ]
キングさんって、スクリプトですか。??

708 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 10:58:32 ]

数学板のking?

709 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 21:27:12 ]
いきなりkingネタかよ
数学板以外にもたまーに顔出してるよ、奴は

710 名前:デフォルトの名無しさん [2008/06/30(月) 16:29:09 ]
MASM MSからダウンロードしたけど、VC++ Express 2005が必要だと・・・
VC++ Express 2008じゃだめ?なの?

711 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 16:53:44 ]
>>710
強制解凍してけば長いファイル名のが出てくるからそれを拡張子exeにリネーム

712 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/06/30(月) 17:07:48 ]
もうNASMでえーやん

713 名前:デフォルトの名無しさん [2008/06/30(月) 17:32:54 ]
>>711
thnx・・・thnx......

冷静に考えて
そうだ、ここは俊足なレスポンスを期待しちゃいけない、
と思い、

無い頭で考えて、
オーソドックスにプロンプトの指示に従い、

アンインストールをしたところで、
>>711発見 orz


あうぅぅぅ

714 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 17:35:23 ]
JWasmってどうなんだろ?

715 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 17:41:44 ]
>>712
YASMどうよ?

716 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 19:20:57 ]
Yasm www.tortall.net/projects/yasm/ NASM/GAS互換 64bit対応 修正BSDライセンス
JWasm www.japheth.de/JWasm.html MASM v6/WASM互換 Open Watcomライセンス



717 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 08:54:17 ]
ちょっと使ってみた個人的な感想など:

Jwasm: コマンドラインの引数など使い勝手がいいとは言い難い。
特にリンカは最悪で、設定ファイルが必要だとか訳が判らん。
結局、リンカだけ alink alink.sf.net/download.html
そこにある win32.lib を使うことでバイナリ作成した。

その後に使った fasm flatassembler.net/ なら、
単体で実行バイナリまで生成することが判った。
記法も独特ではあるけども、ヘルパのインクルードが充実していて
あるAPIの挙動を確かめるようなテスト・ルーチンなんかをスクラッチするには
いい感じだと思った。


718 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 17:48:04 ]
いや、互換物はオリジナルと比較しないと意味ないでしょ。
あと、wlinkはなんでもできる強力なリンカだよ。libだけ用意すれば(.aでも.libでも食べてくれる)
jwasm .\samples\windows1
wlink FORM Windows NT runtime CON F windows1 L kernel32.lib
みたいな感じでいける筈。

たしかwatcom本体の方にMSのlink互換の奴(ラッパー?)が入ってる筈だから
それの差し替え用なのかもね?

719 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 19:23:34 ]
masm32のinc参照してるやつも導入pathを調整すれば同様に
jwasm .\samples\windows3
wlink FORM Windows NT F windows3 L kernel32.lib,user32.lib
でバイナリは出来るんだけと、これって豆腐窓が出れば成功なのかな?
窓プログラムはソース見てもいまいちわからないorz


720 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 19:58:28 ]
lzasmってTASMのideal文法サポートだけで、MASM互換部分はごっそり抜けてるのかな?
それとも元々こんなもんなの? 共通ソースってどうやったら書けるんだろうこれ?

721 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 21:02:44 ]
masm support なんて書いてないけど

722 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 21:30:44 ]
っていうかTASMとMASMの共通ソースってことね。
ローカルラベルとか使わなきゃ出来るんだと思ってた。

723 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 22:30:47 ]
TASM,MASM両用にしたい場合
TASMのMASM5.1互換モードだかなんだかを使っていた記憶がある

724 名前:デフォルトの名無しさん [2008/07/05(土) 04:50:49 ]
ゲームの解析をしているのですが

MOV EDX,exe.00666666
00666666 は XOR AL,31 となっています
近くに1〜31範囲外の定数ビットシフトというコメントが多く使われているのですが
どのような処理をしているのかわかりますでしょうか?


725 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 05:19:48 ]
単なるデータじゃないってなんでわかったの?

726 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/07/05(土) 15:53:04 ]
つかDSに命令書くとDEPに殺されるだろJK萌え〜

その命令らしきものの後にretなりjmpがある?



727 名前:724 [2008/07/06(日) 02:01:18 ]
>>725
00666666 はrdataセクションでしたorz
MOV EDX,exe.00666666のASCII"41C6tvejeNiWj・・・・"の中身が格納されてるだけでした


>>726
MOV EDX,exe.00666666
SUB EDX,EAX
CMP EDX,ESI
JNB SHORT exe.0050175C

0050175C TEST EDI,EDI
0050175E JNZ SHORT exe.00501764
00501769    MOV EAX,66666667
0050176E IMUL EDX

この↓にもジャンプ命令がたくさんあります。リターンはずっと後にでてきます。

728 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 07:03:07 ]
うんこい質問で申し訳ないですが、

00401239 |. B9 64000000 MOV ECX,64
0040123E |. F7E1 MUL ECX
00401240 |. 83F8 00 CMP EAX,0
00401243 |. 75 06 JNZ SHORT xxx.0040124B
00401245 |. B8 01000000 MOV EAX,1
0040124A |. C3 RETN
0040124B |> 33C0 XOR EAX,EAX
0040124D \. C3 RETN

関数の末尾のコピペなんですが、
アドレス0x00401239時点でのEAXが0以外で、この関数が1を返す事はあり得ますか?
ECX(=0x64)を掛けている理由がよく分からないので、そういう可能性があるのかと思いまして。

729 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 10:26:35 ]
eaxの値が0x04000000〜0xf4000000の範囲なら1

730 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 16:44:24 ]
>>724
単なる難読化だろw

731 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 04:23:03 ]
初歩的な質問ですが教えてください

MOV DWORD PTR DS:[ESI],00400000

例えば、00400000にはアドレスが入っています。この場合、00400000を移動するのか
格納されているアドレスを移動するのか、どちらでしょうか?



732 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 19:34:23 ]
// ESIはポインタ
*ESI = 400000;


733 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 23:41:52 ]
それだと誤解を招きそうなので

// ESIはポインタ
TYPE_T *ESI;
ESI = 0x400000;

って書いた方が

734 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 23:48:37 ]
ポインタじゃなくて、ただのレジスタとメモリ領域。
ポインタって言ってると、わかり辛い。

735 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:19:54 ]
>>731

セグメントアドレスがDSの値でオフセットアドレスがESIの値なメモリ領域に十進数の400000を入れているように見える

736 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 10:02:54 ]
// DSの説明ははしょるけど  DWORD PTRなんだから
DWORD* ESI;
*ESI = 0x400000;
// でええんでないか?




737 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 10:42:06 ]
皆さんありがとうです
ESIにデータセグメントのアドレス00400000を示しているということですね
ではそのままなら[ESI+8]は00400008でよいのですか?

738 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 11:28:25 ]
>>737
だめ

739 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 11:47:50 ]
ddebでも落として飽きるまで実験しろ

740 名前:デフォルトの名無しさん [2008/07/13(日) 07:45:00 ]
だめだこりゃ

741 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 18:39:18 ]
キャリーフラグの反転ができる CPU では、
コイツも使ってやってね(Z80 表記)。

  CP   0AH
  CCF
  ADC   30H
  DAA

742 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 13:12:01 ]
www.computerworld.jp/topics/vs/115629.html

743 名前:デフォルトの名無しさん [2008/07/18(金) 00:00:59 ]
質問:アセンブラの除算

質問です。アセンブラの除算は、具体的に どのような処理をしているのでしょうか。
「ビット レベルの計算」のイメージができません。
また、除算は ほかの計算と比較して、クロック数を消費するとインターネットに書いてありました。
それが なぜなのか、理解できていません。
おそらく、どのような計算をしているかを把握できれば、理解できるとおもうのですが。
インターネットで「除算 アセンブラ div 」などで検索しましたが、求めている情報が入手できませんでした。
そのため、質問させていただきます。
また、読むべきサイト、書籍などがあれば、教えていただければ幸いです。
よろしく お願い致します。

744 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:06:58 ]
除算器で検索

745 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:10:28 ]
>>743

journal.mycom.co.jp/column/architecture/

ここを読んでまるっきり理解できなきゃ筋がないと見なす。

746 名前:デフォルトの名無しさん [2008/07/18(金) 00:40:01 ]
ありがとうございます。よんで勉強します。
論理回路の基礎は知っているので、何とか理解できそうです。



747 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 05:25:03 ]
ビットレベルの計算って、要するに2進数で筆算してるだけの話じゃないか?

748 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 07:05:38 ]
それ前にアセンブラの除算もCの除算もみな一緒だと思うが

749 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 09:00:46 ]
>>747
筆算ってこたーない。。

750 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 09:51:37 ]
>>749
マジなんか面白く上げ足とっただけか知らんが、イメージは筆算だ。
掛け算も同じ。

751 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 09:56:38 ]
その人がどういうモデルで筆算というものを把握してるかに依るだろJK

752 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 10:30:08 ]
>>745の84回で、モロに筆算の図が載っているわけだが

753 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 11:23:14 ]
>>751
筆算にモデルもクソもあるか JC

754 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 11:40:04 ]
夕食ってどうやって作るんですか->一例を回答->それは調理だな


755 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 16:51:24 ]
CASLの問題のこと聞いてもおk?

756 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 18:43:28 ]
レスがどんなアセンブラでも構わないならいいんじゃね?
っていうか専門スレないの?



757 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 18:51:47 ]
情報処理試験のあれか、1バイトが16ビットだっけか。

758 名前:デフォルトの名無しさん [2008/07/18(金) 19:26:11 ]
おいおい
1バイトは8ビットだろ・・・。

759 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:32:52 ]
情報処理技術者試験出題範囲を見る限りでは、1語16ビットとは書いてあるが「バイト」という単語は出てこないっぽい。

760 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:38:38 ]
>>758
決まってるわけじゃないよ。多いだけ。

761 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:23:51 ]
>>760
このスレの住人ならそんなこと百も承知だろう

762 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:36:07 ]
ワードアドレッシングマシンなんだよな確か

763 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:54:27 ]
CASL でシフトによる割り算がまったく思いつきません。どなたかお手本をみせていただけませんか?

764 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:21:16 ]
>>763
とりあえず1ビット右シフトを考えてみて。

765 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 02:29:36 ]
昔々あるところに、1byteが6bitや9bitのコンピュータがあってだな…

766 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 04:10:28 ]
>>765
自作?



767 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 06:11:10 ]
基本的に1byteは8bitだけど8bitじゃない場合もあるんだっけ?
マスタリングTCP/IPでは明確にするためにoctetを使う、みたいなのが書いてあった
ちなみに1hydeは156cmで固定

学生の知識だから合ってるか分かんないけど

768 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:59:51 ]
PDP-10とかだな

769 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:53:32 ]
> 学生の知識だから合ってるか分かんないけど

156cmをどこで習うんだよ!

770 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 13:36:10 ]
>>763
34÷10
=0x22/0x0a
=100010b/1010b

            011
      ────
1010)100010
          1010
          ───
          01110
            1010
            ──
            0100

=11bあまり100b
=3あまり4

771 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:47:02 ]
以下はメモリ上に格納された数値の合計を計算して持ち帰るサブルーチンSUMである。
www.dotup.org/uploda/www.dotup.org2018.txt

これを元にメモリ上に格納された数値の最大値を見つけるサブルーチンMAXを作れ。見つけた最大値はメモリ上のANSの番地へ格納すること。

どなたかボスケテ

772 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:55:43 ]
ここは宿題スレじゃありません。

773 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:58:50 ]
ww

774 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:06:58 ]
CASLはほとんど忘れてるよ。
算術系の命令がなくてアドレスの計算命令で代用するのが
ポイントだったのがよみがえった。

775 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 12:53:42 ]
なんすかその8086のLEAみたいな小技は

776 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 13:29:09 ]
内部レジスタをけちってるんですよ。たしかCOMETを後付けで内部解説する教科書があったような気が。



777 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 13:53:14 ]
>>774
即値の加減算命令がないからLEAでなんとかすれ。
という話ですか。

つうか即値扱えるのってLEAだけしかないんだっけ?

>>776
内部レジスタつうか命令デコーダがものすげーシンプルになる命令セット。
だった気がする。
その割にGRが5個とか半端なのがよくわからん。

778 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 15:36:31 ]
CASL命令の基本がレジスタとメモリ間の演算で、加算減算もレジスタとメモリ。
そなものでレジスタ間の演算がわりとめんどい。
LAD GR1,0,GR0 // MOV R1, R0
LAD GR0,1,GR0 // ADD R0, 1
LD GR1,0,GR0  // MOV R1, [R0]
比較演算は代替手段がないので片方を必ずメモリに落とす必要がある。


779 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:04:32 ]
6809を考えれば‥‥。

780 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:36:25 ]
09は掛け算が意外にもレジスタ間なんだよな。

781 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 20:25:29 ]
どこが意外なんだか。

782 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 20:35:59 ]
あのニーモックの中では特異に思えたんだけど、他のCPUじゃ当たり前かな?

783 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 00:20:30 ]
Addressを取れるOP codeが余ってなかったから必然

しかし遡るなら6809なんて中途半端なんじゃなくて
PDP-8とかHITAC-10とかもっと昔の制御用コンピュータだろ


784 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 01:00:46 ]
63C09は・・・忘れた(w

785 名前:デフォルトの名無しさん [2008/07/22(火) 01:06:43 ]
ジャンプ命令について質問です。
いま、以下のような命令があるとします。
BRA _main
この命令ではmainの前に_(アンダーバー)が付いています。
この命令と、次の命令
BRA main
では、どのような違いがあるのでしょうか?

786 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 01:13:10 ]
ラベルが違う。



787 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 02:26:35 ]
もしC言語のソースをコンパイルした結果を見ての質問ならこう。

「キミの使っているCコンパイラが扱うオブジェクトフォーマットの仕様は
 関数名の前にアンダースコア(_)を付ける仕様だった。」

C言語なら必ず付くわけでもなく、アセンブリ言語だから必ず_から始まらなければ
ならないわけでもなく、何か特殊な効果を狙って_を付けた表記にしているわけでも
ない。

788 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 12:59:27 ]
ついでに言うと、C言語のソースで A という名前の関数を作ったとして
BRA A
ってコードを吐くと、BRA命令のオペランドにAレジスタは指定出来ないとか、ラベルAは不正な名前、とかのエラーになるかもしれん。
なので、なにかしら法則を決めてアセンブラの予約語とぶつからないようにしてあげる必要が有る。
ということで _ をつける規則を採用したコンパイラがそこにある、ってわけだ。

789 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 01:31:36 ]
ホスト(z/OS)下でアセンブラを触ることになりました。
が、ソースを見てもさっぱりです。

命令とかを解説しているサイトや参考書ってありません?


790 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 08:46:31 ]
>>789
z/OSだったらIBMに聞けよ :-)


791 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 12:18:08 ]
いったいどこをいじるんだろう・・・

792 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 21:14:48 ]
JWasm、バージョン上がってたんで何か少し本格的なものをアセンブルしたくなって
CDSD-STDで試してみたんだけど、妙なところでエラーが出た。
これなんでだか誰かわかります?

他にMWSAでも試そうかと思ったけど、あれコマンドラインじゃシンボル使えなかったんだな。

793 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 17:39:27 ]
BYTE PTR DS:[EAX+8]の意味を教えていただけませんでしょうか?
BYTE PTR [EAX+8]なら分かるのですが。
何故セグメントレジスタが出てくるのか分かりません。
また、MASMの良書も教えていただければ幸いです。

よろしくお願いいたします。

794 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 17:42:02 ]
結果を比較してみればいいのに

795 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 18:15:30 ]
>BYTE PTR [EAX+8]
これを本当に理解していれば、DS:も理解出来るはず。

796 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 18:47:30 ]
>>793
リニアアドレスを算出するには
セグメント + オフセット
だけど、どの『セグメント』を使うのかはCPUが暗黙の内に決めてる。
例えば、マシン語命令はCSで示すセグメントからフェッチしてくる・・とか。
でも>>793の上の命令のように、『セグメント:オフセット』と明示的に
セグメントを指定すると、暗黙のセグメント指定をそのセグメントで『上書き』出来る。
「セグメント オーバライド」辺りでググれ。



797 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 19:03:29 ]
まずCPUの名前を書かなきゃわからんだろう。
86とレジスタ名前が似ているだけかもしれんぞ。

798 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 20:38:45 ]
個人的には動作モードのほうが気になる






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<195KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef