トップページ⇒tech
987コメント273KB

アセンブラ… Part 12

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/08/14(火) 17:18:08

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

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

0002デフォルトの名無しさん2007/08/14(火) 17:18:50

【過去ログ】
アセンブラ… ( ゚д゚)ウッウー (Part11)
http://pc11.2ch.net/test/read.cgi/tech/1174825173/
アセンブラ… (゜□゜) ↑アッー!↓ (Part10)
http://pc11.2ch.net/test/read.cgi/tech/1148402614/
アセンブラ… (0w0)ウェーイ (Part9)
http://pc8.2ch.net/test/read.cgi/tech/1115188369/
アセンブラ… (´・∀・`)ヘー (Part8)
http://pc8.2ch.net/test/read.cgi/tech/1101390110/
アセンブラ… (°Д°)ハァ? (Part7)
http://pc5.2ch.net/test/read.cgi/tech/1093519463/
アセンブラ… (;´Д`) ハァハァ (Part6)
http://pc5.2ch.net/test/read.cgi/tech/1087897801/
アセンブラ… (*´д`*)アハァ… (Part5)
http://pc5.2ch.net/test/read.cgi/tech/1076157613/
アセンブラ… (゚д゚)ウマー (Part4)
http://pc2.2ch.net/test/read.cgi/tech/1060928704/
アセンブラヽ(`Д´)ノモルァ (Part3)
http://pc2.2ch.net/tech/kako/1040/10402/1040297337.html
アセンブラヽ(`Д´)ノモルァ (Part2)
http://pc3.2ch.net/tech/kako/1016/10169/1016991911.html
アセンブラ… (・∀・)イイ! (Part1)
http://pc.2ch.net/tech/kako/1002/10022/1002267809.html
0003デフォルトの名無しさん2007/08/15(水) 19:09:11
アセンブラ… Part 12  (ρΩρ) ニョローン
0004デフォルトの名無しさん2007/08/15(水) 19:10:11
nop
0005デフォルトの名無しさん2007/08/15(水) 19:12:43
hlt  ; 恒例の
0006デフォルトの名無しさん2007/08/15(水) 19:17:25
sll r0, r0, r0
0007デフォルトの名無しさん2007/08/16(木) 15:34:25
AAが無いぞ、どうしたの?
0008デフォルトの名無しさん2007/08/16(木) 15:37:47
>>1 のせい
0009デフォルトの名無しさん2007/08/16(木) 15:44:25
>>8のせい
0010デフォルトの名無しさん2007/08/16(木) 15:48:51
一か八か
0011デフォルトの名無しさん2007/08/16(木) 16:00:40
だれがうま
0012デフォルトの名無しさん2007/08/16(木) 22:17:34
ん?ダンゴさんの許可は?
0013デフォルトの名無しさん2007/08/16(木) 22:24:47
団子は当スレから出るな
いいか?
0014デフォルトの名無しさん2007/08/16(木) 22:41:17
親が経営者で愚民を使う教育しか受けていない
ダンゴさんになんてことを!
0015デフォルトの名無しさん2007/08/16(木) 22:45:11
アセンブラブラ〜♪(石丸電気のメロディーで)
0016デフォルトの名無しさん2007/08/16(木) 22:50:17
かわいそうな愚民未満、団子。
仕送りを20万円くれるパパに謝りなさいよ。
0017デフォルトの名無しさん2007/08/16(木) 23:33:34
そろそろ団子さんに愚民どもをピシッとシメてもらい所だな。
親が経営者であるところをちゃんと示してもらわないと。
0018デフォルトの名無しさん2007/08/22(水) 21:25:32
これと
xchg edx, [eax]
これ
mov ecx, [eax]
mov [eax], edx
mov edx, ecx
どっちが早い
0019デフォルトの名無しさん2007/08/23(木) 00:37:41
>>18
前者の方が早い。
速いかどうかはしらね。
0020デフォルトの名無しさん2007/08/23(木) 08:56:52
メモリとのxchgはロックがかかって高価だったような
0021デフォルトの名無しさん2007/08/23(木) 14:46:28
ループ内で行っていた場合、
後者だと命令が伸びてフェッチ回数が増える可能性があって、
それが効いてくる可能性はあるかもしれん。
0022デフォルトの名無しさん2007/08/23(木) 22:12:34
xchgでバスロックがかかる点に比べれば、他の要素など微々たる差
0023デフォルトの名無しさん2007/08/26(日) 22:43:25
>>18
下のは一体何をやってるんだ?
0024デフォルトの名無しさん2007/08/26(日) 23:14:20
上が
edx <-> *eax
下が
ecx <- *eax
*eax <- edx
edx <- ecx
でどちらもedxの内容とeaxの指すメモリの内容を交換してる。
下は命令が増えているのとecxを余計に消費している。
上は命令の実行中に他の要因でeaxの先が変化しない事を保証しているのでロックがかかる。
0025デフォルトの名無しさん2007/08/28(火) 02:59:41
他の言語なら最初に "Hello world" とかあると思うんだけど
アセンブラならまず何を書けばいいの?
0026デフォルトの名無しさん2007/08/28(火) 03:31:42
ダンゴさんの聡明なるアドバイスが望まれるところだ
0027デフォルトの名無しさん2007/08/28(火) 08:40:58
        mov     ah, 09
        mov     dx, msg
        int     21h 
        mov     ax, 4C00h
        int     21h
msg     db      'Hello, world!$'
0028デフォルトの名無しさん2007/08/28(火) 19:40:20
ナツカシス
0029252007/08/28(火) 20:00:25
>>27
ありがと
んで、コンパイルなんだけどインストールされてるアセンブラ?って呼べばいいのかな、調べたら
yasmとnasmってのがあった。OSはLinux使ってますがLinux歴2ヶ月なんでへたれなんです。
アセンブラのコンパイルはどうやるんでしょうか?
Cの初心者向けサイトは多かったけどアセンブラは少なくて。
よろしくです。
0030デフォルトの名無しさん2007/08/28(火) 20:17:26
>>29
Linuxなら>>27はだめだな… MS-DOS割り込み使ってるし
0031デフォルトの名無しさん2007/08/28(火) 20:30:04
そこでqemuですよ
0032252007/08/28(火) 20:52:06
そうなんすか……。
では、>>27のようなコードをLinux向けに自分で書きたいので
>>27で使ってる命令文の意味などを理解したいです。
ここでダメならどこか誘導してくれるかサイトを教えていただけるとありがたいです。
0033デフォルトの名無しさん2007/08/28(火) 21:10:23
int 21 はMS-DOS割り込み
DOS時代のソフトを逆汗するといっぱい出てくる
ahレジスタの数字で呼び出す機能を指定するんだが、
09は文字列を標準出力にアウトプットしてくれる。
このとき文字列のアドレスをdxレジスタに入れておく。
で、文字列は $ で終わっている必要がある。(Cのヌル終端みたいなもんだ)
4Cでint21するとプログラムを終了する
でも俺はint20が好きだ大好きだお前もint20を使え
0034デフォルトの名無しさん2007/08/28(火) 22:05:36
Linuxでアセンブラっていうと真っ先に浮かぶのはgasだなあ
0035デフォルトの名無しさん2007/08/28(火) 22:26:36
> でも俺はint20が好きだ大好きだお前もint20を使え
俺はCOM限定だけど ret だな。

0036デフォルトの名無しさん2007/08/28(火) 23:34:35
男なら黙ってhlt
0037デフォルトの名無しさん2007/08/29(水) 01:26:53
勝手に止めるな
0038252007/08/29(水) 02:52:06
>>33
解説ありがとうございます
パッケージ管理で手間取ってしまいまして返事が遅くなりました。
>>27氏と>>33氏の書き込みを参考に理解していこうと思います。
もういちど勉強になりそうな本やサイトを探して>>27を書き換えれるよう取り組んでみます。
では、今日は遅いのでこれにて失礼します。
スレの皆さんありがとうございました。またよろしくです。
0039デフォルトの名無しさん2007/08/29(水) 06:54:40
この辺でも参考にしとけ
http://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
0040デフォルトの名無しさん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
0041デフォルトの名無しさん2007/09/01(土) 00:22:18
>>40
debug.exeでCOM形式の実行ファイルを作ってるな。
ほんと懐かしい。
0042デフォルトの名無しさん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の引数を省略しただけですね。
0043デフォルトの名無しさん2007/09/01(土) 00:48:17
俺もなんでnopがワザワザあるのか分からんw

あとこの例だと-eで十六進データを入力しているけど
俺なら文字列を入れるのにはDB擬似命令使うなあ。
0044デフォルトの名無しさん2007/09/01(土) 00:58:20
-eでドットがいくつかあるけど、スペースだと思えばいいんでしょうか?
0045デフォルトの名無しさん2007/09/01(土) 01:01:53
これは入力じゃなくて、画面表示をそのままコピーしてるだけ。
ドットは入力の催促で、
古い値.
って表示されるから、数値を入れて、スペースを入れると次のアドレスに移動する。
0046デフォルトの名無しさん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のハイフンは何でしょうか?熊さんのバグ?
0047デフォルトの名無しさん2007/09/01(土) 01:17:28
    LD    C, 9
    LD    DE, MSG
    CALL   5
    RET
MSG: DB    'Hello, world!', 0DH, 0AH, '$'
0048デフォルトの名無しさん2007/09/01(土) 01:20:28
>>47氏へ、、、MASMじゃまず無理
0049デフォルトの名無しさん2007/09/01(土) 01:26:57
>>46
8バイト目の区切り。
0050デフォルトの名無しさん2007/09/01(土) 01:30:20
>>49
あっあー!そうだったんですね、ありがとうございます。
$が文字終端ですね。2chの前のFという文字とnopが未解決ですが満足しました。
0051デフォルトの名無しさん2007/09/01(土) 01:33:24
>>48
つ HIT-88
0052デフォルトの名無しさん2007/09/01(土) 01:39:19
>>50
Fは、入力前のごみデータだろ。って、>45に書かれているじゃん。
nopは作者の癖かなんかじゃないか? コード終端であることを示すために入れたり、
コード領域はnopで埋め尽くしておいたり、色々流儀があったからね。
0053デフォルトの名無しさん2007/09/01(土) 01:56:24
>>52
そんな癖があるんですか。それは知りませんでした。
>45が分かりませんでした。今もまだ分かっていません。
0054デフォルトの名無しさん2007/09/01(土) 02:02:09
>>53
コマンドラインで「debug」と入力して「-」が表示されたら「e 110」と入力すればわかる。
0055デフォルトの名無しさん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
-_
--
これで雰囲気をつかんでくれ。
0056デフォルトの名無しさん2007/09/01(土) 02:29:37
>>55
やったー!ありがとうございます。古い値.の意味が分かりました。
0057デフォルトの名無しさん2007/09/01(土) 02:40:52
しかし
こんな旧時代の遺物を教材に使うのってどうよw
0058デフォルトの名無しさん2007/09/01(土) 03:26:45
MASMの脳内発音はマズムですか?
0059デフォルトの名無しさん2007/09/01(土) 03:30:09
自分は えむあすむ
0060デフォルトの名無しさん2007/09/01(土) 03:42:39
自己完結している脳内発音を尋ねることに意味があるのか?
コミュニケーションのために実際の発音を尋ねるのならまだ分かるが。
0061デフォルトの名無しさん2007/09/01(土) 12:08:19
NASM ナズム
0062デフォルトの名無しさん2007/09/01(土) 12:34:42
YASM 休む
0063デフォルトの名無しさん 2007/09/01(土) 16:22:15
最近アセンブリを学ぼうと思い「高級プログラマのためのアセンブラ入門」
と言う本を買ったのですが内容が16ビットプログラミングでの.comファイル
作製が主なのです。
それで、VS2005のMASMで16ビットリンカを適用さしてコマンドラインから
comファイルを作る方法は解ったのですが、いまいち本の内容を理解しきれてない
と思いデバッガでステップインしていってどう動いているのかを知りたいのですが
VSでどういう風に設定したらasmファイルのみでデバッグ出来るのかが
わからないです。
もし出来る方法があるなら、教えていただきたいです。
VS使うよりも良い開発環境があるなら、そちらも是非教えて頂きたいです。
なにとぞよろしくお願いします。
0064デフォルトの名無しさん2007/09/01(土) 17:50:42
>>63
つ Emu8086
http://www.emu8086.com/
0065デフォルトの名無しさん2007/09/01(土) 18:53:06
いまどきCOMモデルもないだろ。
0066デフォルトの名無しさん2007/09/01(土) 19:01:28
>>63
C> debug hoge.com
0067デフォルトの名無しさん2007/09/02(日) 10:43:38
高級プログラマって表現はどうなのかと思った
「高級言語プログラマのための たしなみアセンブラ」
ぐらいが妥当だろ
0068デフォルトの名無しさん2007/09/02(日) 11:13:38
これのことだろ。

林晴比古 「高級言語プログラマのためのアセンブラ入門」
ttp://www.sbcr.jp/books/products/detail.asp?sku=4797332816
0069デフォルトの名無しさん2007/09/02(日) 18:04:17
TASM タズム
0070デフォルトの名無しさん2007/09/03(月) 00:34:13
LASM ラスム
0071デフォルトの名無しさん2007/09/03(月) 00:39:34
LASM えるあすむ
MASM えむあすむ
NASM えぬあすむ
TASM ていあすむ
0072デフォルトの名無しさん2007/09/03(月) 00:58:23
MASM まさみ
0073デフォルトの名無しさん2007/09/03(月) 10:55:56
MASM マシン
0074デフォルトの名無しさん2007/09/05(水) 00:26:52
int 80h とか int 21h に至るまでをまずやれれば
0075デフォルトの名無しさん2007/09/05(水) 22:11:27
PEからELFに変換できるツールってありますか?
0076デフォルトの名無しさん2007/09/05(水) 23:36:09
call 5とか。
もう使わないか
0077デフォルトの名無しさん2007/09/08(土) 10:15:05
>>75
PEはCOFFみたいなものだから
多少自分で前処理する必要があるかもしれないけど
ツールはある
しかし変換しても使えないと思うが
0078デフォルトの名無しさん2007/09/09(日) 15:59:22
binutilsのobjcopyをほげれ。
0079デフォルトの名無しさん 2007/09/12(水) 22:59:29
アセンブラ入門のホームページを見ながら勉強してるんですが
http://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が実行されるか解りません。
すいませんが、どなたか教えていただけないでしょうか。
お願いします。
0080デフォルトの名無しさん2007/09/12(水) 23:45:57
>>79
masmがBUFFERの全領域を0で初期化しているようだね。
0081デフォルトの名無しさん2007/09/13(木) 09:12:23
( ゚∀゚)<プップー
OSがdataセクションを初期化してる。
0082デフォルトの名無しさん2007/09/13(木) 13:56:42
行儀の悪いプログラムだな
0083デフォルトの名無しさん2007/09/13(木) 14:08:48
>>79 の記述だとmasmならオブジェクトファイルの段階で128バイトの0が確保されるだろ
OSが初期化するわけではない
ロードはするけど
0084デフォルトの名無しさん2007/09/13(木) 14:23:44
セキュリティのためにOSがやってんじゃなかったのか
0085デフォルトの名無しさん2007/09/13(木) 23:25:08
>>81
>>81
>>81
0086デフォルトの名無しさん2007/09/14(金) 13:19:50
なぜ、初期値を持つdataセクションをOSが初期化すると思うのか?
0087デフォルトの名無しさん2007/09/14(金) 18:16:40
dataセクションでもexeに無い部分はOSが初期化するんじゃね?
0088デフォルトの名無しさん2007/09/14(金) 18:20:51
obj ダンプすりゃわかる 素人だらけw
0089デフォルトの名無しさん2007/09/14(金) 18:41:40
俺は、
仕様上、
誰かが確実に初期化すると定められたものがあっても、
そういうものに依存するのが嫌なので
自分で必ず初期化するのである。
0090デフォルトの名無しさん2007/09/14(金) 18:45:02
C の static に全部 = 0; とか書かかないと気持ち悪いタイプ?
0091デフォルトの名無しさん2007/09/14(金) 18:47:46
何か
問題
あるかね
0092デフォルトの名無しさん2007/09/14(金) 18:57:49
分かりやすく言えば、俺が江頭だとして
「この人は佐藤ですからヒップアタックしてください」と
人からアイデンティファイされたものはダメである。
俺が、この目と足でチェックしてはじめて、
「ぅお前は!佐藤だー!!」(ででででーでででででででで)と、
ヒップアタックする気になるのだ。
0093デフォルトの名無しさん2007/09/14(金) 20:57:57
staic int i;
if(i) i = 0;

これね
0094デフォルトの名無しさん2007/09/14(金) 21:05:09
それは
ちがう
だろう
0095デフォルトの名無しさん2007/09/14(金) 22:39:18
MASMの
すごい
初期化
0096デフォルトの名無しさん2007/09/15(土) 02:22:32
objをダンプしてexeの中身がわかる人がいるのはこのスレですか?
0097デフォルトの名無しさん2007/09/15(土) 04:00:24
アセンブラと機械語は違うけどね。
0098デフォルトの名無しさん2007/09/15(土) 13:28:19
初期化しない値は、.dataではなく.data?に書く。
0099デフォルトの名無しさん2007/09/15(土) 17:11:23
.bss
0100デフォルトの名無しさん2007/09/18(火) 15:25:32
age
0101デフォルトの名無しさん2007/09/19(水) 01:13:41
>>96
君はわからんのかね
■ このスレッドは過去ログ倉庫に格納されています