![]() |
Message Log 09 | Return to Parent Menu |
Last Updated by 07/01/05(Fri) |
| |||
実際のアセンブラコード、 NASM の話題など |
| |||
| |||
: しげちい [98/07/21 Tue 23:31:24] [210.170.184.170] ありました 日本語訳ドキュメント これからじっくり読んできます Sister.DELETEさん どうも有り難うございます これでまたアセンブラプログラマ−に1歩近ずけました。 ずいぶんスロ−ペ−スのような気がしますが がんばってきますんでどうぞ宜しく それでは Sister.DELETE [98/07/19 Sun 09:48:13] [210.164.41.218] NASMマニュアルfor 日本語 しげちいさん、そーですか、ダウンしましたか。たしか、日本語マニュアルは どっかに機械翻訳したようなものがあったはずです。ここからのリンクにあった・・・かなぁ。 あることは確実なので、電脳科学研究所さんとか、http://demo.and.or.jp/とか、そっから リンクでもあるような気がします。たぶん。 NASMはマクロがなんかすごいです。機械翻訳したやつじゃ理解できませんでした(爆)。 フリーでここまで、って感じらしいです。私は実はあまり使ってませんが(死)。こう暑いとゥ・。 でも、NASM用ソース見た限りは結構なものです。ただ、DUPじゃなくてresbまあはreswって 命令を使うようになるんですがゥァ」 いろいろMASMとは相違点はありますが、結構使えるのはもちろんです。ただ、最新版 0.97にはBUGがあるみたいなんですが。普通に使用する際には問題が無いでしょう。 でわ。 しげちい [98/07/18 Sat 00:59:58] [210.170.184.173] ども sisute、DELETEさんの お勧めの NASM DLしました。 でも英語・・・ だれか日本語訳とかもってませんか? なんか すげえ わがままな 質問なんすけど よろしくお願いします chaoh [98/07/15 Wed 23:22:00] [210.175.64.34] Re: Z80 ニーモニック ども、chaoh です。 # Z80 懐かしすぎー。(^^) ほとんど忘れてます。(笑) 既に遅レスですが参考までに…。 > 私の知っているZ80では、このような記述は、出来ないと思います。(東芝製TLCS90、川崎製鉄製でも不可) > 出来るZ80があったら教えて下さい。 確かに Z80 ではこのような記述のアセンブルは無理です。 よって、和 さんのようにするか、アドレスの方をレジスタにするかしかないでしょ う。 # ちなみに自分の使った Z80 アセンブラは NEC PC-8801 上のアセンブ # ラ『HIT-88』やその後継の『ROOT-88』で、作者は 『マシン語秘伝の # 書』などの著者 日高徹 氏です。 この場合は HL レジスタを使用して、 ORG 100H LD HL,101H LD (HL),3H LD HL,100H LD (HL),5H LD A,(HL) LD HL,101H LD B,(HL) ADD A,B LD HL,102H LD (HL),A てな具合です。やろうと思えば(メモリの)最適化も出来ますが、より 一層わかりづらくなってしまうので…。(^^; といいつつ書く私。(笑) 以下のようにしても同じ結果になります。 ORG 100H LD HL,101H LD (HL),3H DEC HL LD (HL),5H LD A,(HL) INC HL ADD A,(HL) INC HL LD (HL),A さて、問1に関しては、和さんの言われているとおり、自分自身のプログ ラム領域を破壊する事になってしまいます。 問2については、私にも言わんとしている事が分かりません。(^^; レジスタは変数だと思っていたんですが…違うのか? (^^;; # どうでもいいけど、Z80 から 8086 へ移った時、 「CALL Z,〜」 や # 「RET NC」などが使えないと知って、ショックでした。(笑) Sister.DELETE [98/07/15 Wed 10:58:37] [210.164.41.217] をー、アセンブラがないとな!こんなとき私の出番じゃ。 金が無いならNetwide Assemblerです。何回も言ってますがフリーです。 過去のログを見れば3回ぐらいおんなじこと発言してます<迷惑 http://www.programmersheaven.com です。"FILES"にあります。MASMと文法違います。けどoffsetとか使わないです。 "mov dx hello"とかやればいいようになってます。ま、LEA使えばいいのかも 知れませんが。使い勝手はいいですし、吐き出すコードもいいようです。 知ってる人はいるかと思いますが、ZSNESというエミュレータの開発に使用されています。 さーどーですかROOKさん。欲しいでしょ?(爆) VGAとか知りたいなら"http://demo.and.or.jp/とか。 なんか、本当に迷惑な書き込みのような気がします(反省)。 迷惑だったら消しますけど。 でわ。 華鈴 [98/07/14 Tue 21:34:09] [210.161.164.108] 和さん、どうもありがとうございました。 実は今日、試験だったんです。 あの問題は去年の過去問で、今年もよく似た問題が出題され、 お陰で解くことができました。 本当にどうもありがとうございました。 和 [98/07/13 Mon 21:46:55] [210.169.192.205] 華鈴さん はじめまして 私の知っているZ80では、このような記述は、出来ないと思います。(東芝製TLCS90、川崎製鉄製でも不可) 出来るZ80があったら教えて下さい。 通常は、 ORG 100H LD A,3H LD [101H],A LD A,5H LD [100H],A LD A,[100H] LD B,A LD A,[101H] ADD A,B LD [102H],A です。 拡張アドレスモード(即値)にイミディエイトを代入できません。 出来るのは、16ビットレジスタと8ビットレジスタのAレジスタのみです。 もし、記述出来たとして 問1) LD [101H],3H LD [100H],5H の2命令で100H,101Hに命令コードがある LD [101H],5 命令を破壊していまいます。 問2) ORG 0A0H ;ワークRAM領域 a DEFS 1 ;0A0Hに a変数の領域を1舗可確保 ORG 100H LD A,12 ;2命令で12をaに格納する LD [a],A ; LD A,[a] ;aから12を取り出す 問2)は、問題の意図がよくわからなかったのですが 一応答えてみました。 参考になれば幸いです。 華鈴 [98/07/13 Mon 16:38:47] [210.161.164.105] はじめまして、アセンブリ言語は初心者中の初心者です。 大学でアセンブリ言語をすることになってしまったんですが、 全くわかりません。 誰にきけば教えてもらえるのかわからず彷徨ってるうちに ここに辿り着きました。 どうしても、今日中に理解しないといけないんです。 どうか助けてください。 Z80ニモニクに関するプログラムです。 LD (101H),3H LD (100H),5H LD A,(100H) LD B,(101H) ADD A,B LD (102H),A 問1.上のプログラムを実行するにはメモリー上に実装する必要が ある。例えば、100番地から実装するには ORG 100H という 命令を先頭に付加すればよい。しかし、これは深刻な問題をも たらす。この理由を50字以内で述べよ。 問2 このようにニモニクには変数という概念がない。どのような 工夫をすれば、 a=12; printf("%d \n,a); のように変数aに12を格納し、かつその値を取り出せるだろ うか?基本的なアイデアを100字以内で記述せよ。(図を使用 しても構わない) どうかよろしくお願いします。 AZUCO [98/07/13 Mon 09:04:46] [202.244.60.1] R86のマニュアルが、LSI−Cのページにあります 行き方がわからなければ、このサイトの、リンクページに僕のサイトへのリンクがありますので、僕のページへ来て下さい。 それで、僕のページのリンクページを見れば、LSIジャパンのページに飛べます ROOK [98/07/12 Sun 21:29:47] [133.205.72.79] 私は2年前にパソコンを始めた初心者の部類に入るものです。 これからよろしくお願いいたします。 半年以上Cにはまって、今はVC++を購入しSDKの勉強をしています。 VC++を手に入れる前はずっとLSI-C試食版で頑張っていたのですが、 友達とある程度はりあって頑張ってきたのでCなら十分分かるようになりました。 それで、当然の成り行きとしてアセンブラに手をつけたのですが、 r86なのでasmファイルを扱えませんし、r86に関する資料が少ないので... 今はやる気が出ずに何もしていません。 しかし、また少し頑張ろうかなと思って情報集めに回っている途中に このページを見つけました。 VGAについて基本的なことを教えていただきたいと思っています。 もちろんasmでかまいません。 詳しい方お願いいたします。 HAPPY [98/07/10 Fri 15:59:05] [202.241.204.186] Steraさんの質問ですが、私が大学時代にやってたときは、N88プログラミングガイド(自信はない)なる物を引っ張り出してやった記憶があります。 その時は、測定装置とコンピュータのインターフェースのプログラムを組んだと記憶してます。その時は、自分で何をしていたかは理解できなかった。(笑・・・) 皆さんはアセンブラを使っているとき、自分が何をやっているか解らなくなったことは、ないですか? しげちい [98/07/08 Wed 21:34:21] [210.170.184.144] ども HAPPYさん 海外さん 有り難うございました。 まだ実際にロジックを組む所まではいっておりませんが 86系CPUのことがだいぶ解ってきました。 んでTASMなんですがパッケ−ジ(CD)にも入ってないし お店にも売っていない というよりコンパイラしか置いてない様子。 お恥ずかしい話どうやって手にいれるかわかりません。 アセンブラってどうやって買うんですか? EBI [98/07/08 Wed 20:05:11] [210.162.41.242] はじめてmessageします、EBIと申します。 x86系のassemblerにはずっと興味をもっておりましたが、 今までまったく経験がありません。 今は、お仕事で、マイコン系のassemblerをやっております。 でも、やっぱり一番やりたいのは、86系です。 このページをみつけてからしばらくは、過去ログなどを興味深く読ませていただいておりました。 さて、みなさん、処理系にお困りのようですが、今回、私がご提案いたしますものは、 日本では、ライフボート、改め、ソフトボート(株)から発売されている、"Watcomc/c++"なんかはいかがでしょうか? 基本的には、c/c++処理系のようですが,assembler単体としてでもつかえるのでは? とおもいまして... そして、ソフトボートといえば、あの(...?),"system commander"の発売元でもあります。 ほかにも、"SOUCER"など、assemblerに興味のある方ならではのソフトがあります。 みなさん、どう思います。 ung [98/07/07 Tue 09:16:17] [202.222.77.3] いさぽんさんへ もちろんpublic宣言はしてます。アセンブルの方法が悪いのでしょうか? 特に必要なコマンドライン引数や、定義の仕方などあれば教えてください。 かねぴょんさんへ プロシージャ化すると言ったのは、単にjump距離中のコードを1つの関数にしたら? という意味です。 jz @f call procedure @@: というようにすればわかりやすいし、見た目にきれいでしょ? 速さは、どんな処理をしているのかにもよって違うんで一概には言えないと思います。 かねぴょん [98/07/07 Tue 03:22:51] [210.153.100.155] ungさん、どうもありがとうございました。 ちゃんと動作しました。 条件付きジャンプってSHORT命令しかなかったんですね。 VC++のインラインではどこでもジャンプできたので、そういうもんだと思い込んでいました。 さらに質問したいんですけど、ご返答にある「プロシージャ化する」というのは具体的にどのようにしたらいいんでしょうか。 また、そうしたほうが条件を反転してjmpで飛ぶより速いんですか? いさぽん [98/07/07 Tue 00:09:43] [210.161.16.65] ungさんへ ASMファイルの中で、test プロシージャをちゃんと public か externdef で外部参照されることを宣言してますか? これでちゃんと宣言しないと外部のOBJから参照されるための 情報を OBJに書き出さないのでリンクできないよ。 あと、PROCは NEAR にしないとだめっす。 FAR CALL は原則として禁止されているからです。 とうぜん retf も ret にしないとだめですね。 ung [98/07/06 Mon 17:42:35] [202.222.77.3] 「short jump is out of range」エラーの対処方法ですが、 おそらくjump condition 命令で127(128)byte以上のjumpをしようとしているんだと思います。 多分、 jz label : コードいっぱい(127byte以上) : label: のようなコードになってるんじゃないでしょうか? この場合、特に最適化を考えなければ、 jnz label1 jmp label label1 : コードいっぱい : label: とすると簡単です(美しくないけどね^^)。 あとはjump間のコードを少なくするとか、プロシージャ化するのが いいんじゃないでしょうか? ちなみに、これはアセンブラの問題じゃないのでNASMでもMASMでも関係ないですよ。 Stera [98/07/06 Mon 16:35:17] [133.66.192.25] はじめまして。ちょっと質問があるのですが、昔のDOS時代の98でN88−BASIC中でアセンブラ を使いたいのですが、CPU(286)のニーモニックからアセンブルするコード表みたいなものは何処か にないのでしょうか? もし知っていたら教えてください。 お願いします。 Stera [98/07/06 Mon 16:31:23] [133.66.192.25] はじめして。ちょっと質問があるのですが、昔のDOS時代の98のパソコンにおいてN88−BASIC中で アセンブラの命令を使いたいのですが、CPU(286)のアセンブルするコード表みたいなものは、何処かにないのでしょうか? もし、知っていたらメールで教えてください。お願いします。 かねぴょん [98/07/05 Sun 17:38:59] [210.153.100.149] はじめまして。 アセンブラ初心者の かねぴょん というものです。 NASMについての質問なんですが、 遠いラベルにジャンプしようとすると short jump is out of range というエラーがでできて困っています。 「こんな遠くには飛べねーよ」という意味でしょうが、 なんとか解決する方法はないものでしょうか。 あと、NASMについてわかりやすく解説してあるサイト をご存知の方がおられましたら是非教えて下さい。 ung [98/07/05 Sun 01:33:54] [203.179.119.25] 漠然とした質問ですいませんでした。 言葉が足りませんでしたね。 えっと、MASMで作成した.objファイルをVCでリンクし、コールすると 「warning LNK4033: 橘渕洽個の形式を OMF から COFF に変換します」 「LNK2001: 外部杓涙ル ""void __cdecl 関数名()" (?関数名@@YAXXZ)" は未解決です」 「fatal error LNK1120: 外部参照 1 が未解決です。」 というエラーが出てしまいます。 ちなみに、asmの中身は .586p .model small,c .code test proc far : retf test endp end で、VC側では __asm call dword ptr test としています。 また、オブジェクト形式はCOFFでも同様でした。 実際に出来ている方がいらっしゃれば是非お教えください! お願いします。 いさぽん [98/07/04 Sat 23:34:32] [210.161.16.89] どうも〜。すんごい久々に登場のいさぽんで〜す。 なんつ〜か、久々にネット活動してます(涙)。 和さんへ >最適化のためのテクニックをご指導下さい。 一応最適化が趣味なので、おいらで良かったら解説しますよ。 ソースを送っていただければ書き替えても良いですよ。 (あんまり長いと困りますけどね) ちなみに、最適化を支援するツールとして『VTurn』というソフトがあります。定価は4万円くらいです。インテルが開発して売ってるので 信頼性はばっちりですね。ちなみに日本語版は『エクセルソフト』が 販売しています。 ungさんへ >今まではDOSでアセンブラを組んでいたのですが、 >Windowsでもライブラリを流用しようと思っています。 >VC ver5でリンクする方法はないでしょうか? >ちなみにアセンブラはMASM ver6.11dを使っています。 ライブラリというかOBJファイルをリンクすることで流用できますよ。 たとえば TEST.ASM をアセンブルして TEST.OBJ が出来ますよね。 そのファイルを VCでリンクすればOKです。 リンクする方法は、『プロジェクト』メニューの『設定』で、 『リンク』タグを選択し、リンクするライブラリの一覧に TEST.OBJ を書き込みます。これで大丈夫です(ファイルのあるパスには注意♪) ちなみに、Winアプリは 32bitセグメントモードのプログラムなので、 アセンブルするときはちゃんと32bitモードでアセンブルしましょう。 そうしないとコードがえらいことになりますからね(笑) ただし欠点としては『クラスのメンバ関数』は作れないので注意してください。ただしそれ以外はほとんど全て組めるので大丈夫です。 でもVCのインラインに慣れるのが一番安全かもしれませんね。 ung [98/07/04 Sat 01:34:40] [203.179.119.7] ungです。はじめまして。 今まではDOSでアセンブラを組んでいたのですが、 Windowsでもライブラリを流用しようと思っています。 VC ver5でリンクする方法はないでしょうか? ちなみにアセンブラはMASM ver6.11dを使っています。 HAPPY [98/07/03 Fri 12:44:27] [202.241.204.186] お久しぶりHAPPYです。 あれから6800系の本を探しました。あるところにはあるもので初心者向けのものも数多くありました。いま読んでるは,6800プログラミング入門(アスキー出版局)です。なかなか丁寧に説明してました。 いい忘れましたが私のプログラミング経験は、C・C++が3年間ぐらいやってきました。アセンブラは、Cのプログラムを使うとき、アセンブラの処理が必要なとき少しだけやっていました。その時は、86系のアセンブラをやっていました。 しげちいさんへ 質問のことですが、86系のアセンブラなら8086CPUのマニュアルにのってることが多いいいです。読みにくいかもしれませんが、がんばって下さい。 (み) [98/07/02 Thu 14:12:32] [130.54.16.47] 和さんはじめまして アセンブリ言語歴10年とは凄いですね。 私は趣味で触っているだけで、しかもまだ数年です。 同じ86系CPUといっても8086とペンティアムとでの最適化は全然 違います。同じ感覚でコーディングすると駄目なことが多いです。 ソースの一部でもお見せ頂ければ何かコメントできるかもしれません。 #和さんのテクニックの方が凄ければ逆に勉強させて頂きます(^^; 海外浩平 [98/07/02 Thu 12:28:26] [130.158.86.27] 大日本救国革命軍プログラミング研究所 ちわ、海外@大日本救国革命軍です。 >>MASMは過去ログを見る限り手に入りにくそうなのでTASMでやってみます(ぼらCユ−ザ−なん >> です)。 TASMはMASMと互換らしいので、多分問題はないと思います。 # 私は「386ASM|TOOL KIT」ユーザーなので、細かいことは # 不明ですが。(^^;; >> あとみなさんに質問ですが アセンブラの命令コ−ドでどうやって >> 手にいれたらいいんですか? タダで入手しようとされるなら、インテル社のWebページから PDF形式のドキュメントが手に入ります。 ただ、コヤツはファイルサイズがでかい上に、 少し遅いマシンでは異様につらいという欠点がございまして、 # 私のPentium120うんずでは、泣きそうだった。(T-T) 私はナツメ社の「80x86/x87ハンドブック」を使っております。 普段使う分には全く問題ない解説が各命令ごとに載っており、 命令をサクっと引けてかなり重宝する一品です。 それでは。 しげちい [98/07/01 Wed 22:06:05] [210.170.184.171] どうも 海外さん どうも有り難うございました。 実際 ”はじめて読む8086”は読み終わってみて Cでは曖昧なままに使っていたところがかなりわかったような気がします。 それで ”はじめてよむMASM”なんですが MASMは過去ログを見る限り手に入りにくそうなのでTASMでやってみます(ぼらCユ−ザ−なんです)。 あとみなさんに質問ですが アセンブラの命令コ−ドでどうやって 手にいれたらいいんですか? 和 [98/07/01 Wed 18:59:52] [210.169.192.205] はじめまして 86系のアセンブラ歴は10年以上あるのですが現在はVisualC++5.0、DirectX5を使ってWIndows上で動画を扱うアプリケーションを作成しています。 かなり重い処理をさせているため、期待通りの処理速度を達成する事ができません。 そのため、ループ処理を中心にアセンブラで記述をしているのですが Debugモードでは、アセンブラ記述の方が若干高速に実行されるのですが Releaseモードでは、C++ 記述の方がかなり高速に実行されます。 最適化のためのテクニックをご指導下さい。 Sister.DELETE [98/07/01 Wed 01:18:37] [210.164.41.209] かなりご無沙汰です。S.Dです・・・っていっても、誰もわからんでしょうが(涙) 過去ログには登場しているのでゥァD▲疋譽垢離瓮睚脅困靴泙靴燭 YE戮呂舛磴鵑ネ ブックマークします。はい。 OSを作ってた人がいたみたいなのでOS関連を漁ってたら、ReactOSってOSが あるじゃないですか。面白そうですねぇ。これ使って、Windowzeは使わないってのは? でわでわ。 : |
e-mail: mist@e-net.or.jp | Structured Anchor Tree Return to Menu Return to Parent Menu |
Powered by Unit Missing Link. |