1. カメラ
  2. カーオーディオ&エレクトロニクス
  3. ホームオーディオ
  4. パーソナルオーディオ
  5. テレビ
  6. スマートホーム
  >> 電子技術オンライン >  >> パーソナルオーディオ >> クロックラジオ

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

メインエンド;主な手順の終了

「」