- 1 名前:デフォルトの名無しさん [2007/08/14(火) 17:18:08 ]
-
アセンブラ全般に関するスレッドです。 【前スレ】 アセンブラ… ( ゚д゚)ウッウー pc11.2ch.net/test/read.cgi/tech/1174825173/
- 16 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 22:50:17 ]
- かわいそうな愚民未満、団子。
仕送りを20万円くれるパパに謝りなさいよ。
- 17 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 23:33:34 ]
- そろそろ団子さんに愚民どもをピシッとシメてもらい所だな。
親が経営者であるところをちゃんと示してもらわないと。
- 18 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:25:32 ]
- これと
xchg edx, [eax] これ mov ecx, [eax] mov [eax], edx mov edx, ecx どっちが早い
- 19 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 00:37:41 ]
- >>18
前者の方が早い。 速いかどうかはしらね。
- 20 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 08:56:52 ]
- メモリとのxchgはロックがかかって高価だったような
- 21 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 14:46:28 ]
- ループ内で行っていた場合、
後者だと命令が伸びてフェッチ回数が増える可能性があって、 それが効いてくる可能性はあるかもしれん。
- 22 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 22:12:34 ]
- xchgでバスロックがかかる点に比べれば、他の要素など微々たる差
- 23 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 22:43:25 ]
- >>18
下のは一体何をやってるんだ?
- 24 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 23:14:20 ]
- 上が
edx <-> *eax 下が ecx <- *eax *eax <- edx edx <- ecx でどちらもedxの内容とeaxの指すメモリの内容を交換してる。 下は命令が増えているのとecxを余計に消費している。 上は命令の実行中に他の要因でeaxの先が変化しない事を保証しているのでロックがかかる。
- 25 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 02:59:41 ]
- 他の言語なら最初に "Hello world" とかあると思うんだけど
アセンブラならまず何を書けばいいの?
- 26 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 03:31:42 ]
- ダンゴさんの聡明なるアドバイスが望まれるところだ
- 27 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 08:40:58 ]
- mov ah, 09
mov dx, msg int 21h mov ax, 4C00h int 21h msg db 'Hello, world!$'
- 28 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 19:40:20 ]
- ナツカシス
- 29 名前:25 mailto:sage [2007/08/28(火) 20:00:25 ]
- >>27
ありがと んで、コンパイルなんだけどインストールされてるアセンブラ?って呼べばいいのかな、調べたら yasmとnasmってのがあった。OSはLinux使ってますがLinux歴2ヶ月なんでへたれなんです。 アセンブラのコンパイルはどうやるんでしょうか? Cの初心者向けサイトは多かったけどアセンブラは少なくて。 よろしくです。
- 30 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 20:17:26 ]
- >>29
Linuxなら>>27はだめだな… MS-DOS割り込み使ってるし
- 31 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 20:30:04 ]
- そこでqemuですよ
- 32 名前:25 mailto:sage [2007/08/28(火) 20:52:06 ]
- そうなんすか……。
では、>>27のようなコードをLinux向けに自分で書きたいので >>27で使ってる命令文の意味などを理解したいです。 ここでダメならどこか誘導してくれるかサイトを教えていただけるとありがたいです。
- 33 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 21:10:23 ]
- int 21 はMS-DOS割り込み
DOS時代のソフトを逆汗するといっぱい出てくる ahレジスタの数字で呼び出す機能を指定するんだが、 09は文字列を標準出力にアウトプットしてくれる。 このとき文字列のアドレスをdxレジスタに入れておく。 で、文字列は $ で終わっている必要がある。(Cのヌル終端みたいなもんだ) 4Cでint21するとプログラムを終了する でも俺はint20が好きだ大好きだお前もint20を使え
- 34 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 22:05:36 ]
- Linuxでアセンブラっていうと真っ先に浮かぶのはgasだなあ
- 35 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 22:26:36 ]
- > でも俺はint20が好きだ大好きだお前もint20を使え
俺はCOM限定だけど ret だな。
- 36 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 23:34:35 ]
- 男なら黙ってhlt
- 37 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 01:26:53 ]
- 勝手に止めるな
- 38 名前:25 mailto:sage [2007/08/29(水) 02:52:06 ]
- >>33
解説ありがとうございます パッケージ管理で手間取ってしまいまして返事が遅くなりました。 >>27氏と>>33氏の書き込みを参考に理解していこうと思います。 もういちど勉強になりそうな本やサイトを探して>>27を書き換えれるよう取り組んでみます。 では、今日は遅いのでこれにて失礼します。 スレの皆さんありがとうございました。またよろしくです。
- 39 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 06:54:40 ]
- この辺でも参考にしとけ
www.google.co.jp/search?q=linux+%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%B3%E3%83%BC%E3%83%AB+int80h
- 40 名前:デフォルトの名無しさん [2007/09/01(土) 00:13:15 ]
- >>27
に似てるけど >>143↓は何をするものですか? c:\>debug -a 100 2732:0100 mov dx,110 2732:0103 mov ah,9 2732:0105 int 21 2732:0107 mov ax,4c00 2732:010A int 21 2732:010C nop 2732:010D -e 110 2732:0110 46.32 01.63 E8.68 08.21 D9.24 -r ip IP 0100 :100 -g
- 41 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 00:22:18 ]
- >>40
debug.exeでCOM形式の実行ファイルを作ってるな。 ほんと懐かしい。
- 42 名前:デフォルトの名無しさん [2007/09/01(土) 00:43:50 ]
- >>41
46.32 01.63 E8.68 08.21 D9.24 は文字ですか? 2732:0100 mov dx,110 2732:0103 mov ah,9 だから、110の内容は文字みたいなのですが、nopが有るのが分かりません。 -r ip IP 0100 :100 -g は -g 100とすればいいのにわざわざipの値を確認してgの引数を省略しただけですね。
- 43 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 00:48:17 ]
- 俺もなんでnopがワザワザあるのか分からんw
あとこの例だと-eで十六進データを入力しているけど 俺なら文字列を入れるのにはDB擬似命令使うなあ。
- 44 名前:デフォルトの名無しさん [2007/09/01(土) 00:58:20 ]
- -eでドットがいくつかあるけど、スペースだと思えばいいんでしょうか?
- 45 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:01:53 ]
- これは入力じゃなくて、画面表示をそのままコピーしてるだけ。
ドットは入力の催促で、 古い値. って表示されるから、数値を入れて、スペースを入れると次のアドレスに移動する。
- 46 名前:デフォルトの名無しさん [2007/09/01(土) 01:08:49 ]
- 謎の文字列は2chという文字と関係があるんでしょうか?
-e 100 46 32 01 63 e8 68 08 21 d9 24 -d 100 209 1034:0100 46 32 01 63 E8 68 08 21-D9 24 F2.c.h.!.$ ↑21-D9のハイフンは何でしょうか?熊さんのバグ?
- 47 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:17:28 ]
- LD C, 9
LD DE, MSG CALL 5 RET MSG: DB 'Hello, world!', 0DH, 0AH, '$'
- 48 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:20:28 ]
- >>47氏へ、、、MASMじゃまず無理
- 49 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:26:57 ]
- >>46
8バイト目の区切り。
- 50 名前:デフォルトの名無しさん [2007/09/01(土) 01:30:20 ]
- >>49
あっあー!そうだったんですね、ありがとうございます。 $が文字終端ですね。2chの前のFという文字とnopが未解決ですが満足しました。
- 51 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:33:24 ]
- >>48
つ HIT-88
- 52 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:39:19 ]
- >>50
Fは、入力前のごみデータだろ。って、>45に書かれているじゃん。 nopは作者の癖かなんかじゃないか? コード終端であることを示すために入れたり、 コード領域はnopで埋め尽くしておいたり、色々流儀があったからね。
- 53 名前:デフォルトの名無しさん [2007/09/01(土) 01:56:24 ]
- >>52
そんな癖があるんですか。それは知りませんでした。 >45が分かりませんでした。今もまだ分かっていません。
- 54 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 02:02:09 ]
- >>53
コマンドラインで「debug」と入力して「-」が表示されたら「e 110」と入力すればわかる。
- 55 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 02:05:35 ]
- 入力過程を順に見ていこう。便宜上、カーソルをアンダーバーで表すよ。
--(1)コマンドプロンプト -_ --(2)コマンド(e 110)入力 -e 110_ --(3)改行入力→データプロンプト -e 110 2732:0110 46._ --(4)データ(32)入力→次のデータプロンプト -e 110 2732:0110 46.32 01._ --(5)以下同様に -e 110 2732:0110 46.32 01.63 E8._ -- -e 110 2732:0110 46.32 01.63 E8.68 08._ -- -e 110 2732:0110 46.32 01.63 E8.68 08.21 D9._ --($)データ入力完で次のコマンドプロンプトに -e 110 2732:0110 46.32 01.63 E8.68 08.21 D9.24 -_ -- これで雰囲気をつかんでくれ。
- 56 名前:デフォルトの名無しさん [2007/09/01(土) 02:29:37 ]
- >>55
やったー!ありがとうございます。古い値.の意味が分かりました。
- 57 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 02:40:52 ]
- しかし
こんな旧時代の遺物を教材に使うのってどうよw
- 58 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 03:26:45 ]
- MASMの脳内発音はマズムですか?
- 59 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 03:30:09 ]
- 自分は えむあすむ
- 60 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 03:42:39 ]
- 自己完結している脳内発音を尋ねることに意味があるのか?
コミュニケーションのために実際の発音を尋ねるのならまだ分かるが。
- 61 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 12:08:19 ]
- NASM ナズム
- 62 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 12:34:42 ]
- YASM 休む
- 63 名前:デフォルトの名無しさん [2007/09/01(土) 16:22:15 ]
- 最近アセンブリを学ぼうと思い「高級プログラマのためのアセンブラ入門」
と言う本を買ったのですが内容が16ビットプログラミングでの.comファイル 作製が主なのです。 それで、VS2005のMASMで16ビットリンカを適用さしてコマンドラインから comファイルを作る方法は解ったのですが、いまいち本の内容を理解しきれてない と思いデバッガでステップインしていってどう動いているのかを知りたいのですが VSでどういう風に設定したらasmファイルのみでデバッグ出来るのかが わからないです。 もし出来る方法があるなら、教えていただきたいです。 VS使うよりも良い開発環境があるなら、そちらも是非教えて頂きたいです。 なにとぞよろしくお願いします。
- 64 名前:デフォルトの名無しさん [2007/09/01(土) 17:50:42 ]
- >>63
つ Emu8086 www.emu8086.com/
- 65 名前:デフォルトの名無しさん [2007/09/01(土) 18:53:06 ]
- いまどきCOMモデルもないだろ。
- 66 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 19:01:28 ]
- >>63
C> debug hoge.com
- 67 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 10:43:38 ]
- 高級プログラマって表現はどうなのかと思った
「高級言語プログラマのための たしなみアセンブラ」 ぐらいが妥当だろ
- 68 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 11:13:38 ]
- これのことだろ。
林晴比古 「高級言語プログラマのためのアセンブラ入門」 ttp://www.sbcr.jp/books/products/detail.asp?sku=4797332816
- 69 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 18:04:17 ]
- TASM タズム
- 70 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 00:34:13 ]
- LASM ラスム
- 71 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 00:39:34 ]
- LASM えるあすむ
MASM えむあすむ NASM えぬあすむ TASM ていあすむ
- 72 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 00:58:23 ]
- MASM まさみ
- 73 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 10:55:56 ]
- MASM マシン
- 74 名前:デフォルトの名無しさん [2007/09/05(水) 00:26:52 ]
- int 80h とか int 21h に至るまでをまずやれれば
- 75 名前:デフォルトの名無しさん [2007/09/05(水) 22:11:27 ]
- PEからELFに変換できるツールってありますか?
- 76 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 23:36:09 ]
- call 5とか。
もう使わないか
- 77 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 10:15:05 ]
- >>75
PEはCOFFみたいなものだから 多少自分で前処理する必要があるかもしれないけど ツールはある しかし変換しても使えないと思うが
- 78 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 15:59:22 ]
- binutilsのobjcopyをほげれ。
- 79 名前:デフォルトの名無しさん [2007/09/12(水) 22:59:29 ]
- アセンブラ入門のホームページを見ながら勉強してるんですが
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4919.txt 上記のソースで BUFFER db 128 dup(?) の部分で128byte初期値無しで宣言したBUFFERに間接的に 値を入れていくのはわかるんですが invoke MessageBoxA, 0, offset BUFFER, offset TITLENAME, 0 の部分でBUFFERの末尾に0が入ってないと思うんですが なぜ問題なくMessageBoxAが実行されるか解りません。 すいませんが、どなたか教えていただけないでしょうか。 お願いします。
- 80 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 23:45:57 ]
- >>79
masmがBUFFERの全領域を0で初期化しているようだね。
- 81 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 09:12:23 ]
- ( ゚∀゚)<プップー
OSがdataセクションを初期化してる。
- 82 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 13:56:42 ]
- 行儀の悪いプログラムだな
- 83 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 14:08:48 ]
- >>79 の記述だとmasmならオブジェクトファイルの段階で128バイトの0が確保されるだろ
OSが初期化するわけではない ロードはするけど
- 84 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 14:23:44 ]
- セキュリティのためにOSがやってんじゃなかったのか
- 85 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 23:25:08 ]
- >>81
>>81 >>81
- 86 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 13:19:50 ]
- なぜ、初期値を持つdataセクションをOSが初期化すると思うのか?
- 87 名前:デフォルトの名無しさん [2007/09/14(金) 18:16:40 ]
- dataセクションでもexeに無い部分はOSが初期化するんじゃね?
- 88 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 18:20:51 ]
- obj ダンプすりゃわかる 素人だらけw
- 89 名前:デフォルトの名無しさん [2007/09/14(金) 18:41:40 ]
- 俺は、
仕様上、 誰かが確実に初期化すると定められたものがあっても、 そういうものに依存するのが嫌なので 自分で必ず初期化するのである。
- 90 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 18:45:02 ]
- C の static に全部 = 0; とか書かかないと気持ち悪いタイプ?
- 91 名前:デフォルトの名無しさん [2007/09/14(金) 18:47:46 ]
- 何か
問題 あるかね
- 92 名前:デフォルトの名無しさん [2007/09/14(金) 18:57:49 ]
- 分かりやすく言えば、俺が江頭だとして
「この人は佐藤ですからヒップアタックしてください」と 人からアイデンティファイされたものはダメである。 俺が、この目と足でチェックしてはじめて、 「ぅお前は!佐藤だー!!」(ででででーでででででででで)と、 ヒップアタックする気になるのだ。
- 93 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 20:57:57 ]
- staic int i;
if(i) i = 0; これね
- 94 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 21:05:09 ]
- それは
ちがう だろう
- 95 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 22:39:18 ]
- MASMの
すごい 初期化
- 96 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 02:22:32 ]
- objをダンプしてexeの中身がわかる人がいるのはこのスレですか?
- 97 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 04:00:24 ]
- アセンブラと機械語は違うけどね。
- 98 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 13:28:19 ]
- 初期化しない値は、.dataではなく.data?に書く。
- 99 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 17:11:23 ]
- .bss
- 100 名前:デフォルトの名無しさん [2007/09/18(火) 15:25:32 ]
- age
- 101 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 01:13:41 ]
- >>96
君はわからんのかね
- 102 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 01:41:38 ]
- 外部シンボルが未解決でわかりません。
- 103 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 06:26:18 ]
- もとがMASMの話だけにobjdumpもアレだ。
- 104 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 22:58:08 ]
- >>102
サブシステム→WinDows
- 105 名前:デフォルトの名無しさん [2007/10/18(木) 21:25:44 ]
- age
- 106 名前:デフォルトの名無しさん [2007/10/26(金) 00:02:09 ]
- KITE-1マイクロプロセッサで
exp(x)=Σ(n=0,∞){1/n!}=1/0!+1/2!+1/3!+…+1/n! =1+(1+1/2(1+1/3(1+…+1/n))) の展開した式からネイピア数を求めるアセンブラのプログラムの作り方がさっぱりです。 指定は除算を引き戻し、引き放しで行わず、ループを使わないことらしいです。 ググって見た感じではSRT法を使おうと思っているのですが これまたアセンブラで表現しようと思うのですがさっぱりです。 どなたかプログラムを教えていただけないでしょうか。 またSRT法以外に簡単な方法ががあるなら是非教えて頂きたいです。 よろしくお願いします。
- 107 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 19:31:28 ]
- >アセンブラのプログラムの作り方がさっぱりです。
うむ、まずアセンブラとテキストエディタを用意しよう!
- 108 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 19:38:33 ]
- インプリメンテーションチャートは?
- 109 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 13:23:40 ]
- int n;
long double e,a,p; e=0;a=1;n=1; do { p=e;e+=a;a/=n;n++; } while (e != p); こんなのしかかけないヘタレな俺
- 110 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 18:35:11 ]
- アセンブリでおk
- 111 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 23:47:27 ]
- >>106を解こうとしてsrt除算の上位ビットのからの条件分岐が書けなかった俺は負け組
- 112 名前:デフォルトの名無しさん [2007/11/02(金) 11:10:15 ]
- アセンブラの勉強したくて本がほしいんだけど本屋に全然本が売ってないんだよ
あってもあんまよさそうな本が見つからない なんかお勧めのアセンブラの本教えてください
- 113 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 11:30:45 ]
- はじめて読む8086あたりでいいんじゃね?
古い本だけど、基本的なことはわかると思うよ
- 114 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 16:53:33 ]
- とりあえず入門用マイコンとしてそこそこのものなら、AVRのTinyあたり?
AVRマイコン活用ブック―オリジナル電子ゲーム&ロボット製作 →アマゾン:ttp://www.amazon.co.jp/AVRマイコン活用ブック―オリジナル電子ゲーム-ロボット製作-わかるマイコン電子工作-松原-拓也/dp/4885540011/ref=pd_bbs_sr_2/503-7396570-5979118?ie=UTF8&s=books&qid=1193988330&sr=8-2 AVRは(PICも)会社によって嫌われることがあるので、あくまで勉強用として。
- 115 名前:114 mailto:sage [2007/11/02(金) 17:05:00 ]
- >>114の補足
この本のプログラムはgccで書かれています。 >gcc -S ... のように -S オプションを付けてコンパイルするとアセンブラコードが吐き出されるので、 コードと対比させると勉強になると思います。
- 116 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 18:07:53 ]
- 他のコンパイラと違って-S付けてもソースコードと混成にならないのが惜しい
|

|