• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CASIOのポケコンZ-1GRのRET命令について。)

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

このQ&Aのポイント
  • CASIOポケコンZ-1GRのRET命令を使用すると終了してしまう現象について質問です。
  • Z-1GRのアセンブリでラベル内にRET命令を記述し、実行するとZ-1GRが終了する現象です。
  • Z-1GRの仕様でラベル内ではRET命令を使用できないのか調べたいです。

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

  • ベストアンサー
  • BuriBuri4
  • ベストアンサー率28% (150/525)
回答No.1

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

HackHack
質問者

お礼

BuriBuri4さん、ご回答頂き誠に感謝申し上げます。 BuriBuri4さんにご提示していただいたコードを実行させてみると、 見事Z-1GRが落ちずにプログラムが実行できました。 後、下記の様にプログラムを変更し、実行しても見事実行できました。 ORG 2000H START: MOV AX, 000FH MOV DX, 0001H 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 確かにBuriBuri4さんの仰る通り、8086アセンブリの基礎中の基礎を忘れて、プログラミングしていました。 再度、8086アセンブリの勉強を開始致します。 今回は本当にお世話になりました。 心から感謝申し上げます。 ありがとうございました!!

関連するQ&A