1 名前:デフォルトの名無しさん [2006/05/24(水) 01:43:34 ] アセンブラ全般に関するスレッドです。 【前スレ】 アセンブラ… ヽ(゚∀゚)ノフォーウ! pc8.2ch.net/test/read.cgi/tech/1132761638/ 過去ログは>>2 辺り
481 名前:デフォルトの名無しさん mailto:sage [2006/09/22(金) 03:38:12 ] 環境や前提条件をまず示してくれ。話はそれから。 おそらくブート時のロード処理だと見当はつくが。 或いは逆アセしてみて意図したコード(0x8000への絶対ジャンプ)に きちんと変換されたかを確認するとか。
482 名前:デフォルトの名無しさん mailto:sage [2006/09/22(金) 07:27:25 ] *0x8000だと、0x8000番地にある16ビットの値をアドレスとして処理する。 0x8000番地に飛ばすならjmp $0x8000が正解だと思う‥‥
483 名前:482 mailto:sage [2006/09/22(金) 07:52:23 ] >>480 のコードをちょっと修正。文法からGASを使っていると仮定。 バッファのアドレスを指定するときはBXレジスタも設定しないと駄目かと。 セグメント指定しているなら、セグメント間ジャンプで飛ばした方が確実。 MOVW $0x800, %AX MOVW %AX, %ES MOVW $0, %BX ; ES:BX = 0x800:0x0 MOVB $0x00, %CH MOVB $0x02, %CL MOVB $0x00, %DH MOVB $0x00, %DL MOVB $0x02, %AH MOVB $0x01, %AL INT $0x13 LJMP $0x800,$0
484 名前:デフォルトの名無しさん mailto:sage [2006/09/22(金) 12:32:15 ] >>481-483 サンクス。 >>481 すいません。 OS:FreeBSD6.1 アセンブラ:GCC その他:ld、objcopy エミュレータ:bochs 作っている物:ブートの最初の512byteのプログラム >>482 jmp $0x8000だとコンパイルエラーになります。 www.gnu.org/software/binutils/manual/gas-2.9.1/html_chapter/as_16.html の Absolute (as opposed to PC relative) call and jump operands must be prefixed with `*'. If no `*' is specified, as always chooses PC relative addressing for jump/call labels. を見て絶対アドレスでJMPする場合「*」が必要なのかなと思いました。
485 名前:デフォルトの名無しさん mailto:sage [2006/09/22(金) 13:08:06 ] >>482 「*」を付けた際の動作は、御指摘の通りでした。 解決できました。 ありがとうございました。
486 名前:463 ◆RMO61H2xHE mailto:sage [2006/09/22(金) 20:27:49 ] >>479 ご教示、ありがとうございます。とても助かりました。 今度は、こんな問題で引っかかっています。 eHllo, World としたいのですけど Helelo, Worldとなってしまいます! section .data; データセクションの定義 messagedb'Hello, World', 0Ah lengthequ$ -message; 文字の長さ section .text global _start _start: movedx, length; 文字列の長 movecx, [message] ; 以下の3行でmsgとmsg+1の内容を入れ換える xchgecx, [message+1]; mov[message], ecx; movecx, message; 出力する文字の指定 movebx, 1; ファイルハンドル(1=標準出力) moveax, 4; 出力(sys_wrigte) int0x80; システムコール,出力する moveax, 1; sys_exit movebx, 0; 終了ステータスコード int0x80; システムコール,終了する
487 名前:デフォルトの名無しさん [2006/09/22(金) 21:03:09 ] GNU asについて質問です。 lss 20+4(%esp), %esp と、ESPとSSに1命令で値をつめてるコードがあったのですが、 この20+4()ってのはどういう意味なんでしょうか?
488 名前:デフォルトの名無しさん [2006/09/22(金) 21:11:12 ] MMX の質問です pand mm0, mm1 を実行し結果がゼロになっても、ゼロフラグが立たないようです。 ゼロかどうかをチェックするにはどうしたらいいんでしょうか?
489 名前:463 ◆RMO61H2xHE mailto:sage [2006/09/22(金) 21:13:04 ] スペースが無視されたみたいなので、もう一回送ります。 section .data ; データセクションの定義 message db ' Hello, World ', 0Ah length equ $ -message ; 文字の長さ section .text global _start _start: mov edx, length ; 文字列の長 mov ecx, [message] ; 以下の3行でmsgとmsg+1の内容を入れ換える xchg ecx, [message+1] ; mov [message], ecx ; mov ecx, message ; 出力する文字の指定 mov ebx, 1 ; ファイルハンドル(1=標準出力) mov eax, 4 ; 出力(sys_wrigte) int 0x80 ; システムコール,出力する mov eax, 1 ; sys_exit mov ebx, 0 ; 終了ステータスコード int 0x80 ; システムコール,終了する eHllo, World としたいのですけど Helelo, World と表示されます!
490 名前:487 mailto:sage [2006/09/22(金) 22:01:16 ] コンパイルされたものをobjdumpでのぞいたら、 lss 0x18(%esp),%esp こういう風に変換されてました。 よく調べもせずに質問してすみませんでした。
491 名前:デフォルトの名無しさん mailto:sage [2006/09/22(金) 22:12:08 ] >>489 mov cl, [message+2] xchg cl, [message+3] mov [message+2], cl
492 名前:デフォルトの名無しさん mailto:sage [2006/09/22(金) 22:56:07 ] なんか 春だな・・・
493 名前:463 ◆RMO61H2xHE mailto:sage [2006/09/22(金) 22:56:18 ] >>491 ありがとうございます。 eHllo, Worldとなりました。アセンブリって意外とレジスタの動きが分かりやすいん ですね。 本や、ネットで検索しながらやってるんですけど、Linuxのnasmで 初心者に分かりやすい解説は、殆んどないんで困ってました。
494 名前:デフォルトの名無しさん mailto:sage [2006/09/22(金) 23:18:49 ] どっかにnasm本家のマニュアルの日本語訳があったはずだが。 あれで十分よ
495 名前:デフォルトの名無しさん mailto:sage [2006/09/22(金) 23:19:53 ] ってかmasmはMS公認で無料になったか。 イイジダイダナー
496 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/09/23(土) 05:38:45 ] >>488 MMX演算はフラグレジスタを更新しない。 いちど汎用レジスタに転送してから比較する必要がある。 0かどうかだけを判定するだけなら、たとえば packssdw mm0, mm0 movd eax mm0 test eax, eax
497 名前:デフォルトの名無しさん mailto:sage [2006/09/23(土) 18:56:59 ] Z80ですけど DAAってハーフキャリーは0になるの?それとも変化するの?どっち?
498 名前:デフォルトの名無しさん mailto:sage [2006/09/23(土) 20:05:47 ] 変化する
499 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 21:57:47 ] Hello, Worldを10回表示して改行したいんですけど、 下記のソースを弄ってみましたが、よく分からないので教えて頂けないでしょうか。 section .data msg db 'Hello, World', 0ah len equ $ -msg section .text global _start _start: mov eax, 4 ; 出力 mov ebx, 1 ;(1=標準出力) mov ecx, msg ; mov edx, len ; 文字列出力 int 0x80 ; 出力 doit: dec ecx ; ecxをデクリメントする jecxz endquit ; ecxがゼロならジャンプ jmp doit ; doitへジャンプ endquit: mov eax, 1 ;(sys_exit) mov ebx, 0 ; 終了ステータスコード int 0x80 ; 終了
500 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 22:49:24 ] >>499 それじゃ一回だけ表示された後、しらばく後かすぐに終了するだろ。 int 0x80 ; 出力 doit: dec ecx ; ecxをデクリメントする jecxz endquit ; ecxがゼロならジャンプ jmp doit ; doitへジャンプ このdoit以下何もやっていないと同じだぜ? なぜecxをデクリメントして0になったら終了になるん?何目的だ? たぶんint0x80は文字列表示機能だと仮定するなら、 ediにでも0xaを入れておいて、 dec edi jnz _start ← ゼロじゃなけりゃジャンプっての にすればええ。
501 名前:499 mailto:sage [2006/09/26(火) 23:28:28 ] >>500 > それじゃ一回だけ表示された後、しらばく後かすぐに終了するだろ。 その通りなんです。弄っているうちに わけわからなくなってしまい、 1回だけ表示するプログラムに戻したものを書き込みました。 >499 の投稿は下記のDOSのプログラムをLinux上で jecxz を使って同じような動作を 再現できないか試行錯誤の最中だったんです。 ; DOS プログラム bits 16 org 0x100 mov ah, 9 ; 文字列出力指定 mov dx, msg ;出力する文字列 mov cx, 10 ; cxレジスタの値を10にする doit: int 21h dec cx ; cxを1だけ減らす jcxz endquit ; cxがゼロならendquitへ jmp doit ; doitへジャンプ endquit: mov ah, 4ch mov al,0 int 21h msg db "Hello, World", 0dh, 0ah,"$"
502 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 23:44:57 ] システムコール呼ぶときecxレジスタ使ってるだろ? そんくらい気ずかん?(´・ω・`)
503 名前:デフォルトの名無しさん mailto:sage [2006/09/27(水) 01:45:08 ] >>501 答えは分かるがあえて書かない。自分で考える事が上達には大事だしな。 先ほど書いたようにdiあるいはsiをcxの代わりにカウンタとし、 dec di jnz また文字列出力する場所 ってな感じにするのが良い。 あとint21hの後のレジスタの値は保障できないと考えた方が一応はいいと思うから、 doitの位置を変えた方が確実だと思う。
504 名前:デフォルトの名無しさん [2006/09/27(水) 09:36:16 ] x86CPUで、32ビットの値を3倍するとき、 x = x * 3; と、 x = (x<<1) + x; はどちらが高速なんですか?
505 名前:デフォルトの名無しさん mailto:sage [2006/09/27(水) 10:02:43 ] >>504 スループットは上の方がいいが、 レイテンシは下の方がいい。 CPUによるけど。 どちらが速いかは周りの処理にもよる。 でも、x86ならこれが一番速いよ。 lea x,[x*2+x]
506 名前:デフォルトの名無しさん mailto:sage [2006/09/27(水) 15:00:54 ] ていうか、いまどきのコンパイラは 3倍するのはleaに最適化してくれますよ。
507 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/09/27(水) 22:23:36 ] Pen4だとこれでも速かったりwww mov edx, eax add eax, eax add eax, edx
508 名前:デフォルトの名無しさん mailto:sage [2006/09/28(木) 00:52:21 ] >>507 シフトが add の 8 倍遅い変態 CPU を持ち出すのは反則だと思いまつ。
509 名前:デフォルトの名無しさん mailto:sage [2006/09/28(木) 01:18:15 ] ペン4のALUは糞すぎるなw
510 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/09/28(木) 01:23:14 ] 依存関係を高いクロックによって解決するという手法は全てが間違いだった訳じゃないけど クロックを重視したデータキャッシュが小さすぎたりパイプラインが長すぎたり 熱すぎたりで、全体としてマイナス要素が大きかったのが敗因ですな。
511 名前:デフォルトの名無しさん [2006/09/30(土) 18:11:57 ] スタックを使って A B と表示させようと思うのですけど、ウマクいきません!? ご教示 お願いできないでしょうか。 section .text global _start _start: movdl, 0x41 ; "A" push dx call putchar pop dx mov dl, 0x42 ; "B" push dx call putchar pop dx mov eax, 1 ; sys_exit mov ebx, 0 ; 終了ステータスコード int 0x80 ; システムコール,終了する putchar: ; スタックの文字を出力する サブルーチン push esp mov ebp, esp sub esp, 0x40 ; ローカルスタックスベース mov ebx, [ebp+4] ; 最初のパラメータ mov dl, bl mov eax, 4 ; sys_write mov ebx, 1 ; ファイルハンドル(1=標準出力) mov ecx, esp ; 書き込むバッファ mov edx, 2 ; 文字出力することを指定 int 0x80 ; システムコール,出力する mov esp, ebp ; sub esp,0x40を取り消す pop esp ret
512 名前:デフォルトの名無しさん mailto:sage [2006/09/30(土) 18:27:46 ] 32bitモードでdxレジスタなんか使うなよ・・・ あと最初のパラメタは[ebp+4]じゃなくて[ebp+8]だボケ
513 名前:ボケ [2006/09/30(土) 19:15:48 ] >>512 早速のご教示ありがとうございます。 ご指摘のdxをedxとし[ebp+4]を[ebp+8]に直してやってみたのですけど、 結果は変わらず、何も表示されなくて ただ改行されただけでした。 Cの参考ソースはけっこうありますけど、アセンブルってほとんどないですね!
514 名前:デフォルトの名無しさん mailto:sage [2006/09/30(土) 20:05:55 ] >>513 最後に0x0aも出力してみれ。
515 名前:デフォルトの名無しさん mailto:sage [2006/09/30(土) 21:58:20 ] >mov ecx, esp ; 書き込むバッファ ここ間違っているのでは 既に40引いてしまっているのに・・・
516 名前:デフォルトの名無しさん mailto:sage [2006/09/30(土) 22:04:24 ] lea ecx,[ebp+8]とかじゃね?
517 名前:デフォルトの名無しさん mailto:sage [2006/09/30(土) 22:17:03 ] これはひでえ。釣り…なのか…?まあいいや。 putcharの先頭部分は push ebp ; espじゃねーぞ mov ebp, esp の間違い。それに伴ってretの前も pop ebp に修正。 sub esp, 0x40 では 0x40 も引く必要ない。0x4で十分。 「最初のパラメータ」コメントの次の mov dl, bl は何やってんのか意味不明。 ここは mov [ebp-4], ebx に変更。 putcharというからには出力文字数は1文字だろ。mov edx, 1 に修正。
518 名前:デフォルトの名無しさん mailto:sage [2006/09/30(土) 22:34:25 ] > Cの参考ソースはけっこうありますけど、アセンブルってほとんどないですね! だったらC言語で書いてみるべし。 /* putchar2.c */ #include <unistd.h> void putchar2(int ch) { write(1,&ch,1); } int main(void) { putchar2('A'); putchar2('B'); } そしてこいつを -S スイッチつけてコンパイルしる。 $ gcc -S putchar2.c コンパイラがどんなコードを吐くか、自分のものと見比べるべし。 最適化オプションも併せて指定するといいかもな。
519 名前:デフォルトの名無しさん mailto:sage [2006/09/30(土) 22:37:26 ] gccの最適化は最初は知らないほうがいいんじゃないかw
520 名前:デフォルトの名無しさん mailto:sage [2006/09/30(土) 22:40:35 ] どうして?ちょっとだけでいいから教えて・・
521 名前:デフォルトの名無しさん mailto:sage [2006/09/30(土) 22:48:43 ] そしてICCとか最近のVC++で最適化コンパイルしてしまって余計混乱すると。
522 名前:デフォルトの名無しさん mailto:sage [2006/09/30(土) 22:53:44 ] こんなガリガリのコードじゃたいして最適化できねぇw putchar2はwriteをコールするだけだから関数の存在が消えてしまう可能性はあるが。 >>520 高度な最適化コンパイラは凡人の考えの及ばぬような超変形型ロジックを組むことがあるから。
523 名前:ボケ mailto:sage [2006/09/30(土) 22:59:17 ] >>517 釣できるほどのウデがあればいいんですけど… 貴方の仰る通り、>511の投稿には誤りがたくさんありました。 言われた通りにやったら AB と表示されました! 改行はしないみたいですけど、 改行は組めますので、後は簡単です。 Thanks
524 名前:デフォルトの名無しさん mailto:sage [2006/09/30(土) 23:37:48 ] >>522 ふ〜ん
525 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 01:50:05 ] >>522 コンパイラ程度の最適化が超変形? じゃあ人が書いたコードは読めねぇなw
526 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 02:10:08 ] いや、人間様がそれ以上にド汚い変形かますことができるのも確かだが、 きょうびのコンパイラが超変形かますのは事実だろ。 何を噛み付いてるんだ。 カルシウム足りないのか。
527 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/10/01(日) 02:25:38 ] i *= 32; を add eax, eax; add eax, eax; add eax, eax; add eax, eax; add eax, eax; に展開するコンパイラとかな。
528 名前:デフォルトの名無しさん [2006/10/01(日) 02:30:21 ] そんな大した事無いレベルの最適化でグダグダ言うなよ
529 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 02:39:09 ] VC++やICCの定数除算の最適化はなかなかエグかった気がするが
530 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 03:04:16 ] 漏れはVC2005のたらい回し関数でたまげた。
531 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 03:36:33 ] >>527 GCCでは無数にある最適化オプション組み合わせていくら頑張ってもシフトだった。 -O0ですらシフトだったw VC++のリリースコンパイルでもシフトだから、それが最善じゃないのか?
532 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 05:26:38 ] mov eax,dword 051eb851fh imul ecx sar edx,byte 005h mov eax,edx shr eax,byte 01fh add edx,eax; / 100 これとか実行してみるまで何やってるかわからなかった(VC6)。
533 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 05:38:03 ] >>527 いや、それ普通。 VCのそれは、シフトが異常に遅い某CPUに配慮したものと思われ。 多分だけど。
534 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 09:07:13 ] P○n4は*32でもシフトより加算の方が早いのか?w
535 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 09:27:21 ] >>534 ちょっと上くらい読めや>507-509
536 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/10/01(日) 14:54:18 ] Pen4ではshlのレイテンシは4クロック、addは0.5クロック 依存関係チェインが深い場合は加算を繰り返した方ほうが早い VCじゃなくて、ICCの-QxWとか-QxNとかのPen4専用オプションだったような >>532 除算はクロック数やたらかかるから定数積算とシフトに置き換えるのは常套手段
537 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 17:29:21 ] 常套手段て…そういう裏技があるのなら標準でALUにそのロジックを積んで もらった方がどれだけわかりやすいことか。 あるいは除算命令でこのシーケンスと同じμop生成するとか。 書きたいことはまだあるけどこれ以上はちょっとスレ違いになるので遠慮しよう。
538 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 17:53:12 ] いや、除算を他の演算に置き換えるロジックってすげー大変なんだが。 何で割るかによって全く違うロジックになるから。 そんなもんにトランジスタ突っ込む余裕なんかない
539 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 18:33:31 ] >>532 は>>529 と繋がっていたのか、気づかなかった。 定数除算限定で、しかも最適化のタイミングはコンパイル時じゃないといけない 程度に複雑なアルゴリズムなのか。 随分と頓珍漢なことカキコんじまったな(恥
540 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 23:19:27 ] テキストエディッタで.asmファイルを作成してコマンドプロンプトでアセンブルしようと思ったのですがうまくいきません。 ml〜コマンドは合ってるはずなのですが。 知恵をください。 XPSP2です
541 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 23:23:42 ] >>540 それだけの情報で何かわかると思ってんのか。 せめてエラーメッセージくらい貼れよ。
542 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 23:31:03 ] 'ml' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ってなります。
543 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 23:32:22 ] >>542 アホか。パス通してないだけでないか。
544 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 23:46:16 ] 先生できませnorz
545 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 05:03:25 ] アセンブラはちゃんとインストールされてるのか? 質問から察するに、それすら出来ていなさそうな気がする。 WinXPのDOS窓からの操作なら、DOS窓開いたらまずこのコマンドを打ち込む。 > set Path=%Path%;(ml.exeのあるディレクトリのパス) 開くたびにこれを入力するのが面倒くさいならバッチファイルに書くなり GUIから環境変数に登録するなり何なりと。
546 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 20:38:09 ] 先生無事できますた。ありがとん
547 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 10:06:06 ] 割り算が理解できん。 なんであんなことになってんの?
548 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 11:35:36 ] その割り算は>>532 のことか? 1ワードが無限のビット長だとすると、原理的には x / 100 == (x / 100) << 32 >> 32 という当たり前の恒等式を巧みに利用する。 ここでは 2のx乗 を 2^x と表現するので、そのつもりで。 x回の左シフトは、算術的には *(2^x) を意味する。 その性質を利用すると、右辺は => x / 100 * (2^32) >> 32 => x * ((2^32) / 100) >> 32 と変形できる。最適化のとき予め (2^32) / 100 を計算しておく。 この定数をnとおくと、除算の商は (x * n) >> 32 で求めることができる。 つまり定数の除算は乗算とシフトに変換できるというわけ。 実際はビット長が無限大ということはないし符号も考慮しないといけないので これよりも少し複雑な処理になる。
549 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 12:14:56 ] 精度が落ちていいなら inc ecx mov eax, dword 028f5c28h imul ecx でedxに解が得られないかな。
550 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 12:35:00 ] 無符号整数除算ならね。
551 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 20:35:59 ] ん?無符号型ならimulじゃなくてmulじゃね?
552 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 12:57:52 ] このスレが適当かどうかわからないんですが。 VC++の最適化OFFで生成した以下の絶対値を求めるコード cdq xor eax,edx sub eax,edx これに対応するC/C++のコードがわかるかたいませんか?
553 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 13:25:58 ] >>552 インラインアセンブラでも使ってない限りも最適化 Off ではそのコードは 出てこないと思うんだが・・・。 abs() を呼んでれば最適化 On の時そのコードになるよ。
554 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 13:59:52 ] >>553 /Oiオプションでabsが上記の命令に展開されたのを確認しました。 最適化はOFFだと思ってたのですが、一部だけ有効になってるのかもしれません。 (バイナリとPDBファイルしかないので詳細不明) ありがとうございました。
555 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 17:48:43 ] >>554 /Oiって思いっきり最適化オプションの一部だろ。
556 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 18:26:42 ] >>552-555 ワロタw
557 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 09:14:28 ] OiOi
558 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 13:59:22 ] RS-232C?
559 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 15:34:13 ] どっちかっつーと丸井
560 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 16:21:15 ] 丸井って、クレジット詐欺って意味でしょ?
561 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 22:19:52 ] >>560 訴訟の元ハケーン
562 名前:デフォルトの名無しさん [2006/10/12(木) 22:34:02 ] 訴訟あげ!?
563 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 13:55:12 ] 16ビットしか知らんが、みんな何に使ってるの? やっぱインラインかな
564 名前:デフォルトの名無しさん [2006/10/13(金) 15:49:03 ] C言語からアセンブラ語に変換するにはどうすればいいですか?? 分かりやすくお願いします.
565 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 15:54:22 ] コンパイラにアセンブラ語で出力するようにオプションを付ける。
566 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 15:54:28 ] GCCなら-Sとか
567 名前:デフォルトの名無しさん [2006/10/13(金) 15:58:20 ] それはMPLAB IDE上でできますか??
568 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 16:07:08 ] アセンブラ語て…新語捏造するなやorz 本当はアセンブリ言語ってんだ。俗的にアセンブラでも通用するが。
569 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 16:10:51 ] お前タン、実はマルチでつか?そんなことしたら駄目だお(AAry
570 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 17:20:51 ] >>568 JISでは「アセンブラ言語」
571 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 18:50:01 ] まじで?!
572 名前:デフォルトの名無しさん [2006/10/14(土) 16:55:38 ] 今学校の授業中です… キーボードから3個の整数a、b、cを入力してスタックにセットし、これらの整数のうち最大整数をディスプレイに出力せよ。ただし、最大整数をセットするための変数maxもスタック上に作ること。 これが出来ないと帰らせともらえませんが、全くわかりません。どなたか出来る方いましたらよろしくお願いします。
573 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 17:21:41 ] よし!19時ぐらいまで粘れ!! その時間位になれば、わかる人がここに来るぞ、たぶん。
574 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 17:40:28 ] >>572 開発環境、動作環境を書け。 話はそれからだ。
575 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 18:05:18 ] >>572 どのアセンブラで、どのCPUですか
576 名前:デフォルトの名無しさん [2006/10/14(土) 19:18:17 ] 19時を過ぎたのですがそろそろ教えてくれません?どうかお願いします。
577 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 19:23:08 ] >>576 いやだから教えようにも ・・まぁなんだ、頑張れ
578 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 19:35:56 ] >>576 >>574-575
579 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 19:54:20 ] >>576 変数って何桁でもいいの?
580 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 22:00:50 ] しかし、キーのスキャンやら画面表示やらはHWがわからんことにはどうしようもないだろ。 まあわかったところでこんなところに書き込めるようなコード量に収まるとも思えんがw
581 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 22:22:37 ] >>580 無能自慢はいいから