アセンブリ言語で、最大公約数を求めるプログラムを

つくらなければならないんですが、

まぁ...だいたいできたんですが...ちょっとわからないトコが

ありまして...

acc(アキュムレータ)にはいってるデータが、負のバアイに、

それを正にかえたいんですが、どうしたらいいんでしょう?

ビット反転さして、1足したらいいんじゃないか、ってのを思いついたんですが、

(これもあってるのかどうか自信ないんですけど...)

ナンカ、反転さす命令がないみたいで...がっくシ...

ということで、だれかお力ゾエをおねがい致しまス。

必要かどうかワカリマセンが、とりあえず、

ちょっとだけ命令を以下に挙げておきます。

(たしか、アセンブリ言語って、それぞれ違うっていっても、どれも結構

 似てるんですよね...ぼくの頼りない知識がタシカなら...)

ADD,SUB,INC,DEC,OR,EOR,AND,NOT,

LSL,ASL,LSR,ASR,ROL,ROR,SWP

JP,JPc,JPz,JPs,JPv,JP,JP,Call,Ret,

このQ&Aに関連する最新のQ&A

A 回答 (6件)

 補数とはですね、「与えられた数を、定められた数から引くことによって得られる数」という意味です。

定められた数には、基数のべき乗か、それより1少ない値を使います。
※以下、与えられた数をA、Aの基数をn、Aの桁数をkとします。
※以下、aのb乗を、a^bと表します。
※以下、n進数のAという表現を、A(n)と表します。

  基数のべき乗を使って求めた補数を、「基数の補数」といいます。
   Aの基数の補数は、n^k-A

  基数のべき乗-1を使って求めた補数を、「基数-1の補数(減基数の補数)」といいます。
   Aの減基数の補数は、(n^k-1)-A

具体的な例を挙げてみます。
1)300(10)の10の補数(基数の補数)
 n=10 k=3 なので
  10^3 - 300 = 1000 - 300 = 700
2)300(10)の9の補数(減基数の補数)
  10^3-1 - 300 = 999 - 300 = 699
3)01001101(2)の2の補数  (10進数に直すと77)
 n=2 k=8 なので
  2^8 - 01001101 = 100000000 - 01001101 = 10110011
  (1BYTEの符号付き10進数に直すと-77)
4)01001101(2)の1の補数
  2^8-1 - 01001101 = 11111111 - 01001101 = 10110010
  (1BYTEの符号付き10進数に直すと-78)

ざっとなので、あまり伝わらないかもしれません。
第2種情報処理、あるいは基本情報処理試験用のテキスト(問題集ではない)に、たいていは解説されていると思いますので、一度足を運んでみてはいかがですか?
    • good
    • 0
この回答へのお礼

詳しい解説ありがとうございました。

この「補数」の本質はあまり理解することはできなかったものの、
定義はつかめたので、今後、詳しく習うかもしれないときの基盤となったと思います。

P.S.
>「与えられた数を、定められた数から引くことによって得られる数」
この定義にのっとって数でいろいろ遊んでたら、2進数において
全ビット反転させて、1足せば符号がかわると発見したんですかねぇ...

それとも、2進数において全ビット反転させて、1足せば符号がかわる、
ということから拡張してこの体系ができたんですかねぇ...

いずれにしても先人たちは数字遊びが好きですねぇ...

あっ、追伸かいててまたギモンが...
2の補数とかって、符合が変わるっていう有用性が明らかに存在するようですけど、
一般的な補数って何かの役に立ったりしているんですか?
余計な質問ですが、ヒマがあったらでいいので、おねがいします。

お礼日時:2001/06/03 15:04

>いずれにしても先人たちは数字遊びが好きですねぇ...


全くですよね。

>2の補数とかって、符合が変わるっていう有用性が明らかに存在するようですけど、
>一般的な補数って何かの役に立ったりしているんですか?
これは数学全般にいえることですよね。
実際に必要になってみないと、何言ってるのか分からない(笑)
公式暗記、問題のケース分け作業の繰り返しになっちゃう。

・・・というわけで、私も「補数」が何の役に立っているのか、2進数の符号反転という一面しか知らないんです。中途半端ですいません、、、(汗)
カテゴリを数学に移して、質問されてみてはいかがですか?
    • good
    • 0
この回答へのお礼

くだらない質問に付き合っていただき、ありがとうございました。

そうですね。

大事なことは、なんの役に立つのか、ではなく、どう役に立てるか、ということでしたね。
ちょっとウッカリしてると、何のためにベンキョウしてるのかすぐ忘れちゃいますね。
イカンイカン。

お礼日時:2001/06/05 20:50

> ビット反転さして、1足したらいいんじゃないか


すごいですね。まさしくその通りです!
ある数Aの2の補数を求めると、それが-Aになるのです。

ただ2の補数を求めるには、本当は「補数」をよく理解しておく必要があるのですが、これが結構覚え難いので、みな簡単な方法を使うのです。
それが「全ビット反転+1」なんです。

正確には「減基数の補数+1」という考え方に基づいた計算なのですが、2進数に限った場合、全ビットを反転させるだけで「減基数の補数」が求まります。

つまり、
  NOT acc
  INC acc
でいいわけですね。

ymmasayanさんがおっしゃっていた、
> オール1とEORをとれば全ビット反転する
のオール1とは、全ビットが1になった値、つまり-1のことです。
つまり、
  EOR acc, -1
  INC acc
でもいい、というわけです。
(アセンブラによっては、いきなり-1とのEORをとれないものもあります。その場合、データレジスタに-1を転送して、EORをとってください)

「補数」の完全制覇は難しくても、これならだれでも覚えられますよね。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。

みなさんのおかげで、最大公約数を求めるプログラムはメデタク完成したわけなんですが...

ところで、ちょっと気になったのですが、補数、とはいったい何なんですか?
そういえば、昔、センセがチラッと口にしたことがあったような気がします。
そのときはタシカ...
「全ビット反転させたモノが1の補数、それに1加えたものが2の補数。」
とだけ言って後は何も言いませんでした。補数の本質って何ですか?
どういう意味が込められているのですか?

かなりオクワシソウナ印象を受けたので、
よかったら教えてくださるとありがたいでス。
(サワリだけでもいいんです。ちょっと気になってしまって...)

お礼日時:2001/06/01 22:27

アセンブラによりますが、そのものズバリNEGって命令があったりしませんか?


符号反転命令です。
まっとうなアセンブラなら持ってる命令ですが…。
仮想アセンブラなハズしてます。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

残念ながら、その命令はなかったです。
おもちゃのプロセッサ用のアセンブラなので...
(※センセがおもちゃと言ってました。)

お礼日時:2001/05/30 00:34

NOT命令が一番ですが次の手としてEORも使えます。


オール1とEORをとれば全ビット反転するはずです。EORは排他的論理和です。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。

ところで、オール1とは、いったい何ですか?

お礼日時:2001/05/30 00:29

NOT演算で反転できます。


ここはx86の例。

MOVAL, 3H
NOTAL

 3Hは00000011なのでNOTを実行すると11111100つまり-4。
 あとは1を足せば-3になりますね。
    • good
    • 0
この回答へのお礼

そうでしたか、NOTで反転できたんですか。
さっそく明日、ガッコで試してみます。

それでは。ありがとうございました。

お礼日時:2001/05/30 00:24

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qコード変換(漢字)のサンプルプログラム

始めまして!
困っています、御力添えをお願いします。
UNIX(SouOS5.8)でのコード変換(SJIS→EUC、EUC→SJIS)のコーディング(サンプルソース:C言語)をどなたか教えて頂けないでしょうか?
お願いします。

Aベストアンサー

下記URL参照。

参考URL:http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/kanjicod.html

Qアセンブリの論理演算命令のCPL(対応するbit反転)

アセンブリの論理演算命令の1つで、対応するbitを反転するCPLとは何の略称なのでしょうか?
反転は英訳するとreversalになると思うのですが、ニーモニックがCPLとなる理由が解らなくて質問しました。御存知の方がいましたら回答をお願いします。

Aベストアンサー

ComPLementの略で1の補数って意味だと思います。

Qブログ等で公開されているサンプルコードの著作権について

個人の方などが、ブログ等で公開されているサンプルコードについてですが、

あるプログラムの解説サイトで見つけた、サンプルコードと、
同じコードで解説しているサイトを2つ発見したので、こういうのって、法律的に、どういう扱いなのだろうかという疑問です。

Aベストアンサー

プログラミング言語や規約つまりプロトコルは対象外だけど、ソースは保護対象なんだってば。
当たり前だよ。プログラミング言語使って生み出された創作物なんだもん。
この辺、IT系資格の参考書でもたまに間違いを見かけるからわかりにくいんだろうね。

私は法学部卒の現役エンジニアです。
ソースコードが著作物なのは断言します。

QCASIOのポケコンZ-1GRのRET命令について。

CASIOのポケコンZ-1GRのRET命令について。

いつもお世話になっております。

小生、現在CASIOのポケコンZ-1GRにて8086アセンブリを勉強している、
アセンブリ初心者です。

今回質問させて頂きたいのは、Z-1GRのアセンブリでラベル内にRET命令を記述し、
アセンブル、実行するとZ-1GRが終了してしまう現象についてです。

再現手順は以下のようになります。

1.Z-1GRを起動。

2.CREAR ,200と入力し、エンターキー押下。

3.menuキー押下し、メニュー画面を表示。

4.キー5を押下し、アセンブリモードに推移。

5.キーSを押下し、エディタを起動。

6.下記のプログラムを記述

ORG 2000H
START:
MOV AX, 0001H
MOV DX, 000FH
CMP AX,DX
JC LABEL_1
MOV CX, 000FH
JMP EXIT
LABEL_1:
MOV CX,0001H
RET
EXIT:
IRET
END

7.Shift+menuキーでアセンブリモードに推移。

8.キーAでアセンブル。

9.アセンブル完了画面が表示される。

10.BRKキー押下、monと入力、エンターキー押下。

11.デバッグ画面に推移し、G2000 ,2014と入力しエンターキー押下。

12.Z-1GRが終了する。

以上です。
もしかして、Z-1GRの仕様でラベル内ではRET命令を使えない事になっているのでしょうか?

お忙しい中、大変申し訳ございませんが、先輩方ご教示宜しくお願い致します。

CASIOのポケコンZ-1GRのRET命令について。

いつもお世話になっております。

小生、現在CASIOのポケコンZ-1GRにて8086アセンブリを勉強している、
アセンブリ初心者です。

今回質問させて頂きたいのは、Z-1GRのアセンブリでラベル内にRET命令を記述し、
アセンブル、実行するとZ-1GRが終了してしまう現象についてです。

再現手順は以下のようになります。

1.Z-1GRを起動。

2.CREAR ,200と入力し、エンターキー押下。

3.menuキー押下し、メニュー画面を表示。

4.キー5を押下し、アセンブリモードに...続きを読む

Aベストアンサー

Z-1GRは使ったことが無いので8086アセンブラの一般論として。
ぶっちゃけた話、RETはスタックに詰まれているアドレスへのジャンプ命令と等価です。
質問のプログラムではスタックに何も積まれていないのでRETの結果として制御が何処に飛ぶのか分かりません。
飛んではいけない不正なアドレス、またはリセットがかかるようなアドレス (0000:0000とか)に飛んでいるのでは?
jcではなくてcallしないとリターンアドレスがスタックに詰まれません。

ORG 2000H
START:
MOV AX, 0001H
MOV DX, 000FH
CMP AX,DX
JC LABEL_2
CALL LABEL_1
LABEL_2:
MOV CX, 000FH
JMP EXIT
LABEL_1:
MOV CX,0001H
RET
EXIT:
IRET
END

Q数学演算のサンプルコード集のあるサイトを探しています(VB6)

VB6で数学演算のソースコードのサンプル集を探しています。

例えば今回は3次元のベクトルをX,Y,Z軸周りに任意の角度だけ回転する行列をプログラムしたいので、アフィン変換のサンプルなんかないかと探しています。いいサイトがあれば教えていただけませんでしょうか。

よろしくお願いします。

Aベストアンサー

まったくの素人なので、
参考になるかはわかりませんが、
検索したらこんなのがありました。

参考URL:http://files.codes-sources.com/fichier.aspx?id=37873&f=mdlMath.bas

Qいったい,,,,.NETって。。。

質問タイトルがあまりにプアでごめんなさい。素人なもんで。。。。。
MS .NETって、端的にいって何ができるの?何が違うの?アプリケーションの開発環境が向上しただけ?例えば、VB6で作ったアプリでは動作不可能だったことが、.NET環境では可能になるとかあるんですか?

あとWinXPの管理ツールをみると、MS.NET Framework1.1 xxxxxがありますけど、何に使うの?

Aベストアンサー

>アプリケーションの開発環境が向上しただけ?

その認識でいいと思います。
開発側からすると大きな違いです。
ユーザのメリットとしては、ソフトの品質が上がり、安くなる。
# 現状はそうでもないか

新しく出来ることは、ノータッチデプロイメントぐらいですかね。

QHead First PHPサンプルコード文字化け

よろしくです。
下記のphpの本を参考にプログラムを勉強しているのですが、
サンプルコード(完成品)の日本語部分(DBがソースの日本語部分全て)がすべて文字化けしてしまいます。
この本は文字化け対策を強みにした本なのですが、実際のサンプルコードがこんな状態なので非常に困っています。
例えば、表示サイトページ内に3時間というデータが表示される予定だとすると、3??(ハテナマーク)のように表示されます。
ちなみに文字化け後、ブラウザ、DB、phpの文字コード設定はutf8統一であることは確認しました。apacheの文字コードはわかりません。
テスト環境は、自宅のローカルサーバーと、某レンタルサーバーの2つでどちらでも文字化けです。

この本を試した方、もしくはちゃっちゃっと下記サイトからサンプルをとって試していただける方、どうかレスをお願いします。
著書内ではこれでどうだというくらい日本語対策をうたっているのに、全サンプルがNGとは、あまりに不思議な現象で、とても困っています。
どうかよろしくお願いします。

『Head First PHP & MySQL――頭とからだで覚えるWebアプリケーション開発の基本』
Lynn Beighley, Michael Morrison 著、佐藤 嘉一 訳
2010年03月 発行
672ページ
ISBN978-4-87311-444-6

http://www.oreilly.co.jp/books/9784873114446/
関連ファイル ー サンプルコード
に本の中で使われている全てのサンプルが入っています。

よろしくです。
下記のphpの本を参考にプログラムを勉強しているのですが、
サンプルコード(完成品)の日本語部分(DBがソースの日本語部分全て)がすべて文字化けしてしまいます。
この本は文字化け対策を強みにした本なのですが、実際のサンプルコードがこんな状態なので非常に困っています。
例えば、表示サイトページ内に3時間というデータが表示される予定だとすると、3??(ハテナマーク)のように表示されます。
ちなみに文字化け後、ブラウザ、DB、phpの文字コード設定はutf8統一であることは確認しま...続きを読む

Aベストアンサー

表示させるだけじゃねーじゃん。

確かにデフォルトだと文字化けした。
でも文字化け回避できた。

--------------------------------
// Connect to the database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
mysqli_set_charset($dbc, "utf8");// ←追加

Qx86のJP命令について。

いつもお世話になっております。
小生、現在CASIOのポケコンZ-1GRにて、
x86アセンブリを勉強中のアセンブリ初心者です。
今回、先輩方にご質問させて頂きたいのは、
JP命令についてです。

まず、以下のコードを見てください。
ORG 2000H
START:
MOV AX,08888H
XOR BX,BX
MOV DX,00888H
MAIN:
AND DX,AX
JP SETBX
JMP RETURN
SETBX:
MOV BX,0001H
RETURN:
IRET
END

と記述し、アセンブル→実行しますと、BXに1が格納されます。
JP命令というのは、演算後、1のビット数が偶数の時にセットされるもので、
上記のコードだと、DXは0888のままなので、1のビット数は奇数でRETURNにジャンプするはずだと思うのですが。。。

お忙しい中、大変申し訳ございませんが、先輩方、ご教授宜しくお願い致します。

いつもお世話になっております。
小生、現在CASIOのポケコンZ-1GRにて、
x86アセンブリを勉強中のアセンブリ初心者です。
今回、先輩方にご質問させて頂きたいのは、
JP命令についてです。

まず、以下のコードを見てください。
ORG 2000H
START:
MOV AX,08888H
XOR BX,BX
MOV DX,00888H
MAIN:
AND DX,AX
JP SETBX
JMP RETURN
SETBX:
MOV BX,0001H
RETURN:
IRET
END

と記述し、ア...続きを読む

Aベストアンサー

Intel のドキュメントによると, PF は
「結果の最下位バイトに値 1 のビットが偶数個含まれている」場合
にセットされるらしいよ.

参考URL:http://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol1_Online_i.pdf

Qホームページや書籍などのサンプルコードは動かないものばかりでしょうか?

ホームページや書籍などのサンプルコードを試して動かしてみても、動かないサンプルコードばかりだと思いますが、同じことを考えている人はいらっしゃいますか?

何か…ホームページや書籍などのサンプルコードが動かないということは、そのサンプルコード自体の問題というよりは作者の問題と思いますが…。なぜなら、1件のホームページや1冊の書籍で、このサンプルコードが動かなければ別のサンプルコードが動かない可能性が高いです。逆にこのサンプルコードがちゃんと動くということは、他のサンプルコードも動く可能性が高い。経験談で感じた限りです。

要するには作者の解説力次第になりますと思いますが、どうでしょうか?どんな簡単な言語でも解説力がなければ取っ付きにくく、どんな難しい言語でも解説力があれば取っ付きやすいものでしょうか?

何か解決法とかありますでしょうか?ご回答をお願いします。

Aベストアンサー

ちょっと抽象的かも、です。

>ホームページや書籍などのサンプルコードが動かないということは、そのサンプルコード自体の問題というよりは作者の問題と思いますが…。

それは「あり得ます」。
ただし、その前に自分の環境をチェックした方がいいでしょう。
ヴァージョン違い、なんてのは他のお方が仰ってる通りなんですが、他にも原因は色々と考えられると思います。
基本的に、一概にプログラミング言語と言っても、

1.提供元が一つしか無いもの
2.公式規格が制定されているもの

の2種類があります。
例えばC#なんかはMicrosoftしか提供元が無い言語がありますし、最近流行りのスクリプト言語系(Python、Ruby等)も提供元が一つしかありません。こう言う場合はヴァージョン違いだと動かない可能性がありますね。他のお方が仰っているように、使用してる言語のヴァージョンをチェックした方がいいでしょう。
じゃあ、2番なら安心か、と言うとそう言う事もないのです。
例えばC言語なんかは公式規格があったりしますが、かと言って、通常は「公式規格に則って」作っただけの言語なんてのも無くって、大体その提供側独特の「拡張ライブラリ」が入ってたりするんです。
つまり、A社が提供した「拡張ライブラリ」を利用したプログラムを「B社製の」一応公式規格に則った言語で書いても動かない場合があるんです。「拡張ライブラリ」自体は独特なんで、B社が同じモノを付けている、とは限りません。そう言う場合があるんですね。
まあ、そう言う事が(しばしば)生じるんで、何らかのサイト/参考書を利用してプログラムの勉強をする場合は、なるたけその筆者と「同じ環境を」備えるようにした方がいいです。作成者自身も「全部の環境を」試せるワケではない、と言う事を最初に納得しておくべきだと思います。

>要するには作者の解説力次第になりますと思いますが、どうでしょうか?
>どんな簡単な言語でも解説力がなければ取っ付きにくく、どんな難しい言語でも解説力があれば取っ付きやすいものでしょうか?

一理あるとは思います。
が、同時に「言語の性質」ってのはありますね。解説力があってもそれを埋める事は難しいでしょう。

これ言って良いのか悪いのか分かりませんが、原則、書籍を購入して勉強する場合は「定番で」「評価の高い」書籍を選んだ方が、万能では無いですけど「失敗する確率は低い」とは思います。やっぱ校正とかそのテのノウハウを蓄積してる「実績ある」出版社の本を選んだ方がいいですね。
敢えて言いますが、最近「ネットで発表」→「書籍化」と言うのが流行りになっていますが、ホームページを作れても書籍が作れるのか、と言うとこれはまた別の話なんですね。
新興のネット関係での出版社なんかがプログラミング言語の本をサイトの作者の持ち込みで「安く」出版してるケースが見られますが、単なるブログ系の本だったらいざ知らず、このテの技術系の本の場合、「校正を全く行わない」「誤字脱字が多い」「索引でデタラメで役に立たない」状態で出版していて、「安い」だけで買うと、結局役に立たないんで痛い目見ます(敢えて会社名は伏せておきますがそう言う実例があるのです)。
ですから、サイトで勉強するなら構いませんが、書籍を買って勉強する場合は、少々値段が高くでも「定番商品」の方が結果安上がりです。書評に関しては大体のトコamazonで見れますし(もっともamazonは否定的な意見は載せたがらない方針ですが)、何種類か評判が良い書籍をメモっておいて本屋で現物を見た後購入した方が良いでしょう。または、評判書籍を取りあえず図書館で借りて読んでみる、とか。
出版社もすべて同じなワケではなく、「一回刷っちゃったらあとは絶版でイイや」程度で考えて粗製本作ってるケースも確かに存在するんで、そこまで行くと、確かに仰る通りかもな、とは思います。

ちょっと抽象的かも、です。

>ホームページや書籍などのサンプルコードが動かないということは、そのサンプルコード自体の問題というよりは作者の問題と思いますが…。

それは「あり得ます」。
ただし、その前に自分の環境をチェックした方がいいでしょう。
ヴァージョン違い、なんてのは他のお方が仰ってる通りなんですが、他にも原因は色々と考えられると思います。
基本的に、一概にプログラミング言語と言っても、

1.提供元が一つしか無いもの
2.公式規格が制定されているもの

の2種類があり...続きを読む

QASP,net,cgi,javascript,php等の技術

ASP,net,cgi,javascript,php等の技術で、Webアプリケーションを開発するに当って
どれで作成したほうがいいですか?

機能としては、顧客管理、掲示板、グラフ表示、データベースアクセス等の機能を使います。

それぞれの言語で作成するあたって、長所と短所を頂けると幸いです。

Aベストアンサー

・ASP
確かに古いですが、まだASPで動いているサイトはけっこうあると思います。性能面はCGIよりはいいのではないでしょうか。
IISでしか動作しないのが欠点です。

・.net
よく知りません。確かに古いASPよりはASP.netの方がいいかもしれ
ません。最近少しみかけるようになりました。
拡張子 aspx のサイトはこの作りですね。

・cgi
効率が悪いのでやめた方がいいと思います。ただ、いまだに一番
よく使われていると思います。自身でサーバが管理できないプロ
バイダのサーバにおくような場合はこれ以外の選択肢はないかも
しれません。

・javascript
通常はクライアント側で使う言語ですが、サーバ側で使うことも
あり得ます。たとえば、ASPでは、VBScriptの代わりにJavaScript
を使うこともできます。使って何のメリットがあるかは、よくわかり
ません。たとえば、ASPではVBScriptを使った方が動作は早いと
思います。

・PHP
よく知りません。

・あとはサーブレット・JSPも候補にあげた方がいいですね。
特に欠点もなく、無難に何でもこなせると思います。

・ASP
確かに古いですが、まだASPで動いているサイトはけっこうあると思います。性能面はCGIよりはいいのではないでしょうか。
IISでしか動作しないのが欠点です。

・.net
よく知りません。確かに古いASPよりはASP.netの方がいいかもしれ
ません。最近少しみかけるようになりました。
拡張子 aspx のサイトはこの作りですね。

・cgi
効率が悪いのでやめた方がいいと思います。ただ、いまだに一番
よく使われていると思います。自身でサーバが管理できないプロ
バイダのサーバにおくよう...続きを読む


人気Q&Aランキング

おすすめ情報