アセンブラプログラミング 【解決方法Q&A/疑問攻略/ブログ】
Q&A:アセンブラプログラミングについて? 解決方法/評価
・masmで生成したobjをリンクしたいのですが外部シンボルが未解決というエラーがでてリンクできません。考えられる原因にどのようなことがありますでしょうか;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; アセンブラプログラミング;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.486.model flat, stdcall;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; 定義;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++NULL = 0MB_OK = 0;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; プロトタイプ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++MessageBoxA proto :dword, :dword, :dword, :dwordExitProcess proto :dword;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; データセグメント;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.dataMSG1 db 'メッセージテストだよん', 0TITLE1 db 'タイトルだよん', 0;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; コードセグメント;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.codeWinMainCRTStartup proc invoke MessageBoxA, NULL, offset MSG1, offset TITLE1, MB_OK invoke ExitProcess, 0 retWinMainCRTStartup endpendLINK : error LNK2001: 外部シンボル "_mainCRTStartup" は未解決ですRelease/asm.exe : fatal error LNK1120: 外部参照 1 が未解決です。link.exe の実行エラーasm.exe - エラー 2、警告 0・ファミコンプログラミング+NESASMについて2つ質問があります。ファミコンソフト開発に詳しい方お答えください。1 プログラミングについてアセンブラ言語のことををいろいろなサイトで調べて勉強しました。いざ、アセンブラプログラミングしようと思ったのですが何にしていいのかわかりません。サイトで見たのは「プログラムする→テキストエディタ→プログラムを保存する」とかいてありました。これはどういうことなんでしょうか?テキストエディタというのはメモ帳とかとは違うんですか?もしファミコン開発に向いている「これがいい!」というテキストエディタなるものがあったら教えてください。2 NESASMについてファミコンソフト開発の勉強をしているときに、「asmソースから実行ファイル(,NES形式)の生成できるアセンブラが必要」とかいていたのでNESASMをDLしてきました。しかしダブルクリックして開いてみるも、黒いウインドウが2秒間くらいでて消えてしまいます。何度挑戦しても同じです。これはどのようにして活用すればいいのでしょうか?・x86アセンブラプログラミングの命令でmovやaddとかsubは意味が分かるのですが、cvttの意味が分かりません。どなたか知ってる方はいますか?・アセンブラorマイコン(AVR)に詳しい方教えてください。自分はELM氏のサイトのライントレーサの動きに感動して今そのライントレーサのプログラムを分析しています。アセンブラプログラミングの経験がないので命令文を1つ1つ調べて解読しています。そのなかでいくつかわからない点があったので、質問させてもらいます。①紛らわしい命令?ldi lds ldd sts mov等・・・命令 A Bどれも、AにBを代入みたいな意味に見えるのですが・・おそらく、自分はABにあてはまるものがレジスタか、単なる数値か、何かのアドレスか、によって変わるんじゃないかではないかとにらんでいるのですが、この命令の意味がすべて同じサイトから調べたわけではないので書いた人によって微妙な書き方に違いがあるので判別しにくいのです。add addi adc等・・・こちらは全部加算なのですが、こちらも少しずつ用途が違う様子・・・②macro命令webで調べても見つからない命令文がいくつかあったのですが、作者がマクロ命令を使っていることがわかりました。(これに気づくのに結構かかりました。;;定義ファイルは見ないものだと思っていたもので)次の文はそのマクロの文なのですが、.macro ldiw ldi @0L,low(@1) ldi @0H,high(@1)これは例えば、ldiw Aという用途の場合 ldi AL,low(@1) ldi AH,high(@1)と考えていいのでしょうか?(AL=r16、AH=r17とレジスタが定義されています。)しかし、こう考えると、LやHの前の0を無視しているし、その後ろのlow(@1)やhigh(@1)はどうすればいいんだ、という疑問が残ってしまいます・・・③数値表記最初に見たときは、なぜ1つに統一せずに2進数(0b)を使ったり、16進数(0x,$)使ったり、10進数を使ったりするのだろうと思ったのですが、2進数や10進数は普通に数値で16進数は何かのアドレスをさしてるんじゃないかという考えに至ったのですが、正しいでしょうか?レジスタはr0とかで表現していたのでEEPROMかSRAM、もしくはポート番号をさしているのではないかと予測しているのですが、どうでしょうか?おそらく、AVRやアセンブラに詳しい方にとっては当たり前のことも多いかと思いますが、知恵袋で聞くような話ではないような気がしますがよろしくお願いします^^;(プログラムの分析はしていますが、自分に同じものを作ることは無理だろうということは十分理解しているつもりです。AVRはキット経験しかないですし。あくまで参考にさせてもらうだけのつもりです。)
●気になる商品を検索
●気になる話題を検索