• ベストアンサー

アセンブリ言語の書き方が分かりません。

アセンブリ言語の書き方が分かりません。 R0が示す番地以降のR2が示すバイト数をR1が示す番地以降に転送 これをアセンブリ言語で書くにはどうしたらいいでしょうか? 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

確かアセンブリ言語は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)]

SAPPORO009
質問者

補足

解答ありがとうございます。 CPUについて調べてみましたが、PDP-11というものでした。 教えていただけるとありがたいです。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

PDP-11 じゃなくて, 他のプロセッサなら書けますか? あるいは, アセンブリ言語じゃなくて他の言語 (例えば C) でなら (ライブラリなどを使わずに) 書けますか?

noname#140045
noname#140045
回答No.2

No.1さんが書かれているように、CPUがわからないと何とも言えませんが、場合によっては、ブロック転送命令(ストリング命令)で一気に転送できる場合もあります。 (ちなみに、Z80だとLDIR/LDDRです)

SAPPORO009
質問者

補足

ありがとうございます 下の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などについては先生から一切説明されていませんが、ご回答お待ちしております。 初めての質問で至らない点がございますが、ご了承ください。

  • アセンブリ言語について。

    アセンブリ言語がアセンブラ&実行出来るサイトを知らないでしょうか?また、アセンブリ言語のプログラムが載っているサイトを知らないでしょうか?教えて頂けると幸いです。

  • アセンブリ言語について。

    2進数の羅列では人間にはあまりに読み書きしにくいからです。 それを命令単位に区切って、英単語を元にした名前を与えたのが、アセンブリ言語です。 ニーモニックとは、その命令の名前の事です。とはどういう事でしょうか?教えていただけないでしょうか?すみません。 push %ebp mov %esp,%ebp and $0xfffffff0,%esp sub $0x10,%esp mov 0xc(%ebp),%esp : というプログラムで、オペランドが、%ebpなどがそうなのでしょうか?で、このプログラム言語自体をアセンブリ言語というのでしょうか?また、なぜ、低水準言語というのが存在しているのでしょうか?教えていただけないでしょうか?すみません。

  • アセンブリ言語を学ぶことは意味がありますでしょうか。

    アセンブリ言語を学ぶことは意味がありますでしょうか。 プログラミングの上達や理解を深めるためにアセンブリ言語を学ぶ意味はありますでしょうか。 C++を学ぶとプログラミングの上達や理解は確かに深まりましたが、アセンブリ言語はどうでしょうか。 アセンブリ言語でポインタの意味が分かったと言う人もいますし・・・。 また、アセンブリ言語で役立つことがあれば何でも教えてください。

  • プログラミングのアセンブリ言語のアセンブリとはどう

    プログラミングのアセンブリ言語のアセンブリとはどういう意味なんでしょうか?

  • アセンブリ言語について

    アセンブリ言語の勉強をしたいと思っています。 例えば、CやJava,などはコンパイラを使ってコンパイルをしますよねぇ。同じようにアセンブり言語にもアセンブラというものがあるのでしょうか? フリーでそのようなアセンブラ(コンパイラ?)があるのなら教えてくれないでしょうか?できれば、AT互換のアセンブリ言語の仕様書が書かれているサイトでもあれば教えてください。(できれば、日本語で・・・) それと アセンブラ言語を高水準言語と比較した場合の利点について教えてください。 色々とすいません。どうかよろしくお願いします。

  • アセンブリ言語について。

    アセンブリ言語という低水準言語は、なぜ必要なのでしょうか?それと、ニーモニックとは何でしょうか?ご教授いただけないでしょうか?すみません。

  • アセンブリ言語について。

    アセンブリ言語という低水準言語は、なぜ必要なのでしょうか?それと、ニーモニックとは何でしょうか?ご教授いただけないでしょうか?すみません。よろしくお願いします。

専門家に質問してみよう