• ベストアンサー

アセンブラの数値比較

Z80のアセンブラで数値比較を行うにはどのような記述をすればよいのでしょうか? 例)変数に入っている値「10」と変数に入っている値「20」を比較するような場合 よろしくお願いいたします。

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

  • ベストアンサー
  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

VDATA1: .db 10 ;変数VDATA1を10で初期化 VDATA2: .db 20 ;変数VDATA2を20で初期化 begin: LD CD,VDATA1 ;変数VDATA1のアドレスを読み込む LD A,(CD) ;アドレスの内容をレジスタAに読み込む LD CD,VDATA2 ;変数VDATA2のアドレスを読み込む LD B,(CD) ;アドレスの内容をレジスタBに読み込む CP B ;A-Bの結果でキャリー設定 JP C,ptn_m ;C(A<B)ならばptn_mへ JP Z,ptn_z ;C(A=B)ならばptn_zへ JP NC,ptn_p ;NZでNC(A>B)ならばptn_pへ ptn_m: ptn_z: ptn_p: ニーモニック表記で記述しました。 詳しくは、参照URLを見てください。

参考URL:
http://www3.ocn.ne.jp/~miotti/ti/asm/
poohpiglet2
質問者

お礼

ご回答ありがとうございます。 具体例まで記述していただき感謝しております。 また何かありました時はよろしく御願い致します。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

cpで比較して、zeroフラグやcarryフラグで条件付きジャンプを実施すればよいのでは。

参考URL:
http://www.zilog.com/docs/docs2.asp?FAM=220&DT=10,11,13,14,17,19,21,22,23,25,28,30,31,33,34,42,43,44,45,46,47&id=1653
poohpiglet2
質問者

お礼

ご回答ありがとうございます。 また何かありました時はよろしく御願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • アセンブラでの即値の引き算

    アセンブラで変数から即値を引く場合(ex. x - 4)は subi rt, rs, 4 とかでできますが、逆に即値から変数を引く場合(ex. 4 - x)はどうなるのでしょうか? neg rs, rs addi rt, rs, 4 みたいに符号を反転してから計算するのでしょうか? もしそうなら、C言語とかでi-4の計算は4-iより遅いということでしょうか? 同様に割り算の場合などはどうなのでしょうか? よろしくおねがいします。

  • アセンブラで「0でないならスキップ」したい

    アセンブラで「0でないならスキップ」したい PIC18Fベースの開発で、アセンブラでプログラムをしています。 いま、遅延タイマーとして作った変数DELAY(初期値:0x0f)をタイマ割込みで減算しています。 DELAYが0x00になったとき、実行したい命令がありますが、どのようにプログラムすれば簡潔に記述できるでしょうか。 命令一覧表を眺めながら考えているのですが、できそうでできず困っています。

  • GASアセンブラのテストプログラムの作り方について

    現在、アセンブラのテストプログラムの作り方に困っています。 入力された値を関数palindへ渡し、結果を出力する様にしたいのですが、考え方がよく解りません。 関数を呼び出すには、       movl 引数, %eax       pushl %eax       call 渡す関数の名前       popl %eax とすると思うのですが、これだけでは結果を戻しただけだになると思います。 この後結果を出力するにはどのようにしたら良いでしょうか? 宜しくお願いしますm(_ _)m ・回文を作るアセンブラの関数(palind.s) 例えば8と入力した場合に2進数(1000)の回文(上から読んでも下から読んでも同じもの)、10000001と00011000を作ります。(abcd)→(abcddcba),(dcbaabcd) 答えは2個あるので、入力とは別の変数を持ってきて、その変数の値によってどちらかを返すようにします。 (2個の答えを出すには変数を変えて呼び出せば問題ないと思います)

  • 組み込みアセンブラとは何ですか?

    私はx86でアセンブラを勉強中ですが、ネットでアセンブラ関係のことを検索していて組み込みアセンブラという記述をを見ました。 C言語から利用する場合インラインアセンブラより良いとかなんとか。 組み込みアセンブラという名前も怪しく合っているかわかりません。 掲示板のようなところで組み込みアセンブラの方が良い、早いと書いてありました。いろいろ検索して見かけたのでどこの掲示板かもわかりません。後から探したのですが見つけることができませんでした。 そこで質問なのですがそのその組み込みアセンブラとは何なんでしょうか? C言語からアセンブラを利用する場合、今読んでいる本「やさしいアセンブラ入門」にはインラインアセンブラとアセブラ言語モジュール(オブジェクトファイル)をCプログラムでリンクする方法の2種類が書いてありますが。組み込みアセンブラはモジュールで使うということでしょうか? 違うとすればどのような方法でアセンブラを利用することでしょうか? わかる方教えてください。ヨロシクお願いします。

  • アセンブラの機能について

    今、アセンブラの勉強をしているのですがある書籍の説明文において 「ハードウェアすなわちコンピュータが用意している機能を原理的にはすべて使用してプログラムを作成できる。」 ということや、 「C言語などの高級言語には存在しない、ハードウェアに予め用意されている機能を利用してのプログラム製作が可能」 という記述があったのですが、具体的にアセンブラには高級言語には存在しないどのような機能が内臓されているのでしょうか? 私は多少C言語およびJavaの経験があるのですが、是非ともアセンブラとの比較を勉強したいと思い、この疑問が浮かび上がりました。 分かる方、よろしくお願いいたします。

  • 値の比較について

    Excelにおいて 1  1 3  3  4  4 7  5 6  6 3  2 というように数値が並んでおり、同じ行の値を比較して、値がそれぞれ異なった場合にのみその値の順番を返す、というようなプログラムをexcelのVBを利用して書きたいと思っています。 上の例でいくと、4行目と6行目の値が異なっているので、4、6というような回答をしてくれるプログラムを組みたいです。 プログラムに関しては全くの素人ですので、どうか回答よろしくお願いいたします。

  • 65816アセンブラでの質問

    現在65816アセンブラを独学で勉強しています。 そこで皆様にお聞きしたいのですが… 例えば AD E0 11 LDA で11E0の値を読み込んで その値が260以上だった場合「Xにジャンプ」、 260以下だった場合「Yにジャンプ」 という命令はどのようにしたら宜しいですか?

  • TextBox1とTextBox2の数値の大小の比較について

    1)ユーザーフォーム上のTextBox1に入力された数値とTextBox2に入力された数値の大小の比較を下記のような感じで行ってみたところ、40>300や50>100という感じの結果になってしまいます(ゼロを無視してる?)プロパティは.Valueと.Textの両方を試してみたのですが、同じような結果だったと思います。正しい結果を出すにはどうすればよいのでしょうか。 If UserForm1.TextBox1.Value>UserForm1.TextBox2.Value then~ 2)変数を宣言して、その変数にTextBox1の内容(数値)を代入する場合、Integer型等とTextBox型のどちらとして宣言するのが正しいのでしょうか。 以上二点、よろしくお願いします。(Excel2000使用)

  • アセンブラで割り算

    アセンブラ記述で割り算を実現させたいのですがよくわかりません。 下記条件でどのように実現すればよいでしょうか。 ・8ビット÷4ビット ・命令セットは  LDL, LDH, MOV, ADD, SUB, SRA, SR, SL, AND, OR, JE, JMP, CMP, LD, ST, HLT ・レジスタは16ビット ・レジスタは8個 です。 「被除数の上位4ビットと除数を比較して商を求めて、余りに被除数の次ビットを連接する」 の繰り返しでできると思っているのですが、アセンブラ表記がわかりません。 よろしくお願いします。

  • 数値から文字列へ変換後の先頭桁埋めについて

    お世話になっています。 現在csvファイルからデータを読みだして、 読みだした項目をphp上で表示させようとしています。 例として page1.php <?php $num = '100'; #csvから取得した数値項目 $temp = "00" + $num; ?> と記述して値を引き渡したものを page2.php <html> <body> <?= $temp; ?> </body> </html> というように記述しても先頭の00が自動で省略されてしまいます。 画面上に'100'という数値自体は表示できていますが、 数値の変数を先頭に'0'の足して文字列として使用するにはどのようにすれば良いのでしょうか? strval($num)を使用してもやはり正しい値が表示されませんでした。 ぜひ知恵をおかしください。 以上、宜しくお願いします。

    • ベストアンサー
    • PHP