1 名前:デフォルトの名無しさん [2007/08/14(火) 17:18:08 ] アセンブラ全般に関するスレッドです。 【前スレ】 アセンブラ… ( ゚д゚)ウッウー pc11.2ch.net/test/read.cgi/tech/1174825173/
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付けてもソースコードと混成にならないのが惜しい
117 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 20:51:27 ] どのコンパイラが?
118 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 00:09:16 ] >>117 横レスだけどgccで混合できんの?
119 名前:117 mailto:sage [2007/11/03(土) 01:32:44 ] >>118 >>116 ゴメン。今意味が分かった。
120 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 01:40:09 ] 混成表示するにはobjdumpです
121 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 03:03:54 ] turbo c++ exploreからtasm32.exeを入手できたんですが、 tasm32のドキュメントってどこかにないでしょうか?
122 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 03:18:26 ] >>121 ttp://citforum.yspu.yar.ru/programming/tasm3/index.shtml
123 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 03:22:32 ] >>122 ロシア語読めねえよアホ
124 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 03:32:19 ] ロシア語で考えるんだ!
125 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 03:50:19 ] しかし、MASMが合法的に無料で手に入る時代にtasm32を使う理由って一体・・・。
126 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 04:41:20 ] Idealモードフェチの人なんだよきっと
127 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2007/11/03(土) 11:05:47 ] NASMが64ビット対応してるよ。SSE4.2もAMD SSE5も吐けるよ
128 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 11:06:01 ] >>125 相変わらず何かのSDKの中について来るの?
129 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2007/11/03(土) 11:09:43 ] >>128 www.microsoft.com/downloads/details.aspx?FamilyId=7A1C9DA0-0510-44A2-B042-7EF370530C64&displaylang=ja
130 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 22:08:08 ] >>121 こんなのみつけた ttp://www.phatcode.net/downloads.php?id=308&action=get&file=pasmug.pdf ttp://lzasm.hotbox.ru/ によるとTASM5.0のcloneらしい
131 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 23:39:04 ] >>129 thx Linkerとかはどうしろって?w
132 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2007/11/05(月) 00:11:03 ] 普通にVC++のリンカ使いましょう。Expressならタダだし。
133 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 15:34:12 ] 課題で質問があるのですが、Formatのような感じで 文字列を表示させるにはどのようにしたらよいでしょうか? PUSH EBP MOV EBP,ESP SUB ESP,104 MOV EAX,DWORD PTR SS:[EBP+C] AND DWORD PTR SS:[EBP-4],0 MOVZX ECX,BYTE PTR DS:[EAX+F] PUSH ECX ; /<%02X> MOVZX ECX,BYTE PTR DS:[EAX+E] PUSH ECX ; |<%02X> MOVZX ECX,BYTE PTR DS:[EAX+D] PUSH ECX ; |<%02X> MOVZX ECX,BYTE PTR DS:[EAX+C] PUSH ECX ; |<%02X> MOVZX ECX,BYTE PTR DS:[EAX+B] PUSH ECX ; |<%02X> MOVZX ECX,BYTE PTR DS:[EAX+A] PUSH ECX ; |<%02X> MOVZX ECX,BYTE PTR DS:[EAX+9] PUSH ECX ; |<%02X> MOVZX ECX,BYTE PTR DS:[EAX+8] PUSH ECX ; |<%02X>
134 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 15:35:08 ] MOVZX ECX,WORD PTR DS:[EAX+6] PUSH ECX ; |<%04X> MOVZX ECX,WORD PTR DS:[EAX+4] PUSH ECX ; |<%04X> PUSH DWORD PTR DS:[EAX] ; |<%08X> LEA EAX,DWORD PTR SS:[EBP-104] PUSH testtest.0044AD6C ; |Format = "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}" PUSH EAX CALL DWORD PTR DS:[<&USER32.wsprintfA>] ; \wsprintfA MOV ECX,DWORD PTR SS:[EBP+8] ADD ESP,34 LEA EAX,DWORD PTR SS:[EBP-104] PUSH EAX CALL testtest.0042D903 MOV EAX,DWORD PTR SS:[EBP+8] LEAVE RETN 8
135 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 15:42:22 ] Cで書いて、コンパイラが吐くコード見れば?
136 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 17:12:21 ] 上の2レスがたぶんそうだとおもう
137 名前:アセンブラ初心者 mailto:sage [2007/11/05(月) 21:15:38 ] いきなり質問失礼します。 8085で、 [8091h] [8090h] ←[8080h]*2+[8081h] 和を16ビットで求める(分岐命令を使用してもよい) 16ビットで求めるという意味がいまいちわかりません。 どなたか解答お願いします。
138 名前:133,134 mailto:sage [2007/11/05(月) 21:54:11 ] >>135 レスありがとうございます。 一応Cで書くのも考え試したのですがなにぶんアセンブラは素人なものでして…。 PUSHで変数をスタックして上から開いているんだろうなぁっとまでは なんとなく理解できたのですがCで書いたらエラー吐きまくりで… できればどなたかヒントか一部サンプルを書いてもらえないでしょうか?
139 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:55:23 ] 「8ビット×2+8ビット」の結果は値によって8ビットじゃオーバーフローするじゃん。 だから16ビットで演算して結果を8090-8091H番地に格納すんだろ。
140 名前:アセンブラ初心者 mailto:sage [2007/11/05(月) 22:08:58 ] >>139 さっそくのレスありがとうございます。 あ、何となくわかったようなきがしました。 LDA 8080h アキュムレータが8080h になって ADD A アキュムレータが8080h*2になって MOV M 8080h*2をHLレジスタにコピー LDA 8081h アキュムレータに8081hをロードして STAX D 8081hをDEレジスタに格納して DAD D 8080h*2+8081hをHLレジスタにいれて SHLD 8090h [8091h][8090h]に8080h*2+8081hを格納 って感じですかね?
141 名前:アセンブラ初心者 mailto:sage [2007/11/05(月) 22:12:24 ] ↑ 見にくかった。 LDA 8080h アキュムレータが8080h になって ADD A アキュムレータが8080h*2になって MOV M 8080h*2をHLレジスタにコピー LDA 8081h アキュムレータに8081hをロードして STAX D 8081hをDEレジスタに格納して DAD D 8080h*2+8081hをHLレジスタにいれて SHLD 8090h [8091h][8090h]に8080h*2+8081hを格納
142 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 22:12:38 ] それだとADD A(×2)の時点でオーバーフローすることがある。 が、まぁだいたいそんな感じだ。
143 名前:アセンブラ初心者 mailto:sage [2007/11/05(月) 22:13:41 ] 3番目は MOV Mではなく MOV M,Aでした。
144 名前:アセンブラ初心者 mailto:sage [2007/11/05(月) 22:16:10 ] なるほど。ありがとうございます。 今日知人に教えてもらうと、 LDA 8080h MOV L,A MVI H.0 DAD H LDA 8081h MOV D,A MVI E,0 DAD D SHLD 8090h ↑のような感じだったんですがこれでもあっているのですか?
145 名前:アセンブラ初心者 mailto:sage [2007/11/05(月) 22:19:09 ] ↑の下から3番目のMVI E,0 は MVI D,0だったかも
146 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 22:27:26 ] >>145 なら、MOV D,A も MOV E,Aだな。 8085のニモニックよくしランが、 全部16ビットのHL,DEで演算してるようだから多分合ってんじゃね。 蛇足だが、 >>141 の方法で、ADD A後、CフラグがONならHに+1すればOK。 多分設問の「分岐命令を使用してもよい」はそれを期待していると思われる。