2011年10月1期プログラムアセンブラ初心者スレッド TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
形態素解析と日本語処理
C言が全く分からない俺を神が救ってくれるスレ
【Lisp】プログラミング言語 Clojure #2【JVM】
スレを勃てるまでもないC/C++の質問はここで 20


アセンブラ初心者スレッド


1 :11/08/28 〜 最終レス :11/12/14
初心者OK!質問大歓迎!のアセンブラのスレッドです。
基本情報の勉強中の人、PICやH8を勉強中の学生などなど…

2 :
このスレッドは天才pンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
                  京都大学霊長類研究所

3 :
アセンブラ最高や!
C言語なんか最初からいらんかったんや!

4 :
マシン語最高や!
アセンブラなんて最初からいらんかったんや!

5 :
アセンブラを勉強するのにいい、unix系の本がありますか?

6 :
だいぶ前に落ちたっきり次スレが立たなかったアセンブラスレの
次スレを立てましたので、以後そちらで。
http://hibari.2ch.net/test/read.cgi/tech/1314512680/l50

7 :
>>6
初心者用らしいしここでいいんじゃね

8 :
初心者用なら質問用テンプレが居るな、特にアセとなると
石、アセンブラが何か分からんと答えられんケースあるし
【CPU】 アセンブラではCPU(通称「石」)によって回答が全く違ってくることも多いので必須です。
     まったく分からなくても「Windowsが動くCPUです」など、分かるだけのことを書いてください。
【アセンブラ】 これも分かれば。コマンド名とかでもいいです。
あとは何をテンプレにすべき?

9 :
書籍なんかがあればいいと思うけど

10 :
質問します
『独習アセンブラ』という本を買って来て、文字を出力するプログラム(p.5)をつくってみたのですが、うまく動きません
nasm -f bin dispchar.asm -o dispchar.com
こう入力してから dispchar.com を動作させると、つぎのように表示されました
このバージョンの \dispchar.com は、実行中の Windows のバージョンと互換性がありません。コンピューターのシステム情報を確認して、
プログラムの x86 (32 ビット) のバージョンと x64 (64 ビット) のバージョンのどちらが必要か確認してから、ソフトウェアの発行元に問い合わせてください。
windows 7 64 bit でとりあえず動作させたいのですが、どうすればよいのでしょうか?
【CPU】 intel core i5-2400
【アセンブラ】 NASM version 2.09.10 compiled on Jul 15 2011

11 :
dispchar.asm のソースを一応載せておきます
>cat dispchar.asm
; dispchar.asm
mov ah, 02
mov dl, 31h
int 21h
mov ah, 4Ch
mov al, 0
int 21h

12 :
>>10
それに乗ってるのは16bitのコードだから、win7 64bitでは動かないよ
アセンブラも多分16bitだから動かないんじゃないかな?

13 :
>>12
えっ、そうなのですか
残念です
では64bitの環境で学習できるよいサイトはあるでしょうか?

14 :
NASMはWin32版もある

15 :
ピックやれピック

16 :
>>13
32bitアセンブラコードは。。。
ほとんどwin32API呼び出しで、アセンブラの意味はないしねぇ。。。
>>15の言う通り、PICマイコンでアセンブラした方が遊べると思うけど、こっちのアセンブラが64bitOSで動くかも不安が在るな。。。
ためして見た人居る?

17 :
実ハードで動かすことにこだわらず、エミュ使うのも手だと思うが。

18 :
xpモードで開発&実行

19 :
アセンブラで、C言語のcase文のように書きたいのですけどどう書けばいいですか?
また、イフ文のようにも書きたいんですけどどう書けばいいですか?

20 :
あ、開発環境はMPASM
PIC16F84Aです

21 :
基本的には無理。
定番としてはテーブルジャンプだけど、その石でできるかどうかは知らない。

22 :
call adressを機械語にすると
E8 77 77 77 77 みたいになるけど
この77777777実際のアドレスと違うんだよね
どういう規則でこのアドレスは算出されてるの?

23 :
call命令っつっても対応するオペコードは複数あるんだよ。
E8の場合はIPからの相対アドレスへのnear call。

24 :
相対ジャンプの場合は、石によるけど、ジャンプ命令のアドレスからのオフセットか、
その次の命令のアドレスからのオフセット(8086はどっちだっけ)。

25 :
8086はWindowsのことだよね?
逆算してみたら、次のコードの開始位置からの相対位置ですね

26 :
BSR ラベル:16 で書くのと JSRではどっちのがメモリ食うのか分からないです。
長いならJSRですかね?

27 :
石の種類によるけど、BSRは3〜4バイト、JSRは4〜6バイト。
BSR ラベル:8 と書ける石もあって、この命令は2バイト。
でも、一般的にBSRのほうがJSRよりもマシンサイクルが多い(=遅い)。
その差まで気にかけるほどシビアな条件にはならないようにハード選定時点で
考えられるはず。 ってもう見てないよな(w

28 :11/12/14
暇なんでやってみた
win32だとCでやるのと変わらんわ・・・
;ml hello.asm /link /subsystem:console
.386
.model flat, stdcall
GetStdHandle proto :DWORD
WriteConsoleA proto :DWORD,:DWORD,:DWORD,:PTR,:DWORD
ExitProcess proto :DWORD
includelib kernel32.lib
.data
STD_OUTPUT_HANDLE EQU -11
hello DB 'hello, world',0Dh,0Ah,0
.data?
OUTLEN DWORD ?
.code
mainCRTStartup proc
local STDOUT :DWORD
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov STDOUT,eax
invoke WriteConsoleA,STDOUT,offset hello,14,offset OUTLEN,0
invoke ExitProcess,OUTLEN
ret
mainCRTStartup endp
end
TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
形態素解析と日本語処理
C言が全く分からない俺を神が救ってくれるスレ
【Lisp】プログラミング言語 Clojure #2【JVM】
スレを勃てるまでもないC/C++の質問はここで 20