トップページ⇒tech
1001コメント328KB

アセンブラの宿題質問スレ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/10/18(水) 00:04:05
アセンブラの宿題ができないときに、
アセンブラ好きのお兄さんに尋ねるスレ。

・必ずCPUの名前を書くこと!
・情報を小出しにしない。書ける情報は全て書いた方が得だよ。
0666 ◆0uxK91AxII 2007/05/13(日) 00:07:44
あまりにもthreadの趣旨から外れた投稿を行う>>665は滅ぶべきだね。
0667デフォルトの名無しさん2007/05/13(日) 01:18:16
>>664
んなこと誰も訊いていない
0668デフォルトの名無しさん2007/05/13(日) 01:40:16
>>667
>>661
0669デフォルトの名無しさん2007/05/13(日) 09:10:57
$が何を指すかは処理系依存
無駄
0670デフォルトの名無しさん2007/05/13(日) 09:34:05
>>666
自演乙
06716712007/05/13(日) 18:09:35
Visual Studio C++ 2005 Express Editionで逆アセンブルすると

 mov ecx, [eax]kernel._ready
 mov edx, [eax]kernel._run
       ↓
 mov ecx,dword ptr [eax]
 mov edx,dword ptr [eax+8]
となりました。

ここで、[eax]は、ポインタである、という意味ですか?

CPUは、Core2 OSは、Windows Vistaです。
0672デフォルトの名無しさん2007/05/13(日) 18:12:34
eaxがポインタか。
終わったな、MS。
0673デフォルトの名無しさん2007/05/13(日) 18:38:41
dword ptr [eax] = EAXの指すアドレス(オフセット)にあるDouble Wordの値
0674デフォルトの名無しさん2007/05/13(日) 18:41:57
常識的にebx使うだろ。
eaxだと1バイト長い。
06756712007/05/13(日) 18:48:19
>>673
そういうことですか。
どうも、ありがとうございました。
0676デフォルトの名無しさん2007/05/13(日) 18:51:19
逆アセンブルするとMSがアフォだった。
0677デフォルトの名無しさん2007/05/13(日) 18:59:38
今時1バイトくらいけちけちすんなよ
0678デフォルトの名無しさん2007/05/13(日) 19:03:50
MSはかなりいい加減だな。
ゴミコンパイラ発覚。
0679デフォルトの名無しさん2007/05/13(日) 19:08:40
はいはいゴミゴミ
0680デフォルトの名無しさん2007/05/13(日) 19:09:25
コンパイラじゃないだろ。 アセンブラで書いたのを逆アセンブルしたんだろ?
0681デフォルトの名無しさん2007/05/13(日) 19:10:50
初心者大爆発(W
0682 ◆0uxK91AxII 2007/05/13(日) 19:15:18
>>627-629
>Express Edition
0683デフォルトの名無しさん2007/05/13(日) 19:19:31
Express Editionがどうこう以前にインラインアセンブラで書いてるじゃん >>627
0684 ◆0uxK91AxII 2007/05/13(日) 20:13:33
流れから、compileをExpress Editionで行ったと解釈。
違うならスルーで。
0685デフォルトの名無しさん2007/05/13(日) 22:20:27
> mov ecx, [eax]kernel._ready
> mov edx, [eax]kernel._run
>       ↓
> mov ecx,dword ptr [eax]
> mov edx,dword ptr [eax+8]
>となりました。

コンパイラ(アセンブラ)の仕事はラベルのアドレス解消しかないわな。
0686デフォルトの名無しさん2007/05/14(月) 18:33:10
↓関数を終了し終わると、レジスタeipのアドレスの関数が実行されます。
 popをしていってリターンすると、eipに書かれているアドレスの関数が
 実行されるけど、これって呼び出し側に戻らないのはおかしくないですか?
 

static voidfunc (void)
{    __asm
    {

(略)

        mov        esp, [ecx]task_t.spParam(■)
        popfd
        pop        ebp
        pop        ebx
        pop        edi
        pop        esi

        pop        edx
        pop        ecx
        pop        eax
        ret /* リターン後、task_Aを実行 */
    }
}

0687デフォルトの名無しさん2007/05/14(月) 18:33:54
■task_t.spParamの中身です。
-kernel._run->spParam
|------eflags
|------ebp
|------ebx
|------edi
|------esi
|------edx
|------ecx
|------eax
|------eip=0x00412550(task_A)
+------eipBack
0688デフォルトの名無しさん2007/05/14(月) 18:37:42
質問の意味が判らん。
スタックを切り替えてるって事はコルーチンとかスレッド切り替えをやってるんだろ?
その部分で呼び出し元に戻らないのは当然で、
再度コールチンの切り替えが呼ばれたら、そこで再度ESPが戻されて元に戻るわけだ
0689デフォルトの名無しさん2007/05/14(月) 19:32:00
>>688
スタックポインタをあまりよくわかっていませんでした。
汎用データ・レジスタをすべてpopすると、
eip(ステータスレジスタ)に書かれているアドレスに分岐されるんですね。
たまたま、↑の場合はSPを切り替えたため、
eipが、funcの呼出しもとでなかったために
task_Aが実行されたんですね。
わかりました。
0690デフォルトの名無しさん2007/05/14(月) 22:38:12
>>689
> eip(ステータスレジスタ)

もっとちゃんと仕様書を読む癖つけた方がいいぞ。
0691デフォルトの名無しさん2007/05/15(火) 09:18:13
eipレジスタとステイタスレジスタって何が違うの?
0692デフォルトの名無しさん2007/05/15(火) 09:23:30
pushfd で保存してるのがステイタスレジスタで
call で保存されてるのが
0693ゆとりか?2007/05/16(水) 00:32:47
>>691
>> 仕様書を読む癖つけた方がいいぞ。
0694デフォルトの名無しさん2007/05/24(木) 09:57:32
はじめまして
とても困っています

キーボードより入力した文字列(少なくとも2文字以上)を
逆順に並べ替え、一括して出力するプログラム
例:「abc」と入力して、「cba」と出力する

ってどうしたらいいんですか?教えてください
POPとPUSHを使うみたいなのですが・・・
0695デフォルトの名無しさん2007/05/24(木) 10:41:57
キーボードより入力する部分は誰が書くの?
0696デフォルトの名無しさん2007/05/24(木) 10:45:40
誰がってどういうことですか?
とんでもなく初心者なのでよくわかりません・・・

INを使うってことですか?
0697デフォルトの名無しさん2007/05/24(木) 10:59:34
俺はアセンブラよくしらねーけどさ
普通にpushしてpopすれば逆になるんじゃなかったっけ?
06986942007/05/24(木) 11:19:41
プログラムの書き方がほとんどわからないんです
STARTで始まってENDで終わるということぐらいしかほとんどわかりません

よかったらソースを御願いしますm(__)m
0699デフォルトの名無しさん2007/05/24(木) 11:36:55
>>698
CASL�Uか?
07006942007/05/24(木) 11:46:25
CASL�Uです
御願いします
0701デフォルトの名無しさん2007/05/24(木) 12:04:50
>>696
IN マクロ1回で全部の文字が入るわけ?
それともターミネータが既定されてて、その文字まで1文字づつINで入力してゆくの?
07026942007/05/24(木) 12:10:58
ターミネータとはなんですか?

一回で「abc」と入れたのが
「cba」と出てくればそれで
大丈夫だと思うのですが
0703デフォルトの名無しさん2007/05/24(木) 13:59:07
INで1回に読めるのは8bitでしょ。それがASCIIの<CR>(0Dhね)なら文字列の終わりと認識して
並べ替えに入る。それまでは入力した順にpushしてく、という書き方すべきじゃね?
あと、popしながら戻ってくるときに「終わり」を知るためには、最初に何か特別なコードを
pushしとかないと。
0704デフォルトの名無しさん2007/05/24(木) 14:41:48
おまえあたまいいな
07056942007/05/24(木) 15:08:45
難しくてよくわかりません・・・すみません。

教科書のINとOUTのプログラムの例はこんな感じです。

MACR START
TOP IN AREA,LL
LD GR1,LL
JZE FIN
OUT AREA,LL
JUMP TOP
FIN RET
AREA DS 256
LL DS 1
END

これの入れたものが逆に出てくるバージョンが知りたいです
07066942007/05/24(木) 15:15:03
すみません、見づらかったです。

MACR START
TOP IN AREA,LL
LD GR1,LL
JZE FIN
OUT AREA,LL
JUMP TOP
FIN RET
AREA DS 256
LL DS 1
END
07076942007/05/24(木) 15:16:30
連続投稿すみませんでした

スペースたくさん入れても一つになってしまいますね
0708デフォルトの名無しさん2007/05/24(木) 15:27:34
VB厨の俺がCASLII仕様書片手に暇つぶしにやってみた。

REV START
RPUSH
IN IBUF,LEN ;IBUFへ入力, 入力された文字数はLENに格納される。
SUB GR1,GR1 ;指標レジスタ兼ループカウンタを初期化。
REV1 LD GR0,IBUF,GR1 ;IBUF先頭から数えてGR1番目の文字を、
PUSH 0,GR0 ;スタックに積む。
LAD GR1,1,GR1 ;ループカウンタをインクリメント。
CPA GR1,LEN ;入力された文字数分だけスタックに積んだか?
JNZ REV1 ;まだならREV1へループする。
SUB GR1, GR1 ;ループカウンタを0にリセット。
REV2 POP GR0 ;スタックから1文字とってきて、
ST GR0,OBUF,GR1 ;OBUF先頭から数えてGR1番目へ置く。
LAD GR1,1,GR1 ;ループカウンタをインクリメント。
CPA GR1,LEN ;文字数分だけ処理したか?
JNZ REV2 ;まだならREV2へループする。
OUT OBUF,LEN ;処理した文字列を出力する。
RPOP
RET
END
IBUF DS 256
OBUF DS 256
LEN DS 1
0709デフォルトの名無しさん2007/05/24(木) 15:28:39
>>705
厄介だねえ IN 命令では何バイト読まれるか判らないのか
A 1バイト又は終了なら0バイト
B Nバイトが一気に読まれる
 なら比較的楽なんだけどなあ
0710気まぐれアナスイ2007/05/24(木) 15:37:37
私の計算では。
『((++) != (\/n)a) == 1』
0711デフォルトの名無しさん2007/05/24(木) 15:40:04
>>708
げ、バグがある。やっぱ無しっつうことで。
0712デフォルトの名無しさん2007/05/24(木) 16:23:48
これで動くかな?

REV START
RPUSH
IN IBUF,LEN
SUB GR1,GR1
CPA GR1,LEN ;追加
JZE REVE ;追加
REV1 LD GR0,IBUF,GR1
PUSH 0,GR0
LAD GR1,1,GR1
CPA GR1,LEN
JNZ REV1
SUB GR1, GR1
REV2 POP GR0
ST GR0,OBUF,GR1
LAD GR1,1,GR1
CPA GR1,LEN
JNZ REV2
OUT OBUF,LEN
REVE RPOP ;変更
RET
END
IBUF DS 256
OBUF DS 256
LEN DS 1
07136942007/05/24(木) 16:41:09
>>709

よくわかりませんが、INのところの教科書の説明では

あらかじめ割り当てられた入力装置から、ラベル1で指定した入力領域
に文字データが入力され、ラベル2で指定した領域に文字データ長が、2進
データの形でセットされます。
 C言語などでは、ハードディスクやキーボードから入力する場合、OPEN
命令などで入力装置の割り当て(指定)を行いますが、CASL�Uではこの割
り当ては前もってなされていると仮定しています。
 入力領域は256語長(256文字分)の作業域のラベル名として、この領域
に1文字を1語として対応させ、順次入力します。1語は2字分の大きさ
をもちますが、ここでは1語に1文字しか入らないので注意してください。
 ようするに入力される文字は、DC命令の文字定数と同じように、各語
の上位8ビットには0のビットが入り、下位8ビットには
JIS X0201のコードが入っています。
 なお、キーボード入力の復帰符号などのような区切符号は入力されません。
 また、入力データが256文字をこえる場合には、以降の文字は無視する
ことになります。256文字に満たない場合は、入力領域の残りの部分は実行
前のデータを保持します。
 ラベル2で指定された領域には、普通は入力されたデータ長がセットさ
れていますが、ファイルの終わり(end of file)が検出した場合(読み込む
データがなくなったとき)は−1がセットされます。

となっています。
言ってることは全然意味がわかりませんが・・・

>>708
そんな感じだとは思うのですが、エラーが出ていても
どこが間違っているのかも全然わからない素人なのです(汗
07146942007/05/24(木) 16:52:05
>>712ありがとうございます。でもエラーが5つ出てきました。ちなみに、エラーはこんな感じでした。
Address Object-Code Label Mnemonic Gr, Op, Xr
-------------------------------------------------------------
0000 REV START
0002 RPUSH
0004 IN IBUF,LEN
0006 SUB GR1,GR1
ニーモニック
0008 4010 0228 CPA GR1,LEN
000A 6300 0000 JZE REVE
オペランドのラベルが見つからない
000C 1001 0028 REV1 LD GR0,IBUF,GR1
000E 7000 0000 PUSH 0,GR0
<XR>レジスタ
0010 1211 0001 LAD GR1,1,GR1
0012 4010 0228 CPA GR1,LEN
0014 6200 000C JNZ REV1
0016 SUB GR1,GR1
ニーモニック
0018 7100 REV2 POP GR0
0019 1101 0128 ST GR0,OBUF,GR1
001B 1211 0001 LAD GR1,1,GR1
001D 4010 0228 CPA GR1,LEN
001F 6200 0018 JNZ REV2
0021 OUT OBUF,LEN
0023 REVE RPOP
ニーモニック
0025 8100 RET
0026 END
0028 0000 IBUF DS 256
0128 0000 OBUF DS 256
0228 0000 LEN DS 1
07156942007/05/24(木) 17:28:41
大変迷惑かけました。いろいろな人に聞きまくったところ、データの残っている先輩からデータをもらうことができました。
ちなみにこんなかんじでした

MOVE START
IN RE,LE
LAD GR1,0
LD GR2,LE
LAD GR2,-1,GR2
LD GR3,LE
SRA GR3,1
LP JZE LIST
LD GR0,RE,GR1
LD GR4,RE,GR2
ST GR4,RE,GR1
ST GR0,RE,GR2
LAD GR1,1,GR1
LAD GR2,-1,GR2
SUBA GR3,C1
JUMP LP
LIST OUT RE,LE
RET
LE DS 1
RE DS 30
C1 DC 1
END
0716デフォルトの名無しさん2007/05/24(木) 17:51:49
とほほ。
SUBをSUBAに、R0をGR2にして、余分な空白は消さないと動かないね。
ENDの位置も間違ってる。
0717モンキーJ2007/05/24(木) 17:57:09
はじめまして。すいません,MIPSなのですがこのプログラムの問題点を指摘せよとゆう
課題なのですが問題あるでしょうか?ご教授お願いします。

add $v0, $0, $0
slt $t0, $a0, $0
beq $t0, $0, loop
sub $a0, $0, $a0
loop:
add $v0, $v0, $a1
addi $a0, $a0, -1
bne $a0, $0, loop
beq $t0, $0, end
sub $v0, $0, $v0
end:

よろしくお願いします。
0718デフォルトの名無しさん2007/05/24(木) 21:25:59
問題があるとすれば、それはその課題の出題者の頭がだな。
0719デフォルトの名無しさん2007/05/24(木) 21:39:45
>>715
スタック使ってないやん…
0720デフォルトの名無しさん2007/05/26(土) 03:21:48
使わずに済むならそれにこしたこたねんだ
0721デフォルトの名無しさん2007/05/26(土) 03:27:12
>>717
MIPSのアセンブラって皆こうなん?
$とかすごく入力しにくいぞ
0722デフォルトの名無しさん2007/05/26(土) 11:08:09
そうでもないよ
0723デフォルトの名無しさん2007/05/27(日) 00:12:29
$ が入力しにくいってどんな環境なんだ?
0724・∀・)っ-○◎●2007/05/27(日) 00:48:17
shift+4って日本語でも英語でも同じだよな
0725デフォルトの名無しさん2007/05/27(日) 02:09:03
まさかケータイからとか?
0726デフォルトの名無しさん2007/05/27(日) 23:22:21
>>717
誰も答えないようなので一応答えてみる。
勝手に想像をめぐらすと変数aとbのかけ算の結果を返すソースコード
と思われる(C言語風にかくなら int mul(int a, int b);)ので、
その前提で問題点を指摘する。

問題点は2つ。
1. 変数$a0(int aに対応)が負の場合に符号反転して最後に再度反転するコードだが、
問題ではそうなっていない。

対策として3行目 beq $t0, $0, loopをbne $t0, $0, loopに変更すべき。

2. 変数$a0に0が入っている場合、結果$v0=0になるべきだが、1回だけループを通過
してしまうために、$v0=$a1(return b;)が返ってしまう。

対策として下記のような$a0の0チェックコードを1行目と2行目の間に挿入する。
beq $a0, 0, end

前提が間違っている可能性もあるので、そこは自分で検討してみてくれ。
0727デフォルトの名無しさん2007/05/29(火) 13:45:39
この宿題スレはSAL、MAL、TALの宿題でもおkですか?
0728webmaster@気まぐれアナスイ2007/05/29(火) 15:14:19
!(Φ_Φ+)
全てclear.出来る筈です…
0729デフォルトの名無しさん2007/05/30(水) 21:20:42
CASLIIです。
期限が明日に迫っていて間に合いそうにありません。
図がズレる可能性もあったのでtxtであげました。
http://www.csync.net/service/file/view.cgi?id=1180527442

よろしくお願いします。
0730デフォルトの名無しさん2007/05/30(水) 21:45:13
CASLIIいじると頭が発狂しそうになるのって俺だけ?
0731デフォルトの名無しさん2007/05/30(水) 23:31:19
頭が発狂ってなんかおかしくね?
0732デフォルトの名無しさん2007/05/30(水) 23:46:41
頭痛が痛い
0733デフォルトの名無しさん2007/05/31(木) 00:02:03
頭の頭痛が痛い
0734デフォルトの名無しさん2007/05/31(木) 08:47:16
>>729
12時までには終わらせるから待っとけ。
0735デフォルトの名無しさん2007/05/31(木) 10:22:47
>>729
とりあえずやってみた。
コメントの形式がこれじゃダメな場合は、自分で書き直してくれ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4116.txt
0736デフォルトの名無しさん2007/05/31(木) 11:14:23
>>735
ありがとうございます!
コメント形式も完璧で本当に助かりました。
0737デフォルトの名無しさん2007/05/31(木) 11:17:36
A君とB君の家は20mの距離があって、A君は一秒間に2mのスピードで動いてB君は一秒間に2.5mのスピードで動く。
二人が同時に家から出て互いに向かって走ってったら同じ場所になるのは何秒後?
0738デフォルトの名無しさん2007/05/31(木) 11:47:48
二人の距離は1秒で4.5mずつ縮まる
20/4.5=4.44444444・・・・秒後

A君は自分の家から8.88888888・・・・mの場所
B君は自分の家から11.1111111・・・・mの場所

両方の距離を足すと19.99999999・・・・m

検算でもだいたい合ってるのでこれでいいでしょう

0739デフォルトの名無しさん2007/05/31(木) 11:50:43
>>738
ありがとう
本当に助かった
0740デフォルトの名無しさん2007/05/31(木) 11:52:05
それのどこがアセンブラの宿題?
0741デフォルトの名無しさん2007/05/31(木) 12:31:31
2進数で20/4.5を計算すると循環小数にならないっていう話なのかな
0742デフォルトの名無しさん2007/05/31(木) 12:40:11
100.0111 000111 000111 000111 ・・・・

循環しますが

0743デフォルトの名無しさん2007/05/31(木) 21:53:30
ワンボードマイコンのSuperAKI-80でAポートのみ出力に設定し、
接続したLEDの点灯パターンで表示される2進数値を
1ずつ1秒毎にカウントアップするプログラムを組めという課題が出たんですが

ORG 8000H ;8000番地から始める
LD A,8BH        ;Aに8Bを入れる
OUT (33H),A ;33番地にAの値を入れる
XOR A ;Aの内容をクリアする
LD B,255        ;Bに255を入れる
LD C,40
LOOP1: INC A ;Aに1を加える
OUT(30H),A ;30番地に出力する
LOOP2: LD DE,24576 ;HLに24576を入れる
LOOP3: DEC DE ;HLから1引く
JP NZ,LOOP3 ;0でなければLOOP3に戻る
DEC C ;Cから1引く
JP NZ,LOOP2      ;0でなければLOOP2へ戻る
DEC B ;Bから1引く
JP NZ,LOOP1 ;0でないとループ1に戻る
JP 1000H
END

このように組んでも思ったように動作してくれません。
どこがどうおかしいのか教えてください。
CPUのクロック周波数は9.8304MHzです。
0744デフォルトの名無しさん2007/05/31(木) 22:02:27
コメントの書き方がヘタレだな、なぜこうしたかという意思表示が伝わってこん。
そういう1命令ごとのミクロの視点じゃなくて、もう少し大局的なコメントを書いてくれ。
例:どうやって1秒間の時間稼ぎをするのか、とか。

添削はそれから。
07457432007/05/31(木) 22:29:23
>>744
ORG 8000H ;8000番地から始める
LD A,8BH ;Aに8Bを入れる
OUT (33H),A ;33番地にAの値を入れる
XOR A ;Aの内容をクリアする
LD B,255 ;Bに255を入れる
LD C,40 ;Cに40入れる
LOOP1: INC A ;Aに1を加える
OUT(30H),A ;30番地に出力する

;以下時間稼ぎ
;9830400=24576×40×10(JPの所要クロックサイクル)

LOOP2: LD DE,24576 ;HLに24576を入れる
LOOP3: DEC DE ;HLから1引く
JP NZ,LOOP3 ;0でなければLOOP3に戻る
DEC C ;Cから1引く
JP NZ,LOOP2 ;0でなければLOOP2へ戻る

;時間稼ぎ終わり

DEC B ;Bから1引く
JP NZ,LOOP1 ;0でないとループ1に戻る
JP 1000H
END

このコメントの書き方でよろしいでしょうか
0746デフォルトの名無しさん2007/05/31(木) 23:10:28
>LOOP3: DEC DE ;HLから1引く
>JP NZ,LOOP3 ;0でなければLOOP3に戻る
無意味無駄無様なコメントだな。

で、dec deはいつからフラグに影響するようになったのかね。
0747デフォルトの名無しさん2007/05/31(木) 23:11:35
DEC DEとか16bitのINC/DECではフラグ変化しないハズ
0748デフォルトの名無しさん2007/05/31(木) 23:30:25
>XOR A ;Aの内容をクリアする

こういうところは妙にテクってたりするw
0749デフォルトの名無しさん2007/05/31(木) 23:38:12
LD C,40 ;Cに40入れる

これは時間稼ぎループの中に入れないとまずい。
それにしてもループで時間稼ぎとは前時代的だなw
0750デフォルトの名無しさん2007/06/01(金) 05:15:19
大麻とか使えるようになるのはもっと後でしょ。
8000Hから始めて、終わったら1000Hへ行っちゃうのはいいの?
Bを255回のカウンタに使っているけど、DEC B してるとこで INC A ってやれば
Aだけで回せるんじゃない?・・・と思ったが、DEC DE の後でDとEの検査するのにAを
使うね。B=0から始めて、OUT (30H),Aの前でLD A,B 、 最後の判定の所 INC B でやれば
元のアイデアが生かせてpush/popも要らないかと。
0751デフォルトの名無しさん2007/06/01(金) 09:17:45
命令を理解しているかどうかを確かめるために
1行ずつ命令の動作をそのままコメントに書かせる奴はいる。
0752デフォルトの名無しさん2007/06/02(土) 13:10:39
Spimでオーバーフロー時の処理ルーチンって何のことだかわかりますか?
0753デフォルトの名無しさん2007/06/02(土) 15:53:10
オーバーフロー時の処理ルーチンのことだろ
0754デフォルトの名無しさん2007/06/03(日) 10:55:41
どんな命令与えるの?
0755デフォルトの名無しさん2007/06/03(日) 13:27:19
オーバーフローが起きたときは処理系によりレジスタの内容が「最大」になるとか不定になるとか
ゼロになるとかいろいろあると思う。計算の途中なら先を続けないとか、数値として編集するなら
「計算できません」的な表示を作るとか、要するに「正しい答以外の場合」の後始末が必要でしょ
0756デフォルトの名無しさん2007/06/03(日) 17:25:43
本とかで調べるとmfc0命令でレジスタにコピーし、ジャンプレジスタ命令で例外が起きたコードに戻す。ってあったんで頭を抱えていたのですが、
なんだか難しく考えすぎていたようです。>>755 ありがとうございました。
0757デフォルトの名無しさん2007/06/04(月) 05:35:34
>>745はどうなったのかな?
0758デフォルトの名無しさん2007/06/07(木) 23:35:21
データラベル DB
の組み合わせはデータラベルを識別子とする変数や配列を定義してるようなものだと思えばいいんでしょうか?
0759デフォルトの名無しさん2007/06/08(金) 01:53:30
グローバル変数限定なら、まあ。
0760デフォルトの名無しさん2007/06/08(金) 02:00:17
>>758
hoge DB "hanage",0
はC言語でいうところの
char* hoge = "hanage";
かなぁ。
0761デフォルトの名無しさん2007/06/08(金) 03:57:59
正確には、char hoge[7]="hanage"; の訳が>>758
>>760は hoge: DW peke
      peke: DB "hanage",0 になる。
07627582007/06/08(金) 06:47:33
>>759-761
ありがとうございます、そういう感覚で覚えておきます
0763デフォルトの名無しさん2007/06/16(土) 12:01:13
高級言語からアセンブリに落とす作業ってなんていう?
0764デフォルトの名無しさん2007/06/16(土) 12:04:20
sageわすれ
0765デフォルトの名無しさん2007/06/16(土) 13:20:14
コンパイル
■ このスレッドは過去ログ倉庫に格納されています