8086 プログラミング言語を使用して、2 つの連続するイベント間の時間間隔を調べるプログラムをどのように作成しますか?
.MODEL 小
.スタック100H
。データ
文字列 DB '$';表示する文字列
MSG1 DB 0DH, 0AH, '1回目を入力してください:$';メッセージ1
MSG2 DB 0DH, 0AH, '2 回目の入力:$';メッセージ2
RESULT DB 0DH, 0AH, '時間間隔は次のとおりです:$';メッセージ3
MSG3 DB 0DH、0AH、'$';メッセージ4
INPUT1 DB 2 DUP (?); 1回目の入力バッファ
INPUT2 DB 2 DUP (?); 2回目の入力バッファ
出力 DB 5 DUP (?);出力バッファ
CRLF DB 0DH、0AH、'$';キャリッジリターンとラインフィード
。コード
メインプロセス;主な手順
MOV AX、@DATA;データセグメントの初期化
MOV DS、AX
LEA DX、MSG1;表示メッセージ1
MOV ああ、9
INT 21H
MOV ああ、1; 1回目を取得
INT 21H
ムーアル、ああ;アラバマ州で時間を節約
MOV BL, DL; BL で時間を節約
MOV ああ、0; AHとALをクリア
移動AL、0
MOV CX、10;時間を10倍する
MUL CX
MOV DL, アラバマ州; DL で時間を節約
MOV 出力、DL;時間を出力バッファに保存する
MOV 出力 +1、':'; ':' を出力バッファに格納する
MOV ああ、1;分を取得する
INT 21H
MOV 出力 +2、BL;分を出力バッファに保存する
MOV 出力 +3、':'; ':' を出力バッファに格納する
LEA DX、出力; 1回目を表示
MOV ああ、9
INT 21H
LEA DX、MSG2;表示メッセージ2
MOV ああ、9
INT 21H
MOV ああ、1; 2回目を取得
INT 21H
MOV CH、ああ; CHで時間を節約
MOV DH, DL; DH で時間を節約
MOV ああ、0; AHとALをクリア
移動AL、0
MOV CX、10;時間を10倍する
MUL CX
MOV DL, アラバマ州; DL で時間を節約
CMP DL、出力;時間を比較する
JB サブ時間; 2 時間目 <1 時間目の場合は、時間を減算します
サブチャンネル、出力; 1時間目から2時間を引く
MOV DL, スイス;差分をDLに保存
MOV ああ、0; AHとALをクリア
移動AL、0
MOV CX、10;分に10を掛ける
MUL CX
MOV DL, アラバマ州; DL で 1 分を節約
CMP DL、出力+2;分を比較する
JB SUB_MINUTES; 2 分 <1 分の場合は、分を減算します
サブ DH、出力 +2; 1分目から2分目を引く
MOV DL, DH;差分をDLに保存
JMPスキップ; 「負の」時間間隔の表示をスキップするためにジャンプします
サブ時間:;必要に応じて時間を差し引きます
MOV DL、24; 2時間目に24時間を加えます
CH、DLを追加
サブチャンネル、出力; 1時間目から2時間を引く
MOV DL, スイス;差分をDLに保存
SUB_MINUTES:;必要に応じて分を減算します
MOV DL、60; 2分に60分を加算
DH、DLを追加
サブ DH、出力 +2; 1分目から2分目を引く
MOV DL, DH;差分をDLに保存
スキップ:
MOV 出力 +4、DL;微小な差分を出力バッファに保存
LEA DX、出力;表示時間間隔
MOV ああ、9
INT 21H
LEA DX、結果;表示メッセージ3
MOV ああ、9
INT 21H
MOV ああ、4CH;戻りコード 0 で終了します
INT 21H
メインエンド;主な手順の終了
「」