Hogyan írjon programot, amely megtudja két egymást követő esemény közötti időintervallumot 8086 programozási nyelv használatával?
.KISI MODELL
.STACK 100H
.ADAT
STRING DB '$'; Megjelenítendő karakterlánc
MSG1 DB 0DH, 0AH, 'Írja be az 1. alkalommal:$'; üzenet 1
MSG2 DB 0DH, 0AH, 'Írja be a 2. alkalommal:$'; üzenet 2
EREDMÉNY DB 0DH, 0AH, 'Az időintervallum:$'; üzenet 3
MSG3 DB 0DH, 0AH, '$'; üzenet 4
INPUT1 DB 2 DUP (?); bemeneti puffer 1. alkalommal
INPUT2 DB 2 DUP (?); bemeneti puffer 2. alkalommal
OUTPUT DB 5 DUP (?); kimeneti puffer
CRLF DB 0DH, 0AH, '$'; Kocsi vissza és soremelés
.KÓD
FŐ PROC; Fő eljárás
MOV AXE, @DATA; Adatszegmens inicializálása
MOV DS, AX
LEA DX, MSG1; Üzenet megjelenítése 1
MOV AH, 9
INT 21H
MOV AH, 1; Szerezd meg az 1. alkalommal
INT 21H
MOV AL, AH; Takarítson meg órát AL-ban
MOV BL, DL; Takarítson meg perceket a BL-ben
MOV AH, 0; Tiszta AH és AL
MOV AL, 0
MOV CX, 10; Szorozd meg az órát 10-zel
MUL CX
MOV DL, AL; Takarítson meg órát DL-ben
MOV KIMENET, DL; Tárolja az órát a kimeneti pufferben
MOV OUTPUT+1, ':'; Tárolja ":" a kimeneti pufferben
MOV AH, 1; Kapd el a percet
INT 21H
MOV OUTPUT+2, BL; Tároljon percet a kimeneti pufferben
MOV OUTPUT+3, ':'; Tárolja ":" a kimeneti pufferben
LEA DX, KIMENET; Jelenítse meg az 1. alkalommal
MOV AH, 9
INT 21H
LEA DX, MSG2; Üzenet megjelenítése 2
MOV AH, 9
INT 21H
MOV AH, 1; Szerezd meg a 2. alkalommal
INT 21H
MOV CH, AH; Takarítson meg órát CH-ban
MOV DH, DL; Takarítson meg perceket a DH-ban
MOV AH, 0; Tiszta AH és AL
MOV AL, 0
MOV CX, 10; Szorozd meg az órát 10-zel
MUL CX
MOV DL, AL; Takarítson meg órát DL-ben
CMP DL, KIMENET; Hasonlítsa össze az órákat
JB SUB_ÓRA; Ha 2. óra <1. óra, vonjuk le az órákat
SUB CH,OUTPUT; Vonja ki a 2. órát az 1. órából
MOV DL, CH; Mentse el a különbséget DL-ben
MOV AH, 0; Tiszta AH és AL
MOV AL, 0
MOV CX, 10; Szorozd meg a percet 10-zel
MUL CX
MOV DL, AL; Takarítson meg perceket DL-ben
CMP DL, OUTPUT+2; Hasonlítsa össze a perceket
JB SUB_MINUTES; Ha a 2. perc <1. perc, vonjuk le a perceket
SUB DH,KIMENET+2; Vonja ki a 2. percet az 1. percből
MOV DL, DH; Mentse el a különbséget DL-ben
JMP SKIP; Ugrás a „negatív” időintervallum megjelenítésének kihagyásához
SUB_ÓRA:; Szükség esetén vonja le az órákat
MOV DL, 24; Adjon hozzá 24 órát a 2. órához
ADD CH, DL
SUB CH, KIMENET; Vonja ki a 2. órát az 1. órából
MOV DL, CH; Mentse el a különbséget DL-ben
SUB_PERCEK:; Ha szükséges, vonjon le perceket
MOV DL, 60; Adjon hozzá 60 percet a 2. perchez
ADD DH, DL
SUB DH, KIMENET+2; Vonja ki a 2. percet az 1. percből
MOV DL, DH; Mentse el a különbséget DL-ben
UGRÁS:
MOV OUTPUT+4, DL; Tárolja a percnyi különbséget a kimeneti pufferben
LEA DX, KIMENET; Időintervallum megjelenítése
MOV AH, 9
INT 21H
LEA DX, EREDMÉNY; Üzenet megjelenítése 3
MOV AH, 9
INT 21H
MOV AH, 4CH; Kilépés a 0 visszatérési kóddal
INT 21H
MAIN ENDP; A fő eljárás vége
```