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命令を使えない事になっているのでしょうか?
お忙しい中、大変申し訳ございませんが、先輩方ご教示宜しくお願い致します。
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
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Cのオブジェクトファイルの逆アセンブル 5 2023/05/13 01:51
- Windows 10 Windows 10でBIOS画面が表示されなくなった 9 2022/06/26 08:13
- iOS これは日本語入力の大発明ですか? 7 2022/12/21 07:17
- 工学 Pythonの3Dグラフ表示に関する質問です。 1 2022/12/06 15:03
- 中古パソコン PCで教えて下さい! ノートPCを立ち上げた時に、「ピー!」で音がして、黒い画面が現れました。写真を 3 2023/04/08 14:20
- Windows Me・NT・2000 widows xpのエラーで利用ができなくなりました 3 2022/12/21 13:43
- その他(プログラミング・Web制作) x86_32のGASの擬似命令 3 2023/06/07 19:55
- マウス・キーボード scroll Lockキーを解除したけれど。 1 2022/09/16 09:23
- 国産車 トヨタGRカローラ GRヤリスの3気筒エンジン四駆システム ブースト圧上げてパワー絞り出しただけ。 12 2022/12/04 13:44
- Windows 95・98 Windows11にバージョン アップしました。 2 2023/07/21 18:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DataGridViewのチェックボック...
-
c# 文字列の最後から1文字削除...
-
Ctrlキーを押しながらのダブル...
-
VBAで一時中断したプログラムの...
-
Eclipseでクリーンが出来ない
-
SPREADでカーソルの位置を1行目...
-
グリッドビューでのチェックボ...
-
javascript 別ウィンドウを開...
-
メッセージボックスのボタンの...
-
マウスのボタン判定について
-
VBAで早押しゲームを作りたい
-
スクリプト式で文字列変数がゼ...
-
メール添付されたPDFファイルが...
-
C# ListView内の検索機能について
-
EXCEL2010でセルが編集中かを判...
-
初期状態に戻す方法
-
IEの閉じるボタンを消す方法
-
コマンドボタンをキーボードで操作
-
C# ボタンを押すとyahooのサイ...
-
Seasar2環境での画像リンクの作成
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c# 文字列の最後から1文字削除...
-
DataGridViewのチェックボック...
-
VBAで一時中断したプログラムの...
-
Eclipseでクリーンが出来ない
-
ブラウザの×ボタン(閉じるボタ...
-
グリッドビューでのチェックボ...
-
メール添付されたPDFファイルが...
-
SPREADでカーソルの位置を1行目...
-
EXCEL2010でセルが編集中かを判...
-
CheckBoxをボタン形式にして押...
-
最大化ボタンと最小化ボタンを...
-
Ctrlキーを押しながらのダブル...
-
IEの閉じるボタンを消す方法
-
今更、VBAでRPA、キーボード操...
-
C# Enterキーの動作について
-
Page_Load時にボタンクリックイ...
-
Webブラウザの閉じるボタン無効...
-
【C#】 : WindowsProgramming ...
-
Fancyboxのiframe内に閉じるボタン
-
VBのこのコードの意味を教えて...
おすすめ情報