• ベストアンサー

アセンブリ言語の質問のコト

noname#18951の回答

noname#18951
noname#18951
回答No.1

NOT演算で反転できます。 ここはx86の例。 MOV AL, 3H NOT AL  3Hは00000011なのでNOTを実行すると11111100つまり-4。  あとは1を足せば-3になりますね。

noname#4530
質問者

お礼

そうでしたか、NOTで反転できたんですか。 さっそく明日、ガッコで試してみます。 それでは。ありがとうございました。

関連するQ&A

  • 機械語からアセンブリ言語への変換の仕方を教えてください

    CASLIIを学んでいるのですが、命令後の表(画像)を使って プログラムの一部 ADDA GR1,GR1 を手動で機械語 (16進)に変換すると、 2411 になるようなのですが、どのように変換するのでしょうか? ネットで調べてみたのですが”機械語の命令(変換)表で命令と語数を確認しながら,アセンブリ言語の表記にします。”と省略されていて詳しく解説してあるページが見つからなかったので、教えていただけませんか? ーーーーーーー 機械語の命令(変換)表 http://www.jitec.jp/1_13download/hani20061107.pdf (32 ページに機械語とアセンブリ言語の命令の対応表があります)

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

    >2進数の羅列では人間にはあまりに読み書きしにくいからです。 >それを命令単位に区切って、英単語を元にした名前を与えたのが、 >アセンブリ言語です。 ニーモニックとは、その命令の名前の事です。 簡潔に要点がまとまっている、すばらしい説明ですね。その通りです。 これで理解できないなら、追加の説明のしようがありません。 (なお、このように、他人の発言は引用符を付けて引用すると、わかりやすくなります。是非そうしてください。) まあ具体例を挙げるならこんな感じ。 (機械語データ) (アセンブリ言語) b8 57 61 6b 61 mov $0x616b6157,%eax 53 push %ebx 50 push %eax ba 04 00 00 00 mov $0x4,%edx bb 01 00 00 00 mov $0x1,%ebx b8 04 00 00 00 mov $0x4,%eax 89 e1 mov %esp,%ecx cd 80 int $0x80 58 pop %eax 31 c0 xor %eax,%eax 5b pop %ebx c3 ret 人間がCPUを直接動かすプログラムを書こうとするとき、アセンブリ言語を使って書きます(右側の部分)。 mov $0x616b6157,%eax push %ebx push %eax mov $0x4,%edx mov $0x1,%ebx mov $0x4,%eax mov %esp,%ecx int $0x80 pop %eax xor %eax,%eax pop %ebx ret そしてこれをアセンブルすると、1対1対応した機械語のデータ列が出来ます。 それが b8 57 61 6b 61 53 50 ba 04 00 00 00 bb 01 00 00 00 b8 04 00 00 00 89 e1 cd 80 58 31 c0 5b c3 この部分。 機械語には改行なんてありませんから、実際は一連の b8 57 61 6b 61 53 50 ba 04 00 00 00 bb 01 00 00 00 b8 04 00 00 00 89 e1 cd 80 58 31 c0 5b c3 と言うデータ列になります。 これをCPUが実行していきます。 相当熟練した人で無ければ、このデータ列を見るだけでプログラム構造を理解する、というわけに行きません。 なので、人間が機械語レベルでプログラミングする際には、アセンブリ言語を使います。 ※この回答のプログラムはこちらから引用しました。 >31バイトでつくるアセンブラプログラミング アセンブラ短歌の世界 >https://book.mynavi.jp/support/pc/4946/c01_assembra.pdf で、機械語データは、なぜ、0と 1だけではないのでしょうか?教えていただけないでしょうか?すみません。

  • Z80について

    Z80のアセンブリ言語の命令でAレジスタの値を反転させるにはCPL命令を使えばいいんですが、その命令以外の命令を使ってAの値を反転させるにはどうすればいいでしょうか? どんな命令を使えばよろしいでしょうか?

  • PDP-11のアセンブラ課題

    学校の課題で出されたものです。 まだ勉強をはじめたばかりでどこから手をつけていいのかわかりません>< ○PDP-11のアセンブラは、MOV#1,R2を次のような2語の機械語に翻訳する。PDP-11は、これをど  のように解釈し、どのように実行するのか説明せよ 0001010111000010 0000000000000001 ○PDP-11のMOV命令を使用し、以下の命令のアセンブリ言語表現、機械語表現を示せ。 ・R5が示すアドレスにジャンプする命令 ・サブルーチンから戻る命令 ・R0をスタック上にプッシュする命令 ○次のプログラムをPDP-11のアセンブリ言語で作成せよ。 ・R0が示す番号以降のR2が示すバイト数をR1が示す番号以降に転送 ・R1(上位16ビット)R0(下位16ビット)が示す符号付32ビット値を符号反転 宜しくお願い致します。

  • アセンブリ言語の質問です

    「 100人分の試験点数がある。 一人分のデータは32bit 符号無し整数でそれが連続して格納されている.先頭のアドレスがEAXで与えられる時,全員の点数の合計をEAXに入れて戻るようなサブルーチンをアセンブリ言語で書きなさい。 • loop unrollingを使用して,ループ内容を4倍に展開して,条件分岐数を減らすこと • 他のレジスタの値は保存すること • 合計点はEAXレジスタに十分納まるものとする。 • 次のような命令を使ってよい。 ADD EAX, [EBX] 」 というような問題が出て自分で解答を作ってみたのですがこれでよいのでしょうか?詳しい方ご検討よろしくお願いいたします。 PUSH EBX(EBXをスタックにおいておく) PUSH ECX(ECXをスタックにおいておく) MOV ECX 25(ECXに25を代入。4回の操作を25回すれば100回になるからである。) label0:ADD EAX [EAX] ([EAX]をEAXに加算) ADD EAX [EAX+1]([EAX+1]をEAXに加算) ADD EAX [EAX+2]([EAX+2]をEAXに加算) ADD EAX [EAX+3]([EAX+3]をEAXに加算) MOV [EAX] [EAX+4]([EAX]を[EAX+4]に移動させる) EBX=EBX+1 (EBXはこのループを何回やったか、という数) CMP ECX EBX(25とEBXを比べる) JNZ:label0(比べてEBXが25になってないならば繰り返す。25になったら終了。) POP EBX(EBXをスタックから戻す) POP ECX(EBXをスタックから戻す)

  • アセンブリ言語にて、

    アセンブリ言語にて、 「乗算Z←X×Yを、 ビットシフト(ROT命令ほか)で用いた計算手順と、 加算(ADD命令)の各長所、短所を比較しなさい」 という問題の答えがわかりません・・・ 教えていただけませんか?

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

    現在電気工学科の学生です。アセンブリ言語の講義を受けているんですが、試験で単位が取れる自信がありません。。。全くわからないことだらけです。C言語に関してはほんの触りだけ勉強したことがありますが、アセンブラ言語については全くの素人です。演習問題があるんですが、色々本等で探しても見つかりませんでした・・・私の努力不足かもしれませんが、問題の解答と解説を教えて欲しいです。 問題は→メモリアドレス3000H~30FFHの内容(データ)を2000Hから始まるメモリアドレスにコピー(格納)するプログラムをアセンブリ言語で書いてください!それとこの問題には参考のためにアセンブリ言語の命令の例があるんですが LD A、(BC) LD A、(DE) LD A、(HL) って書いてあるんですが、このBCやDE,HLはどんな意味があるんでしょうか?初歩的なことばかりで申し訳ありませんが、ご教授よろしくお願いします。

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

    以下のURLで、 https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al … No.14のC 言語の write の仕様そのもので、第一引数はファイルディスクリプタですね。 (ファイルディスクリプタについては御自身で調べてみてください) 固定値として定義されているのは、標準ストリーム ファイルの  0 … 標準入力 (write では使われない)  1 … 標準出力  2 … 標準エラー出力 です。(3 以降は各プロセスでオープンされたファイルやソケットやデバイスを 指しており、固定値ではなくプロセス毎に異なる値となります。) 括弧の所がよくわかりません。教えていただけると幸いです。すみません。 ファイルディスクプリタとは、ファイルへの通り道につけられる番号でファイルを識別する目印のことでしょうか?プロセスとは処理のことでしょうか?詳しく教えていただけると幸いです。すみません。

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

    アセンブリ言語の命令一覧を教えていただけないでしょうか?すみません。

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

    アセンブリ言語と機械語は一対一で対応しているので、実行ファイルがあれば逆アセンブルすると 完全に元のアセンブリコードが復元できるのでしょうか?教えていただけないでしょうか?すみません。