アセンブラ… (゜□゜) ↑アッー!↓at TECH
アセンブラ… (゜□゜) ↑アッー!↓ - 暇つぶし2ch461:デフォルトの名無しさん
06/09/08 12:14:16
4に決まってるだあ

462:デフォルトの名無しさん
06/09/08 12:29:38
さんくすこ

463:デフォルトの名無しさん
06/09/20 19:19:17
『独習アセンブラ』で、今日からやりだした超初心者なんですけど、
x86系Linuxのnasmで ”1”の文字 一文字表示しようと思うのですが、

$ nasm -f elf hajime.asm
$ ld -s -o hajime hajime.o
でアセンブルもリンクも問題なくできるのですけど、

$ ./hajime [Enter]
$
セグメンテーション違反です

って表示され叱られてしまいました! どなたかご教示願いないでしょうか。

ソースは以下のようになってます。nasmは、 nasm-0.98.39を使ってます。

global _start

_start:
mov eax, 31h ; 文字 "1"
push eax ; スタックにバッファを設定
mov eax, 4 ; 出力(sys_wrigte)
mov ebx, 1 ; ファイルハンドル(1=標準出力)
mov edx, 1 ; 1文字出力することを指定
mov ecx, esp ; 書き込むバッファ
int 0x80 ; 出力する
pop eax

464:デフォルトの名無しさん
06/09/20 20:15:23
プログラムの終端でのエラーではないでしょうか。
最後にプログラム終了の命令を追加してみてください。

mov eax, 1 ; sys_exit
mov ebx, 0 ; 終了ステータスコード
int 0x80

465:デフォルトの名無しさん
06/09/20 21:10:58
>>464
早速のご教示、ありがとうございます。

書かれている命令を追加してみましたが、結果は変わりませんでした。
『独習アセンブラ』に書かれている、次のサンプル「Hallo assembler」の方はキチンと表示
されるのに一番最初のサンプルコードがトラブってしまって、まいってます!

466:( ^ω^)飛来ブーン
06/09/20 21:23:16
あげ

467:デフォルトの名無しさん
06/09/20 21:29:56
linux nasm>Google
で最初に出るサイトのasm05.htmlに似たようなのがある
push eaxの前にpusha、pop eaxの後にpopaを入れてみてはどう?


468:デフォルトの名無しさん
06/09/20 21:58:02
>>467
pusha、pop を入れてみましたが、結果は、まったく変わりません。
コードを書き足しているのにまったく変わらないというのも
何か、おもしろいですね。


469:デフォルトの名無しさん
06/09/20 22:08:54
pusha、popa は不要。

global _start

_start:
mov eax, 31h ; 文字 "1"
push eax ; スタックにバッファを設定
mov eax, 4 ; 出力(sys_wrigte)
mov ebx, 1 ; ファイルハンドル(1=標準出力)
mov edx, 1 ; 1文字出力することを指定
mov ecx, esp ; 書き込むバッファ
int 0x80 ; 出力する
pop eax
mov eax, 1 ; sys_exit
mov ebx, 0 ; 終了ステータスコード
int 0x80

で動作したよ。nasm-0.98 と nasm-0.98.38 で確認。

470:463
06/09/20 22:30:17
>>469
家では、やはり「 セグメンテーション違反です」が出てしまいます orz
先ほども書きましたが、次のサンプルコードの「Hello assembler」は順調に
アセンブルもリンクも 実行もウマクいくんですけど …

nasm-0.98.38 をgetして、コンパイルし直してみます。
みなさん、Thanks

471:デフォルトの名無しさん
06/09/20 22:54:40
int 0x80 を int 0x08 とタイプミスしてました、な~んてことはないよね?
いや、恥ずかしながら俺がそうだった。
見つけたときは全身脱力したよ。俺の1週間は何だったんだってね。

472:デフォルトの名無しさん
06/09/20 22:58:24
> 全身脱力

全身脱毛に見えた

473:463
06/09/20 23:28:07
>>471
私もint 0x08をサンプルの「Hello assembler」の方でやってしまいました。
これやると、「 セグメンテーション違反です」がモロ出るんですよね。

今、 nasm-0.98.38 をgetしてきましたが、今度は、nasmのコンパイルが通らない!
泥沼に嵌まりこんでしまいました。 orz

474:デフォルトの名無しさん
06/09/20 23:38:48
>>473
URLリンク(prdownloads.sourceforge.net)
$ rpm -Uvh nasm-0.98.39-1.i386.rpm

475:デフォルトの名無しさん
06/09/20 23:47:42
$ apt-get install nasm

476:デフォルトの名無しさん
06/09/21 02:47:09
>>473
nasmのコンパイルが通らないとは
nasm自体のソースコードがコンパイルできないということですか?
でしたら>>474,475などで解決できると思うのですが。
それともnasmのインストールは完了していて、サンプルコードがアセンブルできない
ということですか?

477:463
06/09/21 06:40:38
>>476
おはようございます。

私の場合は、nasmをソースからコンパイルしてinstallしています。
nasm-0.98.39.tar.bz2を展開してコンパイルして使いだしていたのですが、
nasm-0.98.38を使ってる人>>469でのアセンブリのソースコードが問題なく
アセンブルが通るということなのでnasm-0.98.38.tar.bz2をゲットしてコンパイル
したという訳なんです。

478:463
06/09/21 12:37:21
お騒がせいたしました。自己解決しました。
ソース↓

section .data ; セグメンテーション違反回避
global _start

_start:
mov eax, 31h ; 文字 "1"
push eax ; スタックにバッファを設定
mov eax, 4 ; 出力(sys_wrigte)
mov ebx, 1 ; ファイルハンドル(1=標準出力)
mov edx, 1 ; 1文字出力することを指定
mov ecx, esp ; 書き込むバッフ
int 0x80 ; システムコール,出力する

mov eax, 0ah ; 0ah
push eax ;
mov eax, 4 ; は
mov ebx, 1 ; 改
mov edx, 1 ; 行
mov ecx, esp ; 用
int 0x80 ; システムコール,改行する
pop eax ; eaxの回収

mov eax, 1 ; sys_exit
mov ebx, 0 ; 終了ステータスコード
int 0x80 ; システムコール,終了する

479:デフォルトの名無しさん
06/09/21 13:53:05
それは駄目。
.dataセクションにはグローバル変数等を配置することになっているので、
そこにコードを記述することはできない。
コードを配置するのは.textセクション。

スタックにバッファを置くために2回pushしているが、1回しかpopしていない。

それから改行を出力するために苦労した痕が見受けられるが、次のように
すればプログラムを短縮できる。

mov eax, 0x0a31
push eax
mov eax, 4
mov ebx, 1
mov edx, 2
mov ecx, esp
int 0x80
pop eax


480:デフォルトの名無しさん
06/09/22 02:03:54
フロッピーからデータの読みだしについてです。
シリンダ0番、セクタ2番のプログラムを0x8000に読みだして実行
したいのです。
最後のJMPで*を付けると実行出来ないのですが、理由を教えて下さい。

MOVW $0x800, %AX
MOVW %AX, %ES

MOVB $0x00, %CH
MOVB $0x02, %CL
MOVB $0x00, %DH
MOVB $0x00, %DL

MOVB $0x02, %AH
MOVB $0x01, %AL
INT $0x13

JMP *0x8000

481:デフォルトの名無しさん
06/09/22 03:38:12
環境や前提条件をまず示してくれ。話はそれから。
おそらくブート時のロード処理だと見当はつくが。
或いは逆アセしてみて意図したコード(0x8000への絶対ジャンプ)に
きちんと変換されたかを確認するとか。

482:デフォルトの名無しさん
06/09/22 07:27:25
*0x8000だと、0x8000番地にある16ビットの値をアドレスとして処理する。
0x8000番地に飛ばすならjmp $0x8000が正解だと思う‥‥

483:482
06/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:デフォルトの名無しさん
06/09/22 12:32:15
>>481-483
サンクス。

>>481
すいません。
OS:FreeBSD6.1
アセンブラ:GCC
その他:ld、objcopy
エミュレータ:bochs
作っている物:ブートの最初の512byteのプログラム

>>482
jmp $0x8000だとコンパイルエラーになります。


URLリンク(www.gnu.org)

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:デフォルトの名無しさん
06/09/22 13:08:06
>>482
「*」を付けた際の動作は、御指摘の通りでした。
解決できました。
ありがとうございました。

486:463 ◆RMO61H2xHE
06/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:デフォルトの名無しさん
06/09/22 21:03:09
GNU asについて質問です。
lss 20+4(%esp), %esp
と、ESPとSSに1命令で値をつめてるコードがあったのですが、
この20+4()ってのはどういう意味なんでしょうか?

488:デフォルトの名無しさん
06/09/22 21:11:12
MMX の質問です

pand mm0, mm1

を実行し結果がゼロになっても、ゼロフラグが立たないようです。
ゼロかどうかをチェックするにはどうしたらいいんでしょうか?

489:463 ◆RMO61H2xHE
06/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
06/09/22 22:01:16
コンパイルされたものをobjdumpでのぞいたら、
lss 0x18(%esp),%esp
こういう風に変換されてました。
よく調べもせずに質問してすみませんでした。

491:デフォルトの名無しさん
06/09/22 22:12:08
>>489
mov cl, [message+2]
xchg cl, [message+3]
mov [message+2], cl

492:デフォルトの名無しさん
06/09/22 22:56:07
なんか

春だな・・・

493:463 ◆RMO61H2xHE
06/09/22 22:56:18
>>491
ありがとうございます。
eHllo, Worldとなりました。アセンブリって意外とレジスタの動きが分かりやすいん
ですね。
本や、ネットで検索しながらやってるんですけど、Linuxのnasmで
初心者に分かりやすい解説は、殆んどないんで困ってました。

494:デフォルトの名無しさん
06/09/22 23:18:49
どっかにnasm本家のマニュアルの日本語訳があったはずだが。
あれで十分よ

495:デフォルトの名無しさん
06/09/22 23:19:53
ってかmasmはMS公認で無料になったか。
イイジダイダナー

496:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6
06/09/23 05:38:45
>>488
MMX演算はフラグレジスタを更新しない。
いちど汎用レジスタに転送してから比較する必要がある。

0かどうかだけを判定するだけなら、たとえば

packssdw mm0, mm0
movd eax mm0
test eax, eax

497:デフォルトの名無しさん
06/09/23 18:56:59
Z80ですけど
DAAってハーフキャリーは0になるの?それとも変化するの?どっち?

498:デフォルトの名無しさん
06/09/23 20:05:47
変化する

499:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/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
06/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:デフォルトの名無しさん
06/09/26 23:44:57
システムコール呼ぶときecxレジスタ使ってるだろ?
そんくらい気ずかん?(´・ω・`)

503:デフォルトの名無しさん
06/09/27 01:45:08
>>501
答えは分かるがあえて書かない。自分で考える事が上達には大事だしな。

先ほど書いたようにdiあるいはsiをcxの代わりにカウンタとし、

dec di
jnz また文字列出力する場所

ってな感じにするのが良い。
あとint21hの後のレジスタの値は保障できないと考えた方が一応はいいと思うから、
doitの位置を変えた方が確実だと思う。


504:デフォルトの名無しさん
06/09/27 09:36:16
x86CPUで、32ビットの値を3倍するとき、
x = x * 3;
と、
x = (x<<1) + x;
はどちらが高速なんですか?

505:デフォルトの名無しさん
06/09/27 10:02:43
>>504
スループットは上の方がいいが、
レイテンシは下の方がいい。
CPUによるけど。
どちらが速いかは周りの処理にもよる。

でも、x86ならこれが一番速いよ。
lea x,[x*2+x]

506:デフォルトの名無しさん
06/09/27 15:00:54
ていうか、いまどきのコンパイラは
3倍するのはleaに最適化してくれますよ。

507:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6
06/09/27 22:23:36
Pen4だとこれでも速かったりwww
mov edx, eax
add eax, eax
add eax, edx


508:デフォルトの名無しさん
06/09/28 00:52:21
>>507
シフトが add の 8 倍遅い変態 CPU を持ち出すのは反則だと思いまつ。

509:デフォルトの名無しさん
06/09/28 01:18:15
ペン4のALUは糞すぎるなw

510:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6
06/09/28 01:23:14
依存関係を高いクロックによって解決するという手法は全てが間違いだった訳じゃないけど
クロックを重視したデータキャッシュが小さすぎたりパイプラインが長すぎたり
熱すぎたりで、全体としてマイナス要素が大きかったのが敗因ですな。


511:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/09/30 18:27:46
32bitモードでdxレジスタなんか使うなよ・・・
あと最初のパラメタは[ebp+4]じゃなくて[ebp+8]だボケ

513:ボケ
06/09/30 19:15:48
>>512
早速のご教示ありがとうございます。
ご指摘のdxをedxとし[ebp+4]を[ebp+8]に直してやってみたのですけど、
結果は変わらず、何も表示されなくて ただ改行されただけでした。
Cの参考ソースはけっこうありますけど、アセンブルってほとんどないですね!

514:デフォルトの名無しさん
06/09/30 20:05:55
>>513
最後に0x0aも出力してみれ。


515:デフォルトの名無しさん
06/09/30 21:58:20
>mov ecx, esp ; 書き込むバッファ
ここ間違っているのでは
既に40引いてしまっているのに・・・

516:デフォルトの名無しさん
06/09/30 22:04:24
lea ecx,[ebp+8]とかじゃね?

517:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/09/30 22:37:26
gccの最適化は最初は知らないほうがいいんじゃないかw

520:デフォルトの名無しさん
06/09/30 22:40:35
どうして?ちょっとだけでいいから教えて・・

521:デフォルトの名無しさん
06/09/30 22:48:43
そしてICCとか最近のVC++で最適化コンパイルしてしまって余計混乱すると。

522:デフォルトの名無しさん
06/09/30 22:53:44
こんなガリガリのコードじゃたいして最適化できねぇw
putchar2はwriteをコールするだけだから関数の存在が消えてしまう可能性はあるが。

>>520
高度な最適化コンパイラは凡人の考えの及ばぬような超変形型ロジックを組むことがあるから。

523:ボケ
06/09/30 22:59:17
>>517
釣できるほどのウデがあればいいんですけど…

貴方の仰る通り、>511の投稿には誤りがたくさんありました。
言われた通りにやったら AB と表示されました! 改行はしないみたいですけど、
改行は組めますので、後は簡単です。
Thanks

524:デフォルトの名無しさん
06/09/30 23:37:48
>>522
ふ~ん

525:デフォルトの名無しさん
06/10/01 01:50:05
>>522
コンパイラ程度の最適化が超変形?
じゃあ人が書いたコードは読めねぇなw

526:デフォルトの名無しさん
06/10/01 02:10:08
いや、人間様がそれ以上にド汚い変形かますことができるのも確かだが、
きょうびのコンパイラが超変形かますのは事実だろ。
何を噛み付いてるんだ。
カルシウム足りないのか。

527:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6
06/10/01 02:25:38
i *= 32;



add eax, eax;
add eax, eax;
add eax, eax;
add eax, eax;
add eax, eax;

に展開するコンパイラとかな。

528:デフォルトの名無しさん
06/10/01 02:30:21
そんな大した事無いレベルの最適化でグダグダ言うなよ

529:デフォルトの名無しさん
06/10/01 02:39:09
VC++やICCの定数除算の最適化はなかなかエグかった気がするが

530:デフォルトの名無しさん
06/10/01 03:04:16
漏れはVC2005のたらい回し関数でたまげた。

531:デフォルトの名無しさん
06/10/01 03:36:33
>>527
GCCでは無数にある最適化オプション組み合わせていくら頑張ってもシフトだった。
-O0ですらシフトだったw
VC++のリリースコンパイルでもシフトだから、それが最善じゃないのか?

532:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/10/01 05:38:03
>>527
いや、それ普通。
VCのそれは、シフトが異常に遅い某CPUに配慮したものと思われ。
多分だけど。

534:デフォルトの名無しさん
06/10/01 09:07:13
P○n4は*32でもシフトより加算の方が早いのか?w

535:デフォルトの名無しさん
06/10/01 09:27:21
>>534
ちょっと上くらい読めや>507-509

536:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6
06/10/01 14:54:18
Pen4ではshlのレイテンシは4クロック、addは0.5クロック
依存関係チェインが深い場合は加算を繰り返した方ほうが早い

VCじゃなくて、ICCの-QxWとか-QxNとかのPen4専用オプションだったような


>>532
除算はクロック数やたらかかるから定数積算とシフトに置き換えるのは常套手段


537:デフォルトの名無しさん
06/10/01 17:29:21
常套手段て…そういう裏技があるのなら標準でALUにそのロジックを積んで
もらった方がどれだけわかりやすいことか。
あるいは除算命令でこのシーケンスと同じμop生成するとか。

書きたいことはまだあるけどこれ以上はちょっとスレ違いになるので遠慮しよう。

538:デフォルトの名無しさん
06/10/01 17:53:12
いや、除算を他の演算に置き換えるロジックってすげー大変なんだが。
何で割るかによって全く違うロジックになるから。

そんなもんにトランジスタ突っ込む余裕なんかない

539:デフォルトの名無しさん
06/10/01 18:33:31
>>532>>529と繋がっていたのか、気づかなかった。
定数除算限定で、しかも最適化のタイミングはコンパイル時じゃないといけない
程度に複雑なアルゴリズムなのか。
随分と頓珍漢なことカキコんじまったな(恥

540:デフォルトの名無しさん
06/10/04 23:19:27
テキストエディッタで.asmファイルを作成してコマンドプロンプトでアセンブルしようと思ったのですがうまくいきません。
ml~コマンドは合ってるはずなのですが。

知恵をください。

XPSP2です

541:デフォルトの名無しさん
06/10/04 23:23:42
>>540
それだけの情報で何かわかると思ってんのか。
せめてエラーメッセージくらい貼れよ。

542:デフォルトの名無しさん
06/10/04 23:31:03
'ml' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
ってなります。

543:デフォルトの名無しさん
06/10/04 23:32:22
>>542
アホか。パス通してないだけでないか。

544:デフォルトの名無しさん
06/10/04 23:46:16
先生できませnorz

545:デフォルトの名無しさん
06/10/05 05:03:25
アセンブラはちゃんとインストールされてるのか?
質問から察するに、それすら出来ていなさそうな気がする。

WinXPのDOS窓からの操作なら、DOS窓開いたらまずこのコマンドを打ち込む。
> set Path=%Path%;(ml.exeのあるディレクトリのパス)
開くたびにこれを入力するのが面倒くさいならバッチファイルに書くなり
GUIから環境変数に登録するなり何なりと。

546:デフォルトの名無しさん
06/10/05 20:38:09
先生無事できますた。ありがとん

547:デフォルトの名無しさん
06/10/10 10:06:06
割り算が理解できん。
なんであんなことになってんの?

548:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/10/10 12:14:56
精度が落ちていいなら

inc ecx
mov eax, dword 028f5c28h
imul ecx

でedxに解が得られないかな。

550:デフォルトの名無しさん
06/10/10 12:35:00
無符号整数除算ならね。

551:デフォルトの名無しさん
06/10/10 20:35:59
ん?無符号型ならimulじゃなくてmulじゃね?

552:デフォルトの名無しさん
06/10/11 12:57:52
このスレが適当かどうかわからないんですが。

VC++の最適化OFFで生成した以下の絶対値を求めるコード

cdq
xor eax,edx
sub eax,edx

これに対応するC/C++のコードがわかるかたいませんか?

553:デフォルトの名無しさん
06/10/11 13:25:58
>>552
インラインアセンブラでも使ってない限りも最適化 Off ではそのコードは
出てこないと思うんだが・・・。
abs() を呼んでれば最適化 On の時そのコードになるよ。

554:デフォルトの名無しさん
06/10/11 13:59:52
>>553
/Oiオプションでabsが上記の命令に展開されたのを確認しました。
最適化はOFFだと思ってたのですが、一部だけ有効になってるのかもしれません。
(バイナリとPDBファイルしかないので詳細不明)

ありがとうございました。

555:デフォルトの名無しさん
06/10/11 17:48:43
>>554
/Oiって思いっきり最適化オプションの一部だろ。


556:デフォルトの名無しさん
06/10/11 18:26:42
>>552-555
ワロタw

557:デフォルトの名無しさん
06/10/12 09:14:28
OiOi

558:デフォルトの名無しさん
06/10/12 13:59:22
RS-232C?

559:デフォルトの名無しさん
06/10/12 15:34:13
どっちかっつーと丸井

560:デフォルトの名無しさん
06/10/12 16:21:15
丸井って、クレジット詐欺って意味でしょ?

561:デフォルトの名無しさん
06/10/12 22:19:52
>>560
訴訟の元ハケーン

562:デフォルトの名無しさん
06/10/12 22:34:02
訴訟あげ!?

563:デフォルトの名無しさん
06/10/13 13:55:12
16ビットしか知らんが、みんな何に使ってるの?
やっぱインラインかな

564:デフォルトの名無しさん
06/10/13 15:49:03
C言語からアセンブラ語に変換するにはどうすればいいですか??
分かりやすくお願いします.

565:デフォルトの名無しさん
06/10/13 15:54:22
コンパイラにアセンブラ語で出力するようにオプションを付ける。

566:デフォルトの名無しさん
06/10/13 15:54:28
GCCなら-Sとか

567:デフォルトの名無しさん
06/10/13 15:58:20
それはMPLAB IDE上でできますか??

568:デフォルトの名無しさん
06/10/13 16:07:08
アセンブラ語て…新語捏造するなやorz
本当はアセンブリ言語ってんだ。俗的にアセンブラでも通用するが。

569:デフォルトの名無しさん
06/10/13 16:10:51
お前タン、実はマルチでつか?そんなことしたら駄目だお(AAry

570:デフォルトの名無しさん
06/10/13 17:20:51
>>568
JISでは「アセンブラ言語」

571:デフォルトの名無しさん
06/10/13 18:50:01
まじで?!

572:デフォルトの名無しさん
06/10/14 16:55:38
今学校の授業中です…
キーボードから3個の整数a、b、cを入力してスタックにセットし、これらの整数のうち最大整数をディスプレイに出力せよ。ただし、最大整数をセットするための変数maxもスタック上に作ること。

これが出来ないと帰らせともらえませんが、全くわかりません。どなたか出来る方いましたらよろしくお願いします。

573:デフォルトの名無しさん
06/10/14 17:21:41
よし!19時ぐらいまで粘れ!!
その時間位になれば、わかる人がここに来るぞ、たぶん。

574:デフォルトの名無しさん
06/10/14 17:40:28
>>572
開発環境、動作環境を書け。
話はそれからだ。

575:デフォルトの名無しさん
06/10/14 18:05:18
>>572
どのアセンブラで、どのCPUですか

576:デフォルトの名無しさん
06/10/14 19:18:17
19時を過ぎたのですがそろそろ教えてくれません?どうかお願いします。

577:デフォルトの名無しさん
06/10/14 19:23:08
>>576
いやだから教えようにも

・・まぁなんだ、頑張れ

578:デフォルトの名無しさん
06/10/14 19:35:56
>>576
>>574-575


579:デフォルトの名無しさん
06/10/14 19:54:20
>>576
変数って何桁でもいいの?


580:デフォルトの名無しさん
06/10/14 22:00:50
しかし、キーのスキャンやら画面表示やらはHWがわからんことにはどうしようもないだろ。
まあわかったところでこんなところに書き込めるようなコード量に収まるとも思えんがw

581:デフォルトの名無しさん
06/10/14 22:22:37
>>580
無能自慢はいいから

582:デフォルトの名無しさん
06/10/14 23:23:22
>>580
つ【ファンクションリクエスト】

583:デフォルトの名無しさん
06/10/14 23:44:27
週末なのに学校に泊まりかw

584:デフォルトの名無しさん
06/10/15 00:01:57
>>582
それがある環境だと誰が言った?

585:デフォルトの名無しさん
06/10/15 00:17:32
なんで教えてもらおうとしてるやつがそんなに偉そうなんだ

586:デフォルトの名無しさん
06/10/15 00:27:14
kawaisosu

587:デフォルトの名無しさん
06/10/15 00:43:22
579はまだ帰れない

588:デフォルトの名無しさん
06/10/15 00:55:36
>>572

void main(){

}


589:デフォルトの名無しさん
06/10/15 00:57:03
>>572
void main(){

int a, b, c, max;

scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);

if(a < b){
}
}


590:デフォルトの名無しさん
06/10/15 00:58:06
うわーん、要はC言語で作って、
gcc -S
で、アセンブリ出力したら、
勝手にやってくれるよ。

だって、ローカル変数はスタックなんだからさ。

591:デフォルトの名無しさん
06/10/15 01:43:47
>>590
ローカル変数が必ずスタックに確保されるという保証はない

592:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6
06/10/15 01:49:36
volatileでおk

593:デフォルトの名無しさん
06/10/15 03:34:15
スレ違いの話だが、
「C言語のローカル変数がスタック上に生成される」というのは
そういう実装になっている処理系が多い、というだけで
C言語の規格上、ローカル変数(自動記憶域期間をもつオブジェクト)は
「スタック上に確保されなければならない」とは一言も書いてない。

594:デフォルトの名無しさん
06/10/15 11:57:25
ほれ、糞団子、gccのソースに言及しつつ>>593について熱く語れよ。

595:デフォルトの名無しさん
06/10/15 12:07:56
「&をつけないとレジスタに置かれる可能性があるが、&をつければ必ずメモリ上に置かれる」というのもただの伝説だね。

596:デフォルトの名無しさん
06/10/15 12:34:44
そんなことより>>572は帰宅できたのかどうか


597:デフォルトの名無しさん
06/10/15 14:43:46
家がなi(ry

598:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6
06/10/15 15:18:30
>>594
そんなしょぼいポンコツコンパイラなんざ使わないからしらねー。


599:デフォルトの名無しさん
06/10/15 15:20:44
>>598
gcc-4.1.1で最適化を-O3なんかにしたら最適化が変態すぎてまともにうごかないんだぜ。

600:デフォルトの名無しさん
06/10/15 17:52:03
>>598
お前半年くらい前にあーだこーだいってた気がしたが。
ありゃ可変引数リストに関してだったっけ?

601:デフォルトの名無しさん
06/10/15 18:04:44
>>598
しょぼいポンコツとは失礼な。
某大学の実習で使用されるシステムはH/Wスタックを装備していないから
メモリ空間ぜ~んぶヒープな環境だ。レジスタはアキュムレータ1つだけ。
で、課題でこのシステム向けに最適化されたANSI Cのサブセットコンパイラを
つくれというのがあったが、どんなに凝ったコンパイラを作れど、この場合
スタックを「使わない」のではなく「使えない」んだよ。

団子はそんな環境で四苦八苦したことがないだろうが。

602:デフォルトの名無しさん
06/10/15 18:07:25
おっつ失礼。「汎用」レジスタはアキュムレータ1つだけ。
レジスタは他にもあったよ。PCとか間接メモリアドレッシングで使うやつとか。

603:デフォルトの名無しさん
06/10/15 18:18:49
>>601
無能自慢はいいから

604:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6
06/10/15 18:22:58
>>600
んーでもそういう環境わざわざ選ぶ理由無いよね♪
どんなマイナーCPUですか?
ちなみにJava仮想マシンなら汎用レジスタ1本のスタックマシンだよね。

それ以前の問題として、マシン語がどんなのかよくわからんわけで。
それこそ情報処理技術者でよく使われるCOMET2/CASL2かもわからんし。
Cでコンパイルしてアセンブリコード吐かせれば出せるって前提自体が
おかしいと思うわけで。

演習で使う端末ってx86とかPowerPC(ようはMac)のほうが多いと思うんだけど

605:デフォルトの名無しさん
06/10/15 19:39:54
>>603
ゴメ。自慢するつもりはなかった。ただこういう環境もあるということを言いたかっただけ。

>>604
あるよ。この流れの上流をよく見てみ。>>572で今学校の授業中ですとある。
どんな反則/時代遅れシステムを使わされるかもわからない。高機能から超低次元まで
様々な環境を考慮しなければ質問に答えることは出来ない。
そうでなくてもこの分野はどんな質問がくるか予測しづらい面もある。

肝心の質問者は何も言わず逃げやがったなw

606:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6
06/10/15 19:43:12
まあ、かくいう俺も128本のレジスタと256KBのメモリ空間しかない
某プロセッサコアのシミュレータと格闘してた。

アレは気が狂いそうだ。

607:デフォルトの名無しさん
06/10/15 20:04:21
128本も、一体何に使うんだよorz
人智では管理できんな、この数じゃ。CellとかItaniumとか!

608:デフォルトの名無しさん
06/10/15 23:36:33
Sparcも結構変態チックなレジスタ管理していた気がするが。

609:デフォルトの名無しさん
06/10/15 23:38:24
やはりデータレジスタ8本アドレスレジスタ8本が最も美しい。

610:デフォルトの名無しさん
06/10/15 23:46:19
>>609
レジスタの長さは、それぞれ 1Mバイトぐらいでよろしーですか?w


611:デフォルトの名無しさん
06/10/15 23:48:43
奇数アドレスにアクセスすると転けるCPUなんて嫌いです。

612:デフォルトの名無しさん
06/10/16 00:21:15
>>611
68000のことですか?

613:デフォルトの名無しさん
06/10/16 00:27:10
中途半端に遅くなって動かれるくらいなら落ちてくれた方がいいけど。

614:デフォルトの名無しさん
06/10/16 01:29:07
すみませんがわからないので教えてください・・・
お願いします

次の命令群を実行した結果を説明せよ
CLR R0
ADD #1 R0
ADD #2 R0
ADD #3 R0
ADD #4 R0

次の命令群を実行した結果を説明せよ
MOV #100,R1
CLR -(R1)
CLR -(R1)
CLR -(R1)
CLR -(R1)

次の命令群を実行した結果を説明せよ
CLR @#100

解答は○○○○番地を××に、R0を△△△△にする
という形でできるだけ詳しくお願いします
本当にお願いします ・・・


615:デフォルトの名無しさん
06/10/16 01:42:53
実行すればわかる

616:デフォルトの名無しさん
06/10/16 02:30:42
お願いします。。。課題なのですが明日までなんです・・・


617:デフォルトの名無しさん
06/10/16 02:43:23
明後日になったら答えてやる
と念を押しておいても誰かが先に答えちまうんだろうな
偽善もほどほどにしとけよ?

618:デフォルトの名無しさん
06/10/16 02:45:27
宿題スレじゃ無いしな。

619:デフォルトの名無しさん
06/10/16 02:48:32
すみません・・宿題スレがないので・・・
本当にお願いします・・教えてください

620:デフォルトの名無しさん
06/10/16 02:52:45
そもそもどのCPUを使っているのかなどの最低限の情報が与えられていないのではなぁ。

621:デフォルトの名無しさん
06/10/16 03:36:39
すみませんわかりません・・
それしか書いてないので・・・
PDP11ってやつですかね・・?
オペランドとか・・
自分も授業で少ししただけで全然わからないんです・・・
教えてもらえないでしょうか。。。


622:デフォルトの名無しさん
06/10/16 03:51:59
>>621
PDP11のアセンブラのマニュアルならここにあるからしっかり勉強しろ。
URLリンク(www.bitsavers.org)


623:デフォルトの名無しさん
06/10/16 04:00:17
おぉ、こんなものをこんなところで入手できるとは
いいものを手に入れた。マジサンクス>>622

624:デフォルトの名無しさん
06/10/16 04:32:48
>>622
わかりました
勉強はします
そのマニュアルは全部英語でよくわかりませんが・・
でも締切りが今日なんです・・・
とりあえず答えを教えてもらえないでしょうか・・・
もう時間が・・・
お願いします


625:デフォルトの名無しさん
06/10/16 04:38:51
>>624
そうやって2chに張り付いてうだうだ書いている暇に、英和辞典片手にマニュアル読めよ。

626:デフォルトの名無しさん
06/10/16 04:42:53
課題のほうも煮詰まっているようだから>>614のサンプルに関連するページだけ抽出して
>>622から抜粋してみた。この辺を重点的に読んで、あとは自分で解決してね。

(問1)
2オペランドアドレッシング(double operand addressing) … 3-2 (30)
クリア(clr)命令 … 4-6 (52)
加算(add)命令 … 4-25 (71)

(問2)
直接アドレッシング(direct addressing)と自動デクリメント(autodecrement) … 3-4 (32)
転送(mov)命令 … 4-23 (69)

(問3)
差分(間接)アドレッシング(differed (indirect) addressing) … 3-10 (38)


今君が手元で使っているであろう某系のCPUよりも随分素直で理解しやすいよ。

627:デフォルトの名無しさん
06/10/16 04:53:36
Cで書くならこうかな?

register short int r0 = 0;
r0 += 1;
r0 += 2;
r0 += 3;
r0 += 4;

register short int r1 = 100;
*--r1 = 0;
*--r1 = 0;
*--r1 = 0;
*--r1 = 0;

*(short int *)100 = 0;


628:デフォルトの名無しさん
06/10/16 04:55:04
おまいら優しすぎ。

629:デフォルトの名無しさん
06/10/16 04:57:31
まってください
>>626
わざわざありがとうございます
ですがその資料ホントに読めません・・・

あと習い始めたばかりでまだ実行とかは全く習ってないししたこともないんです
書いてある問題の意味すらわからなくて、今答えの見当もつかない状態なんです・・
本当にお願いします・・


630:626
06/10/16 04:58:52
おわwww間違えてるしw
問3は差分アドレッシングの問題じゃないわ。何に気をとられていたのやらorz

問3はたぶん絶対アドレッシング(absolute addressing)の問題。
関連ページは 3-12 (40)


>>627
それほぼ答えじゃんorz
ま、俺は別にいいけどね。

631:デフォルトの名無しさん
06/10/16 05:00:17
確か @ やら # はウニッ糞のシェルにとって特別な意味があるので
UNIックソのPDP11アセンブラは>>622とは違う文字使っていたような希ガス

632:630
06/10/16 05:02:18
関連ページは3-12・・・じゃなくて本当は 3-13 (41)
また間違えましたよ。

すぐ隣のページだけどね:-p

633:デフォルトの名無しさん
06/10/16 05:05:28
>>627

× register short int r1 = 100;
○ register short int *r1 = 100;


634:デフォルトの名無しさん
06/10/16 05:07:04
>>627
ありがとうございます
でもCは全く習ってなくて、何が書いてあるのか理解できません・・・
本当にすみません
できれば>>614の形式で教えていただけないでしょうか・・
手書きで説明を書いて提出するので・・・
>>630
わざわざ報告ありがとうございます

635:デフォルトの名無しさん
06/10/16 05:15:23
おまい、貴重なPDP11のマニュアルを拾ってきてもらって、その212頁もある
マニュアルの中から僅かな量のエッセンスを抽出してもらって、あまつさえ
重要語句に日本語を付加されてまでまだ「読めません」かよ。

読めないのではなくて 読 ん で い な い だろ。

今から>>622読んで理解しろ。実際ここにいる連中も1時間程度で読んで理解しているんだ。

636:デフォルトの名無しさん
06/10/16 05:18:20
>>635
それとCのソースもな。

637:デフォルトの名無しさん
06/10/16 05:30:50
おまいら優しすぎ

638:デフォルトの名無しさん
06/10/16 05:42:08
解説者が一人多役の自演でなければ、の話だが。

639:デフォルトの名無しさん
06/10/16 05:51:08
30分ほど読みましたがやはりわかりませんでした・・・
教科書読んでも全然わからなくて・・・
>>627はどういうことなんですか・・?
実行結果・・?
もういやだ・・もうこんな時間・・どうにもできない・・・だれか・・

640:デフォルトの名無しさん
06/10/16 06:07:13
>639
残念でした。

2chに聞いたのが間違いなんだよ
何でもサポートセンターじゃない
先生のところへ行って直接手取り足取り教えて貰いな

親切に教えて、しかも学ぶ事そのものまで教えてまでいるスレ住人を
裏切り続けてるのは外ならぬお前なんだと言う事を覚えておけよ?

641:デフォルトの名無しさん
06/10/16 06:09:32
ネタかも知れないレスにマジレスしちまった。
そろそろ寝るか。



30分ぐらい。

642:デフォルトの名無しさん
06/10/16 06:18:11
提出物なので先生には教えてもらえません・・・
裏切り続けてると言われても・・言われたことはしました・・
その上でなら仕方ありません・・
時間があるのならゆっくり勉強すればいいかもしれませんが、もう時間がなくて一から勉強することができません・・・
だからもう・・・

643:デフォルトの名無しさん
06/10/16 06:23:02
ここまでヒント貰って分からないんなら、もう単位は諦めるしかないんじゃない。
人の答え丸写しして本人は理解してないのに単位取るなんて不正だし。

644:デフォルトの名無しさん
06/10/16 06:23:44
課題出されてから提出期限まで幾らか時間があったんだろ?
くだらん言い訳はするな。
それに提出物だから教えて貰えないというのもおかしな話だ。
質問を受け付けてくれない先生か。さぞお気の毒だこと。

そうやって言い訳し続けて、裏切り続けるがいいさ。


と、漏れもマジレス

645:デフォルトの名無しさん
06/10/16 07:06:33
お願いします・・・
何を言われてももうこれしかありません・・・

646:デフォルトの名無しさん
06/10/16 07:09:06
もういい加減愛想が尽きたよ。
答えを教えたって豚に真珠だろうさ。

647:デフォルトの名無しさん
06/10/16 07:21:02
それでもお願いします・・・

648:デフォルトの名無しさん
06/10/16 07:51:54
おまえら優しいな。
2chでこんなに優しくしてもらえるなんてそうないぞ。

問1ぐらいは分かるだろ。
ま、残りは空欄でも仕方ないな。

649:デフォルトの名無しさん
06/10/16 08:00:04
問1すらわからないなら単位はあきらめた方がいいな

650:デフォルトの名無しさん
06/10/16 08:22:28
なんじゃここ、昼夜逆転したニート君どもがが学生君を嬲ってやがるw
やっぱりヒキニト君ってイライラが溜まってるんだね。
そんなの俺なら「宿題は自分でやれよ」の一言で済ますけど。

651:デフォルトの名無しさん
06/10/16 11:21:27
r0が

652:デフォルトの名無しさん
06/10/16 11:23:32
失敗
r0がゼロレジスタか否かで結果が変わるな
PDP11が確実でなければ

653:デフォルトの名無しさん
06/10/16 12:25:35
時間が無いなんて何を言ってるんだ?
学生なら幾らでも時間はあるだろ
4年で卒業できる実力が無いならおとなしく留年しろ
それが世のためだ

654:デフォルトの名無しさん
06/10/16 12:26:48
あと30分でその授業が始まります‥
本当にお願いします…

655:デフォルトの名無しさん
06/10/16 12:42:11
このスレタイに使われている顔文字の意味がわからくなってきたぞ。


始めて↓のスレタイを見たときは、

アセンブラ… (;´Д`) ハァハァ (Part6)
スレリンク(tech板)


ああなるほど、アセンブラだから汗んブラってことで
汗をかいているって意味か、もしくはブラジャー見てハァハァ言ってるのかって
意味なのかとわかった。んだが・・・

656:デフォルトの名無しさん
06/10/16 12:53:52
>>655
そういう意味はないぜ。
伝統的に「Part*」でなく顔文字でスレ名つけてるだけで。

そのスレタイだったら、アセンブラにハァハァしてると
解釈するのが自然で、汗とかけてるわけじゃない

657:デフォルトの名無しさん
06/10/16 13:26:09
汗まみれのブラジャー着けたままセックスして感じてる女がハァハァいってる
ところを想像した

やばい、想像しただけで勃起する



658:デフォルトの名無しさん
06/10/16 14:14:38
あぁ、、PDP-11とは懐かしいな。何でPDP-11なのか分からんけど。実機で動いた方が絶対に面白いし、分かり易いのに。MIPSとかでいいのにな。いや、漏れも大学の時のアセンブラ講義はPDP-11のシミュレータだったけどさ。

659:デフォルトの名無しさん
06/10/16 14:14:58
全く知らない漏れでも>>622のマニュアル流し読みしたら理解できた。
わからないとか言ってる奴は絶対に問題を自力で解こうと思ってないし、
マニュアルも英語だからという理由で読もうともしてない。
以下、アドレスや数値は8進数表記
問1
R0を000000にする
R0に1を加算する→R0は000001
R0に2を加算する→R0は000003
R0に3を加算する→R0は000006
R0に4を加算する→R0は000012

問2
R1を000100にする
000100番地を000000にする、R1を000076にする
000076番地を000000にする、R1を000074にする
000074番地を000000にする、R1を000072にする
000072番地を000000にする、R1を000070にする

問3
000100番地を000000にする

660:デフォルトの名無しさん
06/10/16 14:19:59
>>659
たんなる釣りだろ。

661:デフォルトの名無しさん
06/10/16 15:06:00
8進数か、手強いな。16進数に慣れきってしまった今となっては。

662:デフォルトの名無しさん
06/10/16 15:37:49
英語がどうとか逝っても肝心の所は図とか記号あるから英語あんま読めなくてもだいたいわかるし

663:デフォルトの名無しさん
06/10/16 15:47:53
アセンブラの宿題スレもそこそこ需要があるみたいだね。
このスレを見る限り。(>>36-55,>>88-98,>>191-207,>>244-254,>>572-605,>>614-659)

こちらに質問された方はお気の毒でした。結局間に合ってないよね。
でも、資料提供から問題箇所の切り出し、C言語による整理とここでこんなに
丁寧に指導してもらえることってそうはないから、努力して理解に努める
姿勢を見せれば良い方向に転んだかもしれないあたり、少し残念。

それはさておき。
ここの姉妹スレとしてアセンブラの宿題スレを立てようと思うが、どうだろうか。
意見がなかったら近いうちに立てるよ。住人さんが定着するかどうかはわからないけど。

664:デフォルトの名無しさん
06/10/16 16:12:14
>>36って5月だよな。月1回程度って少なくない?

665:デフォルトの名無しさん
06/10/16 16:22:41
宿題スレ、立ててみるのは面白いと思うよ。
スレタイに「宿題」「質問」「アセンブラ」などの単語が入ってれば
ある程度人は集まると思う。
過疎化や実質非宿題スレ化などが懸念されるが、
ネタが増えそうな気もするし、俺は立てるのに賛成。

666:デフォルトの名無しさん
06/10/16 16:39:46
月一回程度、これを多いと思う香具師はいないものとして。
少なすぎるか、適量かで意見が分かれそうだな。
このペースだと複数問題のパラレル同時進行てな事態はそうは起きないだろうから
漏れは丁度いいと思う。もうちょい増えても構わんが。

667:デフォルトの名無しさん
06/10/16 17:33:55
いらねーだろ。
本音としては、ここに集う宿題君を肴にしてお前らと暇つぶしするのがいい。
宿題は自分でやれ。2chはお前らの代返君じゃねーんだぞと。

668:デフォルトの名無しさん
06/10/16 18:05:39
宿題スレを肴にすればいい。
それに、質問して来た人を直接ここで肴にするのは
ちょっと気が引けるし。

669:デフォルトの名無しさん
06/10/16 18:12:28
近頃のアッセン使いは意地が悪いですね

670:デフォルトの名無しさん
06/10/16 18:41:17
実はただのニートだからなw

671:デフォルトの名無しさん
06/10/16 18:45:56
>>659
> 問2

おしい。32ページ。

> -(Rn) Register is decrimented and then used as a pointer.

つまり、まず減算してからポインターとして使う。


672:デフォルトの名無しさん
06/10/16 20:57:01
問題:

STC
SBB EAX,EAX
ADD EAX,13
DEC EAX
XOR EAX,9
NOT AX
SHL EAX,8

上の命令を実行した後、EAXに入っている値を10進法で求めよ。

673:デフォルトの名無しさん
06/10/16 21:58:43
>>672
じぶんでやれかす

674:デフォルトの名無しさん
06/10/16 21:59:50
「~を求めよ」ってテスト問題の答えに
「じぶんでやれかす」って一度書いてみたいなw

675:673
06/10/16 22:01:51
暇つぶしで回ってただけだからおれもわかんねーよwww

676:デフォルトの名無しさん
06/10/16 22:03:48
えーと13たして9かけて8でわるのかな?

677:デフォルトの名無しさん
06/10/16 22:14:07
汗まみれのブラジャー↑アッー!↓

678:デフォルトの名無しさん
06/10/16 22:48:25
16770816

679:デフォルトの名無しさん
06/10/16 23:22:10
これか
スレリンク(mmosaloon板)l50の172
URLリンク(www.usamimi.info)

いつまでもこんなことやってたら高校生とかになっても厨のままだよ

680:デフォルトの名無しさん
06/10/16 23:27:11
16777216だよ

681:デフォルトの名無しさん
06/10/17 07:01:21
アセンブラ面白い問題教えてスレとか面白そうじゃないか?
誰か建てろ。

682:デフォルトの名無しさん
06/10/17 15:07:18
仮にアセンブリ宿題スレ作るにしても、テンプレどうするよ?



質問者は、質問の際に以下の項目を記入する事。
【機種】
【CPU】
【アセンブラ】

※判らない人は判る範囲で埋めて下さい。
 アセンブリは環境によってコードが異なるります。
 3つとも空欄や不明の場合、回答者が趣味で使っている環境で答えますが
 それがあなたの環境で実行出来るか否かの保障は出来ません。

683:デフォルトの名無しさん
06/10/17 15:18:02
s/答えますが/気が向いたら答えるかも知れませんが/

684:デフォルトの名無しさん
06/10/17 16:00:27
最低限CPU名だけは書いてもらうことを優先すべきでないかな。
もちろんわかる人には環境を詳しく書いてもらうとして。

685:デフォルトの名無しさん
06/10/17 16:04:56
> コードが異なるります。

686:デフォルトの名無しさん
06/10/17 16:29:58
アセンブラ
アセンブリ
アセンブル

687:デフォルトの名無しさん
06/10/17 16:43:58
アセンブリ言語をアセンブルするのがアセンブラだが、
アセンブリ言語を指してアセンブラと言うことも多い。

688:デフォルトの名無しさん
06/10/17 17:26:57
アセンブラ
アセンブリ
アセンブル
アセンブレ
アセンブロ

つっこみいれてやれよ。

689:デフォルトの名無しさん
06/10/17 23:00:47
アセンブロとはきどんなお風呂ですか?

690:689
06/10/17 23:01:30
余計な「き」が入った
吊ってくる

691:デフォルトの名無しさん
06/10/17 23:30:02
1.[8091h][8090h]←[8080h]*2+[8081h] 和を16ビットで求める
2.[8085h]←[8051h]+[8052h] を計算し、符号付2進数加算としてのオーバーフローを判定する

この二つを8085プログラムで書けという問題なのですがまったく分かりません。
どなたか分かる方教えてください。よろしくお願いします。

692:デフォルトの名無しさん
06/10/17 23:49:46
宿題スレに逝け

693:デフォルトの名無しさん
06/10/18 00:05:04
>>691
宿題スレに逝け

アセンブラの宿題質問スレ
スレリンク(tech板)


694:デフォルトの名無しさん
06/10/18 00:11:22
結局立てたんかい。
次からテンプレに追加せんとな。

695:デフォルトの名無しさん
06/10/18 00:42:24
Z80ならよく覚えているんだがなぁ~。i8085は知らんわ。残念。

696:デフォルトの名無しさん
06/10/18 00:58:48
>>688
まるでソンブレロみたいだ

697:デフォルトの名無しさん
06/10/18 01:50:04
3 名前: デフォルトの名無しさん [sage] 投稿日: 2006/10/18(水) 00:06:56
ファミコンアセンブラはまじで楽しい。
それ以外のアセンブラなんて人間にすすめるもんじゃない。

698:デフォルトの名無しさん
06/10/18 06:29:45
あんな変態アーキテクチャ、人に勧められるものかよ。
まあ、x86系の石よりはマシだが。
68000の優るものは何もない。


699:デフォルトの名無しさん
06/10/18 06:36:39
68kは遅いのが致命的だな。
JAVAチップだって結局(ry

700:・∀・)っ-○◎○新世紀ダンゴリオン ◆DanGorION6
06/10/18 06:37:48
ナーシャ・ジベリを越える天才現るか?

701:デフォルトの名無しさん
06/10/18 09:22:08
彼は今何をしているのだろう?

702:デフォルトの名無しさん
06/10/19 19:45:53
アセンブリをアセンブラでアセンブルすんだよ
アセンブラをアセンブラでアセンブルする厨は(・∀・)カエレ!

703:デフォルトの名無しさん
06/10/20 00:14:57
アセンブラってやっぱ C で書かれてるのかな?

704:デフォルトの名無しさん
06/10/20 00:24:20
>>703
そういうのもそうでないのもある。
awkで書かれてるのとかもあるよ

705:デフォルトの名無しさん
06/10/20 00:27:38
>>703
普通の言語のコンパイラならともかく、
アセンブラは何も考えずにアセンブルできるから
言語は何でもいいんじゃないの。

706:デフォルトの名無しさん
06/10/20 01:18:25
漏れは8085アセンブラをbasicで書いたぞ。

707:デフォルトの名無しさん
06/10/20 03:04:40
シナプスで書かれたアセンブラもあるな
勝手に最適化してくれるらしいぞ

708:デフォルトの名無しさん
06/10/20 06:31:39
紙とエンピツで入出力

709:デフォルトの名無しさん
06/10/20 07:36:04
こういうのって許されるやり方ですか?
もしかして相当する命令あるのかなぁ
初心者ですいません・・・

0100 mov AX,0300
0103 push AX ; Arg1
0104 call 200

0200 mov AX,SP
0202 add AX,2
0205 mov SP,AX
0207 ret

0300 int 20 ; おわり


710:709
06/10/20 07:38:30
板汚しすいません。解決しました

711:デフォルトの名無しさん
06/10/20 13:06:04
mov ax, 0x300
push ax
call TEST

TEST:
push bp
mov bp, sp
mov ax, [bp + 4]
pop bp
ret

普通はこんな風に使う。
アセンブリ言語プログラムをCから呼ぶのと同じ感じ。
上のはnasm16bitプログラムで書いてある。
そのためbp+4なのだ。
+4な理由は、戻りアドレス16bitとbpをプッシュした16bitで合計4バイトってこと。


712:デフォルトの名無しさん
06/10/20 13:38:16
>>711
引数で渡された値に帰り先を変更したいようだから
それではやってる事が全く違うんじゃないか?

713:デフォルトの名無しさん
06/10/20 13:42:00
>>711
偉そうに嘘を教える知ったか乙

714:デフォルトの名無しさん
06/10/20 14:05:59
うははwwwちゃんと読んでいなかったwwwww
吊って来るorz

715:デフォルトの名無しさん
06/10/21 02:50:55
mov ax,[si+1]はOKで
mov ax,[di+1]はNGですか?

716:デフォルトの名無しさん
06/10/23 11:34:17
>>709
retの戻りアドレスをArg1に変更したいだけならこうじゃないか?

0100 mov AX,0300
0103 push AX ; Arg1
0104 call 200

0200 pop AX ; 本来のret先をスタックから取り除く
0201 ret ; 103でpushした値がスタックトップなのでそこにretする

0300 int 20 ; おわり

717:デフォルトの名無しさん
06/10/23 15:15:42
すいません。
入る大学間違えたんですが。

718:デフォルトの名無しさん
06/10/23 17:24:31
>>717
だから?

719:デフォルトの名無しさん
06/10/23 17:35:06
>>717
よくあることだ。気にするな。

720:717
06/10/23 17:44:40
すいません。
誤爆です。
(なぜか向こうにレスがつかなかった。)

721:デフォルトの名無しさん
06/10/23 17:45:08
>>720
ret

722:デフォルトの名無しさん
06/10/23 18:32:58
retって何?

723:デフォルトの名無しさん
06/10/23 19:24:31
iret

724:デフォルトの名無しさん
06/10/24 07:09:34
irete

725:デフォルトの名無しさん
06/10/24 08:07:59
アッー!

726:デフォルトの名無しさん
06/10/24 10:05:42
MASM Ver8はどこで手に入りますか?

727:726
06/10/24 10:10:23
ごめんなさい。
>>147にありました

728:デフォルトの名無しさん
06/10/24 13:36:18
dwordってなんですか?

729:デフォルトの名無しさん
06/10/24 13:44:42
どうbぇをrd

730:デフォルトの名無しさん
06/10/24 13:53:05
4バイト?

731:デフォルトの名無しさん
06/10/24 14:01:41
DWORDはDOUBLE WORDなのでWORD2つ分。
ただし、WORDが何バイトか、あるいは何ビットかは知ったこっちゃない。

732:デフォルトの名無しさん
06/10/24 15:33:36
2CHとはアセンブラでどんな意味ですか?

733:デフォルトの名無しさん
06/10/24 15:40:22
jmp @-1

734:デフォルトの名無しさん
06/10/24 18:15:29


735:デフォルトの名無しさん
06/10/24 18:26:32
2ちゃんのことじゃないですよ2CHの意味することを教えてください

736:デフォルトの名無しさん
06/10/24 18:32:33
2CHは16進法としか解釈できないよね。
10進法なら44だ。
これが表す命令はCPUによって違うが、
1byteの2CH命令を持つCPUって何だろ。

737:デフォルトの名無しさん
06/10/24 18:33:28
ありがとうございます

738:デフォルトの名無しさん
06/10/24 18:35:59
なーんだ。そういう事か。
マジレスすると、炭素と水素が結合した物が2個。

739:デフォルトの名無しさん
06/10/24 23:15:41
そりゃ無理だ。

740:デフォルトの名無しさん
06/10/24 23:52:37
>>736
z80なら
inc l

741:736
06/10/24 23:59:54
>>740
サンクス。

742:デフォルトの名無しさん
06/10/25 10:56:51
>>740
ザイログフォーマットではxxxhという表現は無いな
2chだとインテルフォーマットだと思うぞ
だから INC L だな


743:デフォルトの名無しさん
06/10/25 11:21:37
俺が思うに、やっぱりね、良い音楽もあるけど悪い音楽もある!

744:デフォルトの名無しさん
06/10/25 11:37:03
iret

745:デフォルトの名無しさん
06/10/25 11:58:45
>>743
いい音楽って例えばどういうの?

746:デフォルトの名無しさん
06/10/25 12:55:15
inc l

747:デフォルトの名無しさん
06/10/25 13:25:02
アニオタ帰れ

748:デフォルトの名無しさん
06/10/25 22:46:00
そういやアニメ界には
搭乗してるユニットのOSを書き換えながら
戦闘するパイロットが居るんだっけか

749:デフォルトの名無しさん
06/10/25 22:54:05
>>748
しーぽん

750:デフォルトの名無しさん
06/10/26 01:51:03
>>748 実は別OSがその下で動いていたらどうだろう?止めることなく書き換えも可能になるな。

751:デフォルトの名無しさん
06/10/26 01:54:16
無停止システムなんかだと実行中のOSにパッチ当てるぐらいはできて当然。

752:デフォルトの名無しさん
06/10/26 01:57:33
無停止システムってなんだよ?
てか、なんちゃら機関と同じで実現できないだろ。

753:デフォルトの名無しさん
06/10/26 02:04:47
スーパーバイザモードで動いてるOSの下に
ユーザーモードで動いてるOSがいくつも走ってて
そっちを書き換えてた可能性は十分ある。
それほど不自然ではない気もするぞ。
別に0から全てのコード書き上げたってんじゃないんだろう?

754:デフォルトの名無しさん
06/10/26 02:17:04
迂闊に特権コード書き換えられるようではそれ自体がセキュリティホールになりかねないが、
OSのカーネルだろうがメモリ上の単なるデータに過ぎないんだから、適切な権限さえあれば
いくらでも書き換えることができる。アーキテクチャにもよるけどな。

755:デフォルトの名無しさん
06/10/26 02:19:01
>>752
勧善懲悪覗機関

756:デフォルトの名無しさん
06/10/26 02:41:26
アセンブリは無敵ってこった。C言語すらもただのゴミに見える…

757:デフォルトの名無しさん
06/10/26 03:56:04
無敵かもしれんが、おいらには難解過ぎるよ。
全然勉強が進まん…orz

758:デフォルトの名無しさん
06/10/26 11:16:36
種の話ならRTOS上のアプリが糞だったのでスケジューラと制御ライブラリの呼び出しパラメータに機体の癖を考慮した誤差を加えただけみたいに見えた


759:デフォルトの名無しさん
06/10/26 12:07:39
よくわからんが、俺もコーディネーターになりてえよw

760:デフォルトの名無しさん
06/10/26 12:32:12
ようするに篠原の技術は世界一って事だ

761:デフォルトの名無しさん
06/10/26 17:20:36
ネルガルだよ

762:デフォルトの名無しさん
06/10/26 18:24:59
>761
オモイカネがOSだったんだw

763:デフォルトの名無しさん
06/10/27 00:14:18
>>759
希望はよくわかった。
今日から君はコーダーだ。

764:デフォルトの名無しさん
06/10/27 02:08:24
今日から僕はリコーダーだ。

765:デフォルトの名無しさん
06/10/27 07:41:49
きょうから俺はあの娘のリコーダーだと申したか

766:デフォルトの名無しさん
06/10/27 08:24:40
>>763
極悪人事だな

767:デフォルトの名無しさん
06/10/27 13:26:34
僕のバズーカ凄いんだぞ(涙目)

768:デフォルトの名無しさん
06/10/27 15:30:01
>>765
おっさんの喘ぎ声がでるようなリコーダーはいりません!

769:デフォルトの名無しさん
06/10/27 16:15:05
すいません。質問です。
486CPUでCR0レジスタの30と29ビット目を1にすると
キャッシュ機能を無効にすることが出来るのでしょうか?

770:デフォルトの名無しさん
06/10/27 16:27:13
キャッシュの破棄もしなきゃいけないんじゃない?

771:デフォルトの名無しさん
06/10/27 16:29:42
1次キャッシュを無効にしてWindowsを立ち上げるとすごく遅いね。

772:デフォルトの名無しさん
06/10/30 03:26:21
初期のNetwareはHDD引っこ抜いても動いてたとかとか。

773:デフォルトの名無しさん
06/10/30 15:02:59
私の頭は利口だ


774:デフォルトの名無しさん
06/10/30 16:01:34
あなたの頭には利く口があるのか

775:デフォルトの名無しさん
06/10/30 16:02:32
ログ読んだけどアセンブラ書くのに一番簡単な言語って
Rubyとかじゃないの?

776:デフォルトの名無しさん
06/10/30 20:30:24
>>775
よく分からないがTTLですらアセンブラは存在していたのになぜRubyなんか持ち出す?
awkで十分だよ

777:デフォルトの名無しさん
06/10/30 22:10:47
それpl(ry

778:デフォルトの名無しさん
06/10/30 23:18:47
TTLでアセンブラ?
ビットスライス組み合わせてニーモニックからバイナリへの変換でもしてたん?


779:デフォルトの名無しさん
06/10/31 07:34:25
nasmが開発停止したと思ったら、flat assemblerなんてのが出てるんだな。
互換性はあるともないとも書いてないのが…使ってる香具師いる?

780:デフォルトの名無しさん
06/10/31 08:20:28
無いだろ。ただ構文わかりやすいな。
nasm派はYASMでおk


781:デフォルトの名無しさん
06/11/02 13:03:08
>>691
お前の大学特定した

782:デフォルトの名無しさん
06/11/04 05:41:08
お前の自宅特定したw

783:デフォルトの名無しさん
06/11/04 13:24:43
お前の性癖特定した

784:デフォルトの名無しさん
06/11/05 11:17:02
ばれた!ずらかれ!

785:デフォルトの名無しさん
06/11/07 01:36:59
おまえも好きだろ?ハイヒール

786:デフォルトの名無しさん
06/11/07 01:40:21
ブルマ復活きぼんぬ

787:デフォルトの名無しさん
06/11/07 05:38:35
天然のブルマってもう絶滅したの?

788:デフォルトの名無しさん
06/11/07 06:18:24
>785
「Romanticが止まらない」なら好きだな

789:デフォルトの名無しさん
06/11/07 06:23:44
ブールーマー(・∀・)イイ!
ブールーマー(・∀・)イイ!

あんぱーんあんぱーんあんぱんあんぱん
あん!ぱん!

790:デフォルトの名無しさん
06/11/07 10:27:01
>>785
ハイヒール大好きだけどバンプスとミュールも大好き
カノジョできたら無理矢理はかせてやりたい


791:デフォルトの名無しさん
06/11/07 13:15:54
バレーボールのブルマじゃね?

792:デフォルトの名無しさん
06/11/11 00:58:56
>>790
夏の薄着にはピンヒールのサンダルがちょっとイイ

793:デフォルトの名無しさん
06/11/16 05:24:25
組み込み技術者足りねえってよ。
みんな、がんがれ

794:デフォルトの名無しさん
06/11/16 20:49:50
今どきは組み込みもほとんどCで出来ちゃうんじゃなかろうか。

795:デフォルトの名無しさん
06/11/16 23:41:05
汗ブルマで掻くのはスタートアップルーチンと割り込みハンドラくらいだな

796:デフォルトの名無しさん
06/11/17 09:36:20
コンパイラが使って欲しくない命令使うんで、インライン使わざるを得なかった
そもそもいらん信号出すような命令残しておくなよ。バグだろ?>某社

797:デフォルトの名無しさん
06/11/17 10:56:54
>>796
過去への優しさです。

798:デフォルトの名無しさん
06/11/17 12:07:06
そんな優しさなんて要らない

799:デフォルトの名無しさん
06/11/17 12:21:00
>>797
おまえの優しさが人を傷つけていることになぜ気づかない?

800:デフォルトの名無しさん
06/11/17 14:28:58
>>799
それは仕様です

801:デフォルトの名無しさん
06/11/17 16:20:18
「愚か者は己が愚かなことに気づかない」

802:デフォルトの名無しさん
06/11/18 22:35:35
「ぬるぽはぬるぽ」

803:デフォルトの名無しさん
06/11/18 23:34:19
>>802
「ガッはガッ」

804:デフォルトの名無しさん
06/11/19 18:11:49
愚か者は愚か者であると見抜ける人でないと
(アセンブラを使うのは)ぬるぽ

805:デフォルトの名無しさん
06/11/20 10:08:39
アセンブラ、アメリカ専用ブラウザなんでしょ。


806:デフォルトの名無しさん
06/11/20 14:04:08
小林亜星専用ブラジャーです

807:デフォルトの名無しさん
06/11/20 14:22:00
それはあなたを幸せにしますか?

808:デフォルトの名無しさん
06/11/20 19:26:33
亜星が人々を幸せにすることはありません

809:デフォルトの名無しさん
06/11/23 11:25:49
パッとさいでりあ~♪

810:デフォルトの名無しさん
06/11/25 00:22:11
ちょっと質問。
nasmで作ったobjファイルをリンクして、ベタファイルとして出力できるようなフリーのリンカーってある?
例えば、
db 0,1,2,3
ってだけのa.asmと、
db 4,5,6,7
ってだけのb.asmをアセンブルしてそれぞれa.obj、b.objを作り、それをリンクして
0,1,2,3,4,5,6,7
というバイナリファイルを作れるようなの。
alinkでは無理だったんだが・・・

811:デフォルトの名無しさん
06/11/25 00:24:04
>>810
コードに明示されない順番依存ってリロケートとしておかしくないの?

812:デフォルトの名無しさん
06/11/25 00:33:29
>>811
ごめん、サンプルは適当に書いた。
要は、exeとして必要な部分を一切省いた、純粋にアセンブラで記述した部分だけを出せるリンカーって事で。
nasmで-f BINを指定したときと同じようなイメージ。


813:デフォルトの名無しさん
06/11/25 09:50:16
昔はexe2binを使ったり自分で切り出したりしていたな
objと言われてもOMFかcoff(win32)かわからない
OMFならobj2binがgoogleでヒットするな

814:デフォルトの名無しさん
06/11/25 10:07:04
nasm -fbin a.asm
nasm -fbin b.asm
copy /b a+b hoge.bin
じゃ駄目なの?

815:デフォルトの名無しさん
06/11/25 11:02:32
Microsoft Macro Assembler 8.0 (MASM) パッケージ (x86 用)
URLリンク(www.microsoft.com)


816:810
06/11/26 23:38:21
レス㌧
>>813
一応どちらでも出せるんで、ツールに合わせます。

>>814
a.asmからb.asmにあるラベルを参照したりすることがあるので、単純にくっつけるのはまずいです。

>>815
MASMのマニュアル?を探してみましたが、どのオプションでそれができるか不明でした。
どれか使えばできますか?


817:デフォルトの名無しさん
06/11/27 08:35:47
純粋なアセンブラの話題からは弱冠ずれるんですが、BIOSファンクションコールの一覧が載ってるサイトありませんか?
できれば日本語がいいんですが・・・

818:デフォルトの名無しさん
06/11/27 10:36:46
何のBIOS?

819:デフォルトの名無しさん
06/11/27 11:09:31
PCのですね。
MS-DOSとかが利用するような。

820:デフォルトの名無しさん
06/11/27 11:27:33
AT? 98?


821:デフォルトの名無しさん
06/11/27 11:41:22
PC-9801でお願いします。
できればATも参考に知りたいですが・・・

822:デフォルトの名無しさん
06/11/27 11:57:58
古本屋なりで「PC-9800シリーズ テクニカルデータブック」のシリーズでも探せ。
多分それが一番手っ取り早い。

823:デフォルトの名無しさん
06/11/27 12:24:56
俺のアセンブリ言語入門っていう1992年発刊の本の巻末に一覧表があるYO

824:デフォルトの名無しさん
06/11/27 16:42:32
そうですね・・・
できるだけ早く欲しかったんですが。
明日、市の図書館とBOOKOFFあたってみます。

825:デフォルトの名無しさん
06/11/27 17:07:29
osdevに書いてある予感

826:デフォルトの名無しさん
06/11/27 20:31:23
そんなに古い情報はないだろう。
AT BIOSは"InterruptList"があるけど。


827:デフォルトの名無しさん
06/11/27 21:47:09
メモリとI/Oポート周りならあった
URLリンク(www.webtech.co.jp)

828:デフォルトの名無しさん
06/11/28 00:25:03
入手できるかわからんが
PC-9801 プログラマーズBible,東京理科大学EIC編,技術評論社,ISBN4-87408-615-2
UNDOCUMENTED 9801/9821 Vol1,小高輝真,河野健,インプレス,ISBN4-8443-4642-3
に一通り載ってる


829:デフォルトの名無しさん
06/11/30 01:19:29

全部アセンブリで書けばあらゆるソフトは超快速になるのか?


830:デフォルトの名無しさん
06/11/30 01:52:24
>>829
そんなの当たり前じゃん。釣りか?

831:デフォルトの名無しさん
06/11/30 01:55:23

じゃあアセンブラで2chブラウザつくってくれ
インタフェースもおしゃれにしてくれよな!


832:デフォルトの名無しさん
06/11/30 02:11:19
CPUが複雑になってて、コンパイラも頭よくなってるので、一概にそうとも言えん。
つーか、CPUがどういう動作をするか完全に理解してて、各命令の動作速度、スレッドまで考慮できれば
アセンブラの方が早くできるだろうなw

マンドクセ('A`)

833:デフォルトの名無しさん
06/11/30 02:34:26
>>832
それって総当りでいつかは暗号解けるだろ、
と似たようなアルゴリズムだよね

834:デフォルトの名無しさん
06/11/30 12:45:32
Core2Duoなど最近のCPUの情報公開が不十分なのが問題なのであって
本来は総当りする必要はない

835:デフォルトの名無しさん
06/11/30 15:19:38
猿にキーボード持たせて待ってればできるよ

836:デフォルトの名無しさん
06/11/30 22:24:16
>>835
それまで宇宙があればね。

837:デフォルトの名無しさん
06/11/30 22:28:07
       \
 お そ .い ヽ
 か の や  |
 し  り  `  ,. -─- 、
 い .く   /   /⌒ i'⌒iヽ、
    つ /   ,.-'ゝ__,.・・_ノ-、ヽ
    は i ‐'''ナ''ー-- ● =''''''リ      _,....:-‐‐‐-.、
      l -‐i''''~ニ-‐,....!....、ー`ナ      `r'=、-、、:::::::ヽr_
 ̄ \ヽー' !. t´ r''"´、_,::、::::} ノ`     ,.i'・ ,!_`,!::::::::::::ヽ
    ヾ、 ゝゝ、,,ニ=====ニ/r'⌒;    rー`ー' ,! リ::::::::::::ノ
       i`''''y--- (,iテ‐,'i~´,ゝ'´     ̄ ̄ヽ` :::::::::::ノ
       .|  !、,............, i }'´    _   、ー_',,...`::::ィ'
     ●、_!,ヽ-r⌒i-、ノ-''‐、    ゝ`ーt---''ヽ'''''''|`ーt-'つ
        (  `ーイ  ゙i  丿   ;'-,' ,ノー''''{`'    !゙ヽノ ,ヽ,
        `ー--' --'` ̄       `ー't,´`ヽ;;;、,,,,,,___,) ヽ'-゙'"
                       (`ー':;;;;;;;;;;;;;;;ノ
                       ``''''''``'''''´

838:デフォルトの名無しさん
06/11/30 22:44:38

アセンブラっていまどこでインストールすればいいんだ?
IDE使わずに100%フリーな環境でそろえたいんだけど


839:デフォルトの名無しさん
06/11/30 22:46:57
Linuxでも使え

840:デフォルトの名無しさん
06/11/30 22:50:35
会社がWindowsなんだよ

841:デフォルトの名無しさん
06/11/30 23:01:55
仕事しろよ

842:デフォルトの名無しさん
06/12/01 00:23:40
>>838
NASMかMASM>815

843:デフォルトの名無しさん
06/12/01 00:40:22
mingw入れればgasが使えるしC/C++/C99/Fortran/Javaまで1000%FREEEEな環境がそろう
しかもIDE無しでだ

なおこのレスには一部誇張が含まれる

844:デフォルトの名無しさん
06/12/01 00:51:40
>815のリンク先みたら
>このパッケージをインストールするために、お使いのコンピュータ上に Visual C++ 2005 Express Edition がインストールされている必要があります。

これフリーなのか?

845:デフォルトの名無しさん
06/12/01 01:04:48
ふりーだ。

846:デフォルトの名無しさん
06/12/01 01:11:53
無料だがfreeではない

847:デフォルトの名無しさん
06/12/01 01:12:15
でもIDEじゃねーか

848:デフォルトの名無しさん
06/12/01 05:14:01
リンカーのためだけにインストールしてんだろ?
それだけ取り出して IDE本体は削除すればいいんじゃね?

849:デフォルトの名無しさん
06/12/01 07:03:15
>>844
インストール中にTempディレクトリを見ると、VS2005EEなしでも取り出せるな。

850:デフォルトの名無しさん
06/12/01 08:47:45
ちなみに>>815は商用不可だ。

851:デフォルトの名無しさん
06/12/01 19:23:12
CodeZineでx86のアセンブラの連載やってる筆者、リア中らしいよw

そういわれてみるとちょっと文章変だったり、ところどころ勘違いっぽい記述があるけど
それを差し引いてもすごいよな。

852:デフォルトの名無しさん
06/12/01 23:04:33
リアル中毒者

853:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
06/12/01 23:39:48
それって赤坂玲音のこと?俺の1つ年上じゃんwww

854:デフォルトの名無しさん
06/12/01 23:45:53
いやそっちじゃないよ。
っていうか、その人はそこそこ有名じゃんw
厨房なんて思うわけないよ

855:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
06/12/01 23:51:36
URLリンク(codezine.jp)

じゃあこっちか



大御所ばっかじゃねーかwwwww



856:デフォルトの名無しさん
06/12/01 23:54:01
世話が焼けるなあもう。。
URLリンク(codezine.jp)

857:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
06/12/02 00:07:01
「団子」でなんか投稿してみるかな。。。

858:デフォルトの名無しさん
06/12/04 12:56:36
死ねばいいのに

859:デフォルトの名無しさん
06/12/06 03:44:12
masmの日本語のドキュメントって
どっかでダウンロード出来ないんですか?

860:デフォルトの名無しさん
06/12/07 21:41:09
昔は録音するみたいにテープに記録してたけど、
今はだいぶ便利になったみたいだね。
おっさんはマジで市ねよ。

861:デフォルトの名無しさん
06/12/08 10:58:56
テープは今でも普通に使われているだろ
DDSとか

862:デフォルトの名無しさん
06/12/09 22:31:37
なんだこのスレは・・・たまげたなぁ・・・

863:デフォルトの名無しさん
06/12/10 12:22:32
3ヶ月前の話題の参考になりそう(?)なバイナリめっけた
URLリンク(www.wex.cn)

864:デフォルトの名無しさん
06/12/13 16:36:43
PowerPCでラベルのアドレスをレジスタに入れるにはどうしたらいいのですか?

865:デフォルトの名無しさん
06/12/13 21:08:20
上位と下位を別々に入れる

866:デフォルトの名無しさん
06/12/14 14:05:05
>>865
addis命令というのがあるみたいなのでそれを使ってみます。

867:デフォルトの名無しさん
06/12/15 10:21:25
CELLでつか? Macでつか・・・? はたまた組み込み?

868:デフォルトの名無しさん
06/12/15 17:52:08
>>867
Macですよ。

869:デフォルトの名無しさん
06/12/15 21:29:38
gasでnasmの-f binにあたるものはないのだろうか。
それともld scriptで対処するべきか。

870:デフォルトの名無しさん
06/12/18 22:10:15
>>869
そこは自作スクリプトで対応(ry

871:デフォルトの名無しさん
06/12/18 22:45:39
>>870
やっぱりか。とりあえず__textセクションだけ抜き出す奴を作った。
これで何とかなると思う。ありがとう。

872:デフォルトの名無しさん
06/12/19 01:16:14
ゴルフでもやるの?

873:デフォルトの名無しさん
06/12/19 01:22:59
>>872
そう。Mach-Oでやってるの。
いま494bytesのHello, world!が出来たとこ。
普通にCで作ったら8192bytesでしたよ。
ここまでくるのに苦労しましたわ。

874:デフォルトの名無しさん
06/12/19 18:24:34
メイン部分がこんな感じのcomならもうちょい縮まる。
mov ax,09h
mov dx,offset msg
int 21h
msg db 'Hello world!',0dh,0ah,'$'

875:デフォルトの名無しさん
06/12/19 21:25:03
>>871
ブログで書いてたやつか?

876:デフォルトの名無しさん
06/12/20 09:52:28
>>874
そのメッセージ部分で終了できるのか?

877:デフォルトの名無しさん
06/12/20 10:00:31
ax=0009なので何もせずに終了

878:デフォルトの名無しさん
06/12/20 19:19:45
>>875
そうそう

879:874
06/12/20 20:01:58
ミスとか訂正。

mov ah,09h
mov dx,offset msg
int 21h
mov ah,4ch
int 21h
msg db 'Hello world!',0dh,0ah,'$'

880:デフォルトの名無しさん
06/12/21 13:11:32
>>879
縮めるんなら、
mov ah,4ch
int 21h

ret
にする


881:デフォルトの名無しさん
07/01/03 01:05:53
って優香、MASM6以上ならエンディングコードは自動生成だろ?

882:デフォルトの名無しさん
07/01/12 15:37:46
アセンブラを殆ど覚えましたが、死にたいです。

883:デフォルトの名無しさん
07/01/12 17:07:24
なら僕も死にたい!

884:デフォルトの名無しさん
07/01/12 17:11:00
私も!

885:デフォルトの名無しさん
07/01/12 18:19:26
俺は全然覚えてないけど、俺も死にたい!!

886:デフォルトの名無しさん
07/01/12 19:14:23
                ∥
           ___  ∥
       /    `ヽ∥
      ,:'      、ゑ
     ,'    ;  i  八、
     |,! 、 ,! |  ,' ,〃ヽ!;、
      |!| l川 l リへ'==二二ト、
     リ川 !| i′  ゙、    ', ',
     lルl ||,レ′   ヽ   ,ノ ,〉
       |川'、  ,,.,.r'"    ,,ン゙
        `T"  ! ,/ '.ノ,/|
         /   ,!´ !゙ヾ{ |
          /   ,'   i ゙ ! ,l゙
      ,r‐'ヽ-、!   ',  l|
      {    `ヽ   !  「゙フ
      ,>┬―/   ;  i,`{
     / /リ川'        ', ゙、
    / ,/            ゙、 ゙、
   ノ  /           ', `、
   \_/   ;          ゙、ヽ、
    l__   !        ___〕 ,、l
       ̄`‐┬―r┬‐r'´ `'‐'′
           |  .! |  |
           |  | .|  |


887:デフォルトの名無しさん
07/01/12 23:03:06
今からアセンブラ殺す

888:デフォルトの名無しさん
07/01/12 23:17:59
>>887
通報しますた

889:デフォルトの名無しさん
07/01/13 18:44:00
祭りの予感!!!!!!!!!

記念パピコ

890:デフォルトの名無しさん
07/01/14 01:13:38
すみません、ELFフォーマットの仕様についてですが
日本語で解説してあるサイトをご存知の方いらしたら教えてください。
色々検索しても英語の情報ばかりで理解できず困っています。
宜しくお願いします


891:デフォルトの名無しさん
07/01/14 01:27:07
elf フォーマット でぐぐれ

892:デフォルトの名無しさん
07/01/14 01:35:37
日本語の情報が欲しいときは日本語を検索ワードに入れたらいいよ。

893:デフォルトの名無しさん
07/01/14 01:37:12
URLリンク(www.amazon.co.jp)

ぐらい買えよ

894:デフォルトの名無しさん
07/01/14 01:39:40
おとこわりだ!

895:デフォルトの名無しさん
07/01/14 10:55:58
港で噂の「BINARY HACKS」(ISBN:978-4873112886)でも買いなさい。
港で話題の「GNU開発ツール」(ISBN:4-903708-01-2)もいいと思うぞ。


896:デフォルトの名無しさん
07/01/14 11:12:47
港(みなと)で噂や話題だったりするのか。
漏れは陸(おか)の人間だから巷(ちまた)で話題の本を探すよ。

897:895
07/01/14 18:21:49
ウソじゃないもん!!
アワビをくわえた尼さんが話してたんだもん!!

ほら、こんなに仲間が。↓

港で噂 の検索結果 約 134 件


898:デフォルトの名無しさん
07/01/14 18:48:02
俺はすまたでも全然オッケーですよ

899:デフォルトの名無しさん
07/01/14 22:48:51
>>897
チトワロタ

900:デフォルトの名無しさん
07/01/19 02:17:36
SALで最上位ビットを特別視しなくていいのはどうして?
たとえば10000001をシフトすると、CFが1になり、値は2となります。
左シフトでは、符号付きの数値には対応してないという事でしょうか。
いや、まさかそんなわけないだろし。

901:デフォルトの名無しさん
07/01/19 02:47:09
オーバーフローですが

902:デフォルトの名無しさん
07/01/19 02:50:44
>>900
もしかして
00000011
ってなると思ってる

903:デフォルトの名無しさん
07/01/19 03:28:06
>>902
CFが1で、00000010になるのではないかと。

>>901
あーそっか。-63か-64かは知らないが、絶対値がこれ以下なら
上から2番目のビットも1だから負のままだし、
絶対値がそれ以上の場合にはオーバーフローになるわけね。
tnx.

904:デフォルトの名無しさん
07/01/23 01:03:12
「アセンブリ言語の教科書」読んでてよく分かんないのだけど、
MOV AH, 4CH
INT 21H
とシステムコールを利用した時、スタックに値があれば、
終了するのではなく、その値のアドレスに飛ぶのでしょうかね?
Cで例えるなら、exit()でなくreturn相当なのかな。

905:デフォルトの名無しさん
07/01/23 03:40:16
exitであってる
exit(AL)になる

returnはret

906:デフォルトの名無しさん
07/01/23 06:28:00
>>904
前提が書いてないから勝手にMS-DOSと仮定するが、
そのシステムコールではスタックは関係ない。

907:デフォルトの名無しさん
07/01/23 21:23:33
>>905
>>906
どうもです。&& 環境書いてなくてすまんかったです。

しかし、exitであるならば、あの本のコードは少し変なのかな。
……と思ったら、web上の正誤表見たら訂正されてたorz

908:デフォルトの名無しさん
07/01/26 17:26:54
#define EMULATE_WINDOWS while(1) { __asm__("cli hlt"); }

ちょwwww

909:デフォルトの名無しさん
07/01/26 17:31:25
何ですかそれは

910:デフォルトの名無しさん
07/01/26 17:33:45
あてずっぽで言うと、
EMULATE_WINDOWSを展開すると、haltするコード

だが、笑い所がいまいち分からない
だってコードの使い所が分からない

911:デフォルトの名無しさん
07/01/26 17:36:05
Windowsのエミュレート=ハングアップっていいたいんだろう。
面白くもなんともないが。

912:デフォルトの名無しさん
07/01/26 19:45:29
アセンブラ覚えたての消防がやってる。

913:デフォルトの名無しさん
07/01/28 12:29:15
特定の並びの特権命令をトラップしてエミュレーターに移行するんだろ
よくある実装だ

914:デフォルトの名無しさん
07/02/01 20:41:18
「初めて読む8086」読んでるんだけど、
linuxなんでdebugコマンドが無くて試せず辛い。
同じようなコマンドにはどのようなものがあるでしょうか。

915:デフォルトの名無しさん
07/02/01 23:05:52
>>914
たぶん期待する物はない。
gdbはそういう用途では使いものにならんからのう。
adbとかたまに欲しくなりますな。


916:デフォルトの名無しさん
07/02/02 00:21:17
言われて初めてadbが無いことを知った。

昔のunixには標準で入ってたんだがなぁ。ccが消えた頃から無くなったんかねぇ。


917:デフォルトの名無しさん
07/02/02 02:13:06
>>915
うーん、そうなのですかぁ。
なんとも残念無念。

918:デフォルトの名無しさん
07/02/05 21:40:54
フリーのDOSはいろいろあるけど、その中には1つくらいDEBUGを持ったものもないか?

919:デフォルトの名無しさん
07/02/05 21:51:01
URLリンク(www.ibiblio.org)

920:デフォルトの名無しさん
07/02/05 22:07:35
つーかDOS上で動くdebug互換(?)デバッガなら結構ある。

921:デフォルトの名無しさん
07/02/14 00:12:45

こんばんはこんばんは!
初級Javaプログラマだけど
アセンブラを勉強するための環境って最近はなにが多いの?
アセンブラってCPUによって違うんだよね?
x86系がほとんどなの?
64bitのはまた書き方違ってくる?




922:デフォルトの名無しさん
07/02/14 00:46:02
俺はアセンブリの勉強はCASLだったな
初心者向けの書籍がこれほど多いアセンブリ言語も無かろう

923:デフォルトの名無しさん
07/02/14 01:11:16
>情報処理技術者試験の教材用のアセンブリ言語。
>正式名称は,CASL II(きゃすうるつー)。

へぇー
でも実用的じゃないアセンブリよりも、Intel系のアセンブリをやったほうが
いい気がするんだけど、どっちでも勉強になるからかわんねって感じなのかな



924:デフォルトの名無しさん
07/02/14 01:25:55
CASL II は午後のテストの点稼ぎになるからある意味実用的。
x86のアセンブラは今や一部の人を除いて利用される頻度は少ないのである意味あまり実用的でない。

925:デフォルトの名無しさん
07/02/14 01:27:26
どっちも大した役に立たないという点では似たようなもんだな。

926:デフォルトの名無しさん
07/02/14 01:33:26
んじゃあ、いま一番人気のアセンブラはなに?

927:デフォルトの名無しさん
07/02/14 01:40:58
CELL。
つーか、誰かやってくれ。今なら給料出すから。

928:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
07/02/14 01:44:08
フィックスター社員乙

x86アセンブラだろ常識的に考えて。

929:デフォルトの名無しさん
07/02/14 01:44:25
あぁPS3にものってるやつか
でも、初心者には敷居がたかそうだなぁ

930:デフォルトの名無しさん
07/02/14 01:56:34
まあでもx86あたりもMMXやSSE使いたい程度ならemmintrin.hで済むしなぁ。

931:デフォルトの名無しさん
07/02/14 02:00:01
x86は人気つーより手近なPCで出来るから数が多いだけだろ。

932:デフォルトの名無しさん
07/02/14 02:03:56
これからゲームプログラマになるならCELL?

933:デフォルトの名無しさん
07/02/14 02:14:40
>>932
普通はコンパイラでやるだろ。
PowerPC系のアセンブラも覚えておいて損はないだろうけど、
これから未来永劫CELLが使われ続ける訳でもなし。

934:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
07/02/14 02:20:32
まあ最初はCOMET2/CASL2でいいですね

935:デフォルトの名無しさん
07/02/14 02:24:01
まあ、バイナリエディタで機械語直書きからアセンブラ、コンパイラ組み込み関数までいろいろ書き方はあるけど、
自分が使うCPUにどういう命令があって、その実行にどれだけのコストがかかるかという知識がいらなくなる時代はまだ当分こないだろうな。

重要なのはそういう知識であって、アセンブラの文法とか機能はわりとどうでもいい。

936:デフォルトの名無しさん
07/02/14 02:25:59
そういう時代がきちゃったら、プログラマは廃れちゃうな
実力が

937:デフォルトの名無しさん
07/02/14 10:06:54
CASL2のバイブル的な本ってどれですか。
入門書とかじゃなくて。
詳しく買いてるやつ。

938:デフォルトの名無しさん
07/02/14 13:03:47
最近やたらめったらいろんなアーキテクチャの仕事があるんで
インストラクションセットを覚える暇すらない
みんな8bitとか16bitとかだけど
命令表を斜め読みして
「げ、左シフトねーじゃんこのCPU」とか
「符号反転ねーよ」とか
「乗算命令じゅーよー」だの
「わは。レジスタ4つ、こっちは32個ー」とか言いつつテンパってる

939:デフォルトの名無しさん
07/02/14 13:55:11
>>938
でも一つもアセンブリ齧ってないとそれも判らないんだよね

940:デフォルトの名無しさん
07/02/14 16:04:08
>>938
たぶんそう思ったヤツが高級言語作ろうと思ったんだろうな

941:デフォルトの名無しさん
07/02/14 16:28:30
>>938
4つのせりふのうち3つは何だかわかった。

orz


942:デフォルトの名無しさん
07/02/14 17:22:05
しかもハーバード型、ノイマン型も満遍なく取り揃えられておりますorz

943:デフォルトの名無しさん
07/02/14 23:04:01
  そだ  |------、`⌒ー--、
  れが  |ハ{{ }} )))ヽ、l l ハ
  が   |、{ ハリノノノノノノ)、 l l
  い   |ヽヽー、彡彡ノノノ}  に
  い   |ヾヾヾヾヾヽ彡彡}  や
  !!    /:.:.:.ヾヾヾヾヽ彡彡} l っ
\__/{ l ii | l|} ハ、ヾ} ミ彡ト
彡シ ,ェ、、、ヾ{{ヽ} l|l ィェ=リ、シ} |l
lミ{ ゙イシモ'テ、ミヽ}シィ=ラ'ァ、 }ミ}} l
ヾミ    ̄~'ィ''': |゙:ー. ̄   lノ/l | |
ヾヾ   "  : : !、  `  lイノ l| |
 >l゙、    ー、,'ソ     /.|}、 l| |
:.lヽ ヽ   ー_ ‐-‐ァ'  /::ノl ト、
:.:.:.:\ヽ     二"  /::// /:.:.l:.:.
:.:.:.:.:.::ヽ:\     /::://:.:,':.:..:l:.:.
;.;.;.;.;;.:.:.:.\`ー-- '" //:.:.:;l:.:.:.:l:.:
難しい問題ほど、解けると達成感あるのよね。

944:デフォルトの名無しさん
07/02/17 21:49:42
extern unsigned int crcTable[];
unsigned int updateCRC32( unsigned char *src, unsigned int size, unsigned int crc )
{
while ( size-- )
crc = ( crc << 8 ) ^ crcTable[ ( crc >> 24 ) ^ *src++ ];
return crc;
}
誰かこれを高速化して下され。
Cの範囲じゃやはりこれが限度っぽい。
後はアセンブラしかなさそうなのです。

945:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
07/02/17 22:05:55
せめてここまでコード最適化してからだね。
アルゴリズムの改良を試みずにアセンブラに頼るのは知性の敗北
URLリンク(www.intel.co.jp)


コードはこちらからどーぞ
URLリンク(sourceforge.net)

946:デフォルトの名無しさん
07/02/17 22:26:40
移植性のないポインタ変換とエンディアンの決め打ちがあるから
どちらかというとアセンブラで書くべきアルゴリズムだけどな

947:デフォルトの名無しさん
07/02/17 22:35:18
>>937
CASLなんて通過した後は一切触らないから
毎年IPAが配ってる案内書に付属してる仕様書だけで十分。
命令が読めりゃ後は何も困ることないでしょ。

948:デフォルトの名無しさん
07/02/18 05:22:21
>>944 のコードのままでも、do whileにしただけで1命令は速くなるね。

949:デフォルトの名無しさん
07/02/18 06:47:01
mov eax, crc
mov ecx, size
mov esi, src
rep crc32


950:デフォルトの名無しさん
07/02/18 08:06:08
>>948
処がだ、最近のコンパイラはforに特化した最適化をすることが多いから一概には言えない。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch