- ベストアンサー
アセンブリ言語の書き方が分かりません。
アセンブリ言語の書き方が分かりません。 R0が示す番地以降のR2が示すバイト数をR1が示す番地以降に転送 これをアセンブリ言語で書くにはどうしたらいいでしょうか? 教えてください。
- SAPPORO009
- お礼率0% (0/3)
- その他(プログラミング・開発)
- 回答数3
- ありがとう数5
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
確かアセンブリ言語はCPUに依存するので対象CPUが分からないと答えられないのではないかと思うのですが。。。 -------------------------------------------------------- よく使われる80x86系CPUを対象とした場合として仮定します。 C言語で簡単なコピープログラムを記述し混合モードの結果を表示すれば、どんなアセンブリコードとなっているのか分かるのではないかと思います。 内容については、調べていません。 --[Source Code]-- int main() { char buf1[256] = {0}; char buf2[256]; int imax = 256; for(int i = 0 ; i < imax ; i++) { buf2[i] = buf1[i]; } } --[混合モード表示結果]-- int main() { 00A413A0 push ebp 00A413A1 mov ebp,esp 00A413A3 sub esp,2ECh 00A413A9 push ebx 00A413AA push esi 00A413AB push edi 00A413AC lea edi,[ebp-2ECh] 00A413B2 mov ecx,0BBh 00A413B7 mov eax,0CCCCCCCCh 00A413BC rep stos dword ptr es:[edi] 00A413BE mov eax,dword ptr [___security_cookie (0A47004h)] 00A413C3 xor eax,ebp 00A413C5 mov dword ptr [ebp-4],eax char buf1[256] = {0}; 00A413C8 mov byte ptr [ebp-108h],0 00A413CF push 0FFh 00A413D4 push 0 00A413D6 lea eax,[ebp-107h] 00A413DC push eax 00A413DD call @ILT+115(_memset) (0A41078h) 00A413E2 add esp,0Ch char buf2[256]; int imax = 256; 00A413E5 mov dword ptr [ebp-21Ch],100h for(int i = 0 ; i < imax ; i++) { 00A413EF mov dword ptr [i],0 00A413F9 jmp main+6Ah (0A4140Ah) 00A413FB mov eax,dword ptr [i] 00A41401 add eax,1 00A41404 mov dword ptr [i],eax 00A4140A mov eax,dword ptr [i] 00A41410 cmp eax,dword ptr [ebp-21Ch] 00A41416 jge main+94h (0A41434h) buf2[i] = buf1[i]; 00A41418 mov eax,dword ptr [i] 00A4141E mov ecx,dword ptr [i] 00A41424 mov dl,byte ptr [ebp+ecx-108h] 00A4142B mov byte ptr [ebp+eax-210h],dl } 00A41432 jmp main+5Bh (0A413FBh) } 00A41434 xor eax,eax 00A41436 push edx 00A41437 mov ecx,ebp 00A41439 push eax 00A4143A lea edx,[ (0A41468h)]
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
PDP-11 じゃなくて, 他のプロセッサなら書けますか? あるいは, アセンブリ言語じゃなくて他の言語 (例えば C) でなら (ライブラリなどを使わずに) 書けますか?
No.1さんが書かれているように、CPUがわからないと何とも言えませんが、場合によっては、ブロック転送命令(ストリング命令)で一気に転送できる場合もあります。 (ちなみに、Z80だとLDIR/LDDRです)
補足
ありがとうございます 下のhiro_knighさんのほうにも書きましたが、CPUはPDP-11というものらしいです。
関連するQ&A
- アセンブリ言語についてと言語の違いについて。
高水準と低水準言語の違いは、まず、マシン語の2進数の羅列では分からないからアセンブリ言語が生まれ、 アセンブリ言語よりさらに人間が理解できる言語が、C言語やBASICなどでしょうか?教えていただけないでしょうか?合っていますでしょうか?
- 締切済み
- その他([技術者向] コンピューター)
- アセンブリ言語の問題について質問します。
アセンブリ言語の問題について質問します。 言語はCOMETIIのCASLIIです。 今現在、LD.ST,LAD,AND,OR,XOR,比較,分岐命令まで習った段階です。 問題は (1)A番地からNブロック分(1ブロック256語)のメモリに、 それぞれのアドレスの下位バイトの値(#00~#FF)を書き込み (2)書き込まれたNブロック分のメモリの内容を、 B番地からNブロック分のメモリに転送するプログラムを完成させよ。 ただしAは#8100,Bは#8500,Nは2をDC命令で設定のこと。 宜しくお願いします!
- 締切済み
- その他(プログラミング・開発)
- アセンブリ言語の問題
アセンブリ言語のプログラムの実行開始番地が0番地以外、というのはあり得ることなのでしょうか(例1:10番地よりプログラムが実行開始)。 また、データが格納されている番地からプログラムを開始することは可能なのでしょうか(例2:上記の例1の状態で、10番地には整数データである「0」が格納されている)。 授業で習っていてわからない点です。CPUなどについては先生から一切説明されていませんが、ご回答お待ちしております。 初めての質問で至らない点がございますが、ご了承ください。
- ベストアンサー
- 数学・算数
- アセンブリ言語について。
アセンブリ言語がアセンブラ&実行出来るサイトを知らないでしょうか?また、アセンブリ言語のプログラムが載っているサイトを知らないでしょうか?教えて頂けると幸いです。
- ベストアンサー
- AI・機械学習
- アセンブリ言語について。
2進数の羅列では人間にはあまりに読み書きしにくいからです。 それを命令単位に区切って、英単語を元にした名前を与えたのが、アセンブリ言語です。 ニーモニックとは、その命令の名前の事です。とはどういう事でしょうか?教えていただけないでしょうか?すみません。 push %ebp mov %esp,%ebp and $0xfffffff0,%esp sub $0x10,%esp mov 0xc(%ebp),%esp : というプログラムで、オペランドが、%ebpなどがそうなのでしょうか?で、このプログラム言語自体をアセンブリ言語というのでしょうか?また、なぜ、低水準言語というのが存在しているのでしょうか?教えていただけないでしょうか?すみません。
- ベストアンサー
- その他(ソフトウェア)
- アセンブリ言語を学ぶことは意味がありますでしょうか。
アセンブリ言語を学ぶことは意味がありますでしょうか。 プログラミングの上達や理解を深めるためにアセンブリ言語を学ぶ意味はありますでしょうか。 C++を学ぶとプログラミングの上達や理解は確かに深まりましたが、アセンブリ言語はどうでしょうか。 アセンブリ言語でポインタの意味が分かったと言う人もいますし・・・。 また、アセンブリ言語で役立つことがあれば何でも教えてください。
- ベストアンサー
- その他(プログラミング・開発)
- アセンブリ言語について
アセンブリ言語の勉強をしたいと思っています。 例えば、CやJava,などはコンパイラを使ってコンパイルをしますよねぇ。同じようにアセンブり言語にもアセンブラというものがあるのでしょうか? フリーでそのようなアセンブラ(コンパイラ?)があるのなら教えてくれないでしょうか?できれば、AT互換のアセンブリ言語の仕様書が書かれているサイトでもあれば教えてください。(できれば、日本語で・・・) それと アセンブラ言語を高水準言語と比較した場合の利点について教えてください。 色々とすいません。どうかよろしくお願いします。
- ベストアンサー
- その他(OS)
- アセンブリ言語について。
アセンブリ言語という低水準言語は、なぜ必要なのでしょうか?それと、ニーモニックとは何でしょうか?ご教授いただけないでしょうか?すみません。よろしくお願いします。
- 締切済み
- AI・機械学習
補足
解答ありがとうございます。 CPUについて調べてみましたが、PDP-11というものでした。 教えていただけるとありがたいです。