質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

2回答

6615閲覧

アセンブリ言語: 配列の使い方と代入方法

Nippun

総合スコア1147

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

0クリップ

投稿2017/11/01 22:11

アセンブリのmasm 32というものでプログラミングをしているのですが配列の使い方がわかりません。

配列の宣言方法はわかるのですが代入方法がわかりません。
keyとplainに数値を代入したいです。
なるべく少ないコードで出来とうれしいです。
また、配列内の数値をとるにはどうすればいいですか?

.486 include \masm32\include\sasmacros.inc .data key dd 5 dup(0) plain dd 25 dup(0) .code start: exit end start コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

配列の宣言方法はわかるのですが代入方法がわかりません。
keyとplainに数値を代入したいです。
なるべく少ないコードで出来とうれしいです。
また、配列内の数値をとるにはどうすればいいですか?

記憶だけで、書いていますので、間違えもあると思います。

検索ワード:MASM32 や、MASM32 WIN
MASM32によるアセンブラ入門:パート1:CodeZine(コードジン)
他の記事を参照の事。
⇒アセンブラをやる前に、8086 / 80186 / 80286 / 80386 / 80486 / Pentium ...
などの、CPUアーキテクチャーの変遷と、
x86 / x64 系の違いなど、使う為の前提条件があります。
⇒古い時代のインテルx86 系ならではの、嫌らしさは、アセンブラ使わなくて済む現在では考えられない。

互換アプリ:NASM32 など色々だが、過去の遺物か?
cが、Microsoft Visual Studio 20xx の c なのか、gnu c なのか?それとも?
Intel C など、環境としては、複数考えられます。
cから、x86 コードをインライン展開したいのか?→コンパイラ依存

過去に、MASM32 のマクロ機能を使って、BASICライクな環境にした マクロがあったり、
MASM32 から、Windows SDK を使ったりしたコードが公開されていたのですが、
記憶だけで、ネット上にそのコードが、現在もあるかどうか。
→私の、ライブラリには入って居るはずですが、何処かに行ってしまってますねぇ。
'
現在アセンブラが、曲がりなりにも使われていて、開発環境もメンテされている例
AVR MCU / PIC MCU / STM8 / STM32 など MCU の世界
AVR:AVR Studio は、Visual Studio 20xx の機能を使用していますが、バージョンにより、英語winのみにインストール可:どうしてもの場合は、方法あり。

投稿2017/11/08 10:24

編集2017/11/08 10:27
daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

アセンブラ言語は最近ほとんど触ってないのでうろ覚えですが、レジスタにアドレスをセットしてアクセすることになります。

mov bx, offse key ;bxレジスタにkeyのアドレスをセット mov dword ptr [bx], 0 ;keyの先頭データを書き換え mov eax, dword ptr [bx] ;keyの先頭データを読み出し add bx, 4 ;配列の次のアドレスをポイント

これで、アクセスできるはずです。
keyはdword(4バイト)の配列なので、4を足し加えれば次のデータになります。

(間違えていたらごめんなさい)。

投稿2017/11/02 08:41

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問