アセンブラを知らない名無しさん
■ このスレッドは過去ログ倉庫に格納されています
0001しーげんがー
NGNG0002デフォルトの名無しさん
NGNG0003名無しさん
NGNGオモシロ
0004デフォルトの名無しさん
NGNG方法があったら教えてください。DOSでも
char *p = mmap(open("巨大file.txt"));
memcopy(p, "ファーファ", strlen("ファーファ"));
みたいなことしたいんで。
00051
NGNGMappingIn8086(任意の式
00064>5
NGNGそれと、アセンブラは?
0007デフォルトの名無しさん
NGNGなんでEAXはAXともう一つに別れないのですか?
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNGハァ?>8
0010ttt
NGNGいくらなんでしょうか?
0011デフォルトの名無しさん
NGNGサブルーチン作ってください。
B / C = H ... L
入力 出力
レジスタは呼ぶ前に全部退避しますんで大丈夫です
今晩とりに来ますんでよろしくお願いしま〜す
001211
NGNGえーと
B * C = HL
って感じでね。これも夜にいっしょにとりに来ま〜す。
あ、あと割り算も掛け算も負の考慮はしなくてもいいですよ〜
よろぴく ♥
00131
NGNG0014デフォルトの名無しさん
NGNGあせんぶらだったら・・・ってそれじゃ高級言語
使った方が早い?
0015デフォルトの名無しさん
NGNG忘れてるだけなら思い出すと思うけど、
シフトして足す又は引くだけじゃないか。
「取りにくるからやっててね」って・・・
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG書けるようなのいないだろ! とか。
00194>1
NGNG何かのライブラリ関数でしょうか
教えてください。
002011
NGNGあの、仕様変更お願いします。
BCとHLはいいんですけど、
Aとかは使わないでくださいね
なんかキャリーフラグとかその辺全部
サブルーチン側で退避しといてください。
じゃお願いしますネ ♥
0021デフォルトの名無しさん
NGNGいや、だんだん育ってきたようだぞ
0022デフォルトの名無しさん
NGNG002311
NGNGあのーとりに来たんですけど、まだですか?
一応納期が明日の昼なんで、午前中には試験まで済ませたいんですよ
とにかく、仕事はきっちりお願いしますね。
それから中間報告くらいはお願いしますよ、ほんとに
0024C厨房
NGNG私は2年前ぐらいからC言語をコツコツと勉強しておりますです。
アセンブラは全く触る機会がなかったのですが、アセンブラは他の言語と
比べて難しいのでしょうか?
0025デフォルトの名無しさん
NGNG0026>24
NGNGがアセンブラはさっぱりじゃけん。機種依存激しいし。
00271
NGNG0028デフォルトの名無しさん
NGNGただ8086のsegmentとか使うとすると面倒臭いかも
68kや386以降のリニアなやつだと楽。
機種依存は当然・・>25
0029ああ、今気づいた・・
NGNG003111
NGNG発注してた関数はどうなったんですか?
・・・朝までまだ時間があるとはいえ、ちょっと仕事遅くないですか?
0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNG0034はてな?
NGNG0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG0037名無しさん
NGNG0038デフォルトの名無しさん
NGNG34=35=36=37
確定しました
0039デフォルトの名無しさん
NGNGダウト
0041マジレスさん
NGNGどういうソフトを使えば良いですかね?
なにぶん、高校のガキなもんですから
プログラマーの皆さん、お手やらわらかにお願いします。
0042デフォルトの名無しさん
NGNG実用ならVCでインラインアセンブラとか
0043アセンブラを知らない厨房たち
NGNGアセンブラを知らずにぼくらは育った
0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNGVC5じゃMMXの命令は使えないんですか?
6でSP4以降じゃなきゃダメ?
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNGLD A,C
OR A
RET Z
LD HL,0
LD E,B
LD B,C
LD D,0
LOOP: ADD HL,DE
DJNZ LOOP
RET
0049デフォルトの名無しさん
NGNG昔某メガデモのソース読んでてMMX使ってた記憶がある。
005048
NGNG>>12
B * C = HL
LD HL,0
LD D,0
LD E,B
LD B,8
LOOP: RR C
JR NC,SKIP
ADD HL,DE
SKIP: SLA E
RL D
DJNZ LOOP
RET
たぶんこれでOK。
HD64180やR800だったら乗算命令があるんだけどな。
0051汗を吸収するブラジャー
NGNGプログラムの勉強してみたいのですが
どういう風にすればいいのでしょうか?
helloworld くらい表示できるようになりたいです。
windowsなので、
DOS窓は開きたく無いです。
あと、ハンドアセンブルもしたく無いです。
VC++の開発環境が有るのでデバッグだけはできます。
ネタっぽいですが、いちおうマジレスきぼんします。
005248
NGNGめんどくさ。もう書かん。
さよなら。
0053デフォルトの名無しさん
NGNG氏ね
0054デフォルトの名無しさん
NGNGどういう風に表示するかだけど。俺も昔やったことあるけど
TurboAssemblerで直接作ったから、VCはよく知らん。
単にMessageBoxで表示したいなら、pascal的にpushして
apiを呼ぶだけ。最後はExitProcess APIを呼べばよかったけ
かな。
メッセージポンプなんかもマトモに書こうとすると氏ぬぞ(w
0055デフォルトの名無しさん
NGNG模範回答例を教えてもらえませんか?
0056デフォルトの名無しさん
NGNGまず、Windowsが要求するスタートアップルーチンを書いてください。
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNGこんなんじゃだめ?
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
char windowTitle[] = "Hello Window";
char messageString[] = "hello";
_asm
{
push 0
lea eax, DWORD PTR windowTitle
push eax
lea eax, DWORD PTR messageString
push eax
push 0
call DWORD PTR MessageBoxA
}
return (0);
}
0059デフォルトの名無しさん
NGNG.text
xor %eax,%eax
mov $message,%ebx
push %eax
push %ebx
push %ebx
push %eax
call _MessageBoxA@16
push %eax
call _ExitProcess@4
message:
.ascii "Hello world.\0"
0060デフォルトの名無しさん
NGNG8080系って? 8085でも使ってるの?
ちゃんとCPU名書かないとレス付かないと思うよ。
0061デフォルトの名無しさん
NGNGttp://www.geocities.co.jp/SiliconValley-PaloAlto/5989/index.html
VCとMASMでのサンプルがあるよ。
0062デフォルトの名無しさん
NGNGそりゃ 16bit アプリだけだろ。
0063デフォルトの名無しさん
NGNGTASM なら push しなくても call 関数名 stdcall,引数1,引数2 ...
で済むと思われ
0064先生、分かりません
NGNG0065デフォルトの名無しさん
NGNG時代?
0066デフォルトの名無しさん
NGNGちなみに、コンパイラは、編集者
インタプリタは通訳者です。
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNGアセンブラ組んでるんですが、
$$〜〜と
最初に記述しますが、
$$はどういう意味なのでしょうか?
0070デフォルトの名無しさん
NGNG通貨単位
#「トライガン」
0071デフォルトの名無しさん
NGNGダブドルと読むらしい
って、MACは知りません。m(_ _)m
0072デフォルトの名無しさん
NGNGワンピースならドルドルとかいってるだろう多分
0073デフォルトの名無しさん
NGNG0074>12
NGNG遅レスだが、これでいいのでは?
B*C=HL
LD DE,0
LD HL,0
LD E,B
AND A
LOOP1: LD A,C
CP 0
JP Z,OWARI
SRL C
JP NC,LOOP2
ADD HL,DE
LOOP2: SLA E
RL D
JP LOOP1
OWARI: END
0075デフォルトの名無しさん
NGNGツッコミどころ満載ですな
0076>74
NGNG他のやりかたもありそうだけど
0077デフォルトの名無しさん
NGNG突っ込み1) LD DE,0 は LD D,0 で良い
突っ込み2) AND A に何の意味が…
突っ込み3) CP 0 こそ AND A にしとけ
突っ込み4) JR でなく JP を使う理由は?
つーわけで試しに組んでみた
LD HL,0
LD A,B
LD B,L
JR L3
L1: RRA
JR NC,L2
ADD HL,BC
L2: SLA C
RL B
L3: OR A
JR NZ,L1
久しぶりだから間違ってるかも知れんが
0078デフォルトの名無しさん
NGNGnot eax
and edx,eax
を命令一つで出来ませんか?
007978
NGNGnot ebx
and ebx,[eax]
xorみたいなの有りませんか?
0080デフォルトの名無しさん
NGNGプログラムを組んでいて、片方を反転させた論理積を取る必要が
ほとんどない為、そんな命令はx86系には、ありません。
この場合、大抵は、notを消せるはずなのでプログラムを見直すか、
それでも、notを消せないなら、諦めてそのまま書きましょう。
0081デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNGMMX(586+?)もSSE(786+?)も出てきていいんじゃないのかな。
AMDの3DNow!すらも、x86と括る以外に無いと思うけど。
#問題は、>>78の最低動作保証CPUがどうか、ちゅうことで。
008478
NGNG他でがんばります。
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNGhttp://www.ascii.co.jp/TK-80/
どうでしょう?役に立ちますかね?
0087デフォルトの名無しさん
NGNGこの人が作ってるのね。タイガー計算機を所有の稀な人。
http://www.nn.iij4u.or.jp/~masa-s/
0088デフォルトの名無しさん
NGNGRS232Cからのデータ入力するプログラムをつくってます。
システムコールしてalのデータをDSに入れてるのですが、
mov ah,03
INT 21h
mov ds:[bx],al
bxはベースレジスタになってます
というエラーがでます。
どうしたらよいでしょうか?
ほかのポインタレジスタは試しましたが
同じエラーでした。
0089デフォルトの名無しさん
NGNGパスカル(言語じゃなくて数学者の方)もこんな
計算機作ろうとしてたんだっけ?
0090デフォルトの名無しさん
NGNG使えないのですか?
0091デフォルトの名無しさん
NGNG0092
NGNGmov ah,03h
int 21h
xor ah,ah
mov ds:[bx],ax
dsの値がおかしいとか。
0093デフォルトの名無しさん
NGNG009488
NGNGコンソールアプリケーションで作ってます。
mov bx,[bp+6]
mov ax,[bp+8]
mov ds,ax
とやって
mov ah,03
INT 21h
mov ds:[bx],al
としてます。
0095デフォルトの名無しさん
NGNGVCの仕様を知らないから何とも言えませんが、
mov bx,[bp+6]
mov ax,[bp+8]
が上手く行くのなら、
mov [bx],al
にしてやれば、OKだと思います。
ところで、dsの意味を分かって使ってますか?
これだけでは、判断出来ませんが、でもdsの中身が気になるので…。
0096デフォルトの名無しさん
NGNGにしても使えないよ>94
っていいたかったんだけど。伝わってるのかな?
0097デフォルトの名無しさん
NGNG94じゃないけど、
VC6++のインラインアセンブラからは、
DOSのファンクションコールは呼べないの?
0098デフォルトの名無しさん
NGNG呼べません。
一度試してみては?
0099デフォルトの名無しさん
NGNGRS232Cからの入力や出力は
ほかに方法はあるのですか?
0100デフォルトの名無しさん
NGNGCreateFile
0101デフォルトの名無しさん
NGNGドライバ作りましょう。
Windows2000だと直接たたけないし。
0102デフォルトの名無しさん
NGNGとかは使えないのですか?
00h〜ffh
までのポート番号使うみたいですが、
どういう風に使うのでしょうか?
0103デフォルトの名無しさん
NGNG調べてみたのですが、「ペアリング」という単語が見つかりませんでした。
「ペアリング」による最適化は過去のもの??
0104103
NGNG0105103
NGNGどうしたらよいのですか?
0106デフォルトの名無しさん
NGNGあれまだあんのかな?
0107デフォルトの名無しさん
NGNG0108コンパイラを知らない名無しさん
NGNG1は「アセンブラ」を知らないと言っているんだ。
けして「アセンブリ言語」のことではないぞ。
また間違ってもインストラクションの話しでもない。
さて、masmのコマンドラインオプションの話しでもするか。
0109あせん
NGNGでいじってきたが、、アセンブラ使わないでやる方法は
やったことねぇ。
0110MMX
NGNGSSEとかSSE2
3DNOW!+とか、浮動小数点が演算は分かるが、その他に整数演算?は
何があるのか?
浮動小数点だけ?
0111デフォルトの名無しさん
NGNGおいおい
Z80くらいならダンプ直打ちくらい平気でやるだろ。
って組み込みじゃZ80使わないのかな? てへっ
0112コンパイラを知らない名無しさん
NGNGCコンパイラわかりません→起動の仕方、オプションなど
アセンブリ言語わかりません→文法、セマッティング、擬似命令の使い方など
アセンブラわかりません→起動の仕方、オプションなど
インストラクションわかりません→インストラクションの動作など
0113デフォルトの名無しさん
NGNGなんじゃそら? ハンドアセンブルの間違い? てへっ
0114デフォルトの名無しさん
NGNGデバッグ中ダンプ画面見て手パッチ入れるときとか
面倒くさがりなので16進直接打ってたの。てへっ
0115デフォルトの名無しさん
NGNGなーるほど。てへっ
0116103
NGNGうう。高くて買えないような・・・。
ところで、今Pentiumのため最適化について勉強しているのですが、
interlockとかparingとかでてきますが、
こういうのって他のCPUにも通用するのでしょうか?
で、抽象化されたCPUについて勉強したいのですが、
参考になる資料など教えてもらえませんか?
0117103
NGNG略でしたよね・・・。
0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNGより速いメモリブロックのコピーって何ですか?
0121デフォルトの名無しさん
NGNGPentium なら
movsd
movsd
movsd
movsd
dec ecx
jnz LOOP
とか書いた方が速かったような
0122デフォルトの名無しさん
NGNG同じような世代のCPUには、通じるんじゃないかな。マイクロプロセッサの
高速化方法は、基礎の部分は割合似通ってるから。
>>120
Pentium MMX以降だと、QWORDでそろえて、MMX使うとか。
P3以降だと、SIMDの128bitレジスタと、キャッシュ制御の命令を駆使するとか。
0123デフォルトの名無しさん
NGNGmovsd
movsd
movsd
movsd
loop LOOP
じゃなくて?
0124デフォルトの名無しさん
NGNG方法がわかりやすく載っている資料やサイトってないでしょうか?
mov eax, esp -> 0x89 0xe0
add eax, 4 -> 0x83 0xc0 4
mov eax, [eax] ->0x8b 0
inc eax -> 0x40
ret 4 -> 0xc2 4 0
例えば上は、int __pascal inc(int n);という関数で、
nに1を足した値を返す関数のコードを書いたつもりです。
この辺は8086と同一のコードですが、定数やアドレスを32bitで扱う
場合って多少変化しますよね?
その辺りの変換規則が手持ちの資料ではよくわかりませんでした。
0125デフォルトの名無しさん
NGNGLOOP命令は遅いので>>121のようにやった方が速いです。
0126名無しさん
NGNG0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNGいいwebページない?最適化うんぬんとかの。
0129124
NGNGVCの/FAcオプションのcod出力でほぼ解決しました。
(変換規則はまだよくわかってないけど)
参考になる資料やサイトの情報は引き続きお願いします。
0130デフォルトの名無しさん
NGNGhttp://www.csl.sony.co.jp/person/fnami/pentopt.htm
0131116
NGNGありがとう。じゃあ、とりあえず何か一つのCPUについてやりこめば、
ほかでも通用する可能性が高いというわけですね。
とりあえず、Pentium(x86)をがんばって勉強しまっす。
0132デフォルトの名無しさん
NGNGとかのリンクって他のアセンブラスレではがいしゅつなんじゃないか?
所でこのスレ使ってくの?
0133デフォルトの名無しさん
NGNGここと、もう一個所。
0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNG現在の時刻を得る(BIOS等を利用する)具体的な方法を誰か知りませんか?
参考になるホームページでも良いので、知ってたら教えて下さい。
0136デフォルトの名無しさん
NGNG古い本ひっぱりだしてみたよ
ハード的にはCMOSを読めばいいみたい
port70HにCMOSアドレス+80Hを出力
その後port71Hからin
CMOSアドレス
00H 秒
02H 分
04H 時
06H 曜日
07H 日
08H 月
09H 年
ただし、NT系でPortアクセスできるかどうかは不明
0137デフォルトの名無しさん
NGNGNTではできないよ。たぶんデバドラ書けば別だろうけど
でもそういえば昔、NT上でCMOSいぢるライブラリ見たことあった様な・・
0138デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNGソース付ききぼん
0141デフォルトの名無しさん
NGNG別にVMwareでもVirtualPCでもいいけど
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNGthx!
0144デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNGあの時代はやるしか無かったと言ったほうがいいかな。
0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNGx86 の
0149147
NGNG0150147
NGNG0151147
NGNG0152デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNGNASM。SSE2まで対応してるバージョンもある。
0155デフォルトの名無しさん
NGNGNASMで検索したら引っかかりました
どうもありがとうございます
これで、アセンブラが作れる・・・
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNGPC88付属モニタの形式ってザイログ式じゃないですよね。
ld hl,ffff が
lhld ffffってなやつ(INTEL式なのか?)
当時からN●Cがドキュってのはわかっているんですけど,何でこーなってしまったのかおしえれ。
0158157
NGNGxINTEL モトローラ形式か?
検索引っかからんので教えてください。
0159デフォルトの名無しさん
NGNGZ80が出る前にインテルが8080というCPUを出していて、Z80はこの8080の
上位互換になってました。LD HL,nnはZ80用にザイログ作ったニーモニック
で、LHLD nnは8080用にインテルが作ったニーモニックですね。
8080は、日本ではワンボードマイコンに少し使われた程度だと思うんですが、
アメリカでは結構採用例があったのか、8080のソフト資産が割とあったみたい
ですね。オリジナルのMicrosoft BASICも8080の命令しか使ってないはず。
PC-8801もMicrosoft BASICだったわけで、モニタのアセンブラがインテル
表記だったのもその関係なのかも。あと、ザイログ形式よりもインテル形式の
方が、人間には分かりにくいけど命令のフォーマットが単純なのでアセンブラが
作りやすいです。これもインテル形式が採用された理由かも知れません。
0161157
NGNG↑これが原因に思えてならない。当時からヤッテくださったんですねM$さんは
長年の謎が解けたような気がします。ありがとです。
0162デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1002267809/l50
0163デフォルトの名無しさん
NGNG仮想メモリで32ビットアドレス表現なんだけど
どうやってプロセッサは一般保護例外って判断できるの?
セグメントがページングに変わるから判断できないと思うんだけど・・・。
0164デフォルトの名無しさん
NGNGOSのセキュリティ云々にも直に関わる問題だし。
ちょっと旧式のOS解析したら秘密はとけます。
最近のは上手く隠しとおせているよね。←本当に?
0165デフォルトの名無しさん
NGNGものがあるよね。アプリケーションその物に対してはそりゃあそ
れなりの最適性を加えられるんだけど・・・なぁ?
0166デフォルトの名無しさん
NGNGATHlonあたりはどうなんですか?
最近はAthlonもSSEつかえるということだから
P5,SSE,SSE2,Loop付の四系統で考えてんだけど
0167デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています