При нажатии любой клавиши вывести на экран просьбу нажать эту клавишу еще раз - Assembler

Узнай цену своей работы

Формулировка задачи:

Нужно написать программу, которая при нажатии любой клавиши на выводит на экран просьбу на*жать эту клавишу еще раз. При повторном нажатии просьба с экрана исчезает и программа закрывается. При этом программа должна быть резидентной. Как это сделать?

Решение задачи: «При нажатии любой клавиши вывести на экран просьбу нажать эту клавишу еще раз»

textual
Листинг программы
        jmp     work
Old_i15 dw      0,0
Str_    db  0h,0h
pushall proc    near
    jmp pushwrk
Save    dw  0, 0
pushwrk:
    pop [Save]
    pop [Save +2]
    push    ax
    push    bx
    push    cx
    push    dx
    push    ds
    push    es
    push    si
    push    di
    push    bp
    push    [Save +2]
    push    [Save]
    ret
pushall endp
 
popall  proc    near
    jmp popwrk
Rest    dw  0, 0
popwrk:
    pop [Rest]
    pop [Rest +2]
    pop bp
    pop di
    pop si
    pop es
    pop ds
    pop dx
    pop cx
    pop bx
    pop ax
    push    [Rest +2]
    push    [Rest]
    ret
popall  endp
 
get proc    near
    mov ah, al
    mov cl, 4
    shr ah, cl
    and al, 0Fh
 
    add ah, 30h
    cmp ah, 3Ah
    jl  prd_1
    add ah, 7h
prd_1:  mov cs:[Str_], ah
    add al, 30h
    cmp al, 3Ah
    jl  prd_2
    add al, 7h
prd_2:  mov cs:[Str_ +1], al
    ret
get endp
 
write   proc    near
    mov ah, 0fh
    int 10h
    push    cs
    pop es
    lea bp, cs:Str_
    mov cx, 2
    mov dx, 0000h
    mov bl, 70h
    mov ax, 1300h
    int 10h
        ret
write   endp
 
New_i15:
    call    pushall
    call    get
    call    write
    call    popall
    iret
 
work:
        push    cs
        pop     ds
        mov     ax, 3515h
        int     21h
        mov     [Old_i15], bx
        mov     [Old_i15 +2], es
        lea     dx, New_i15
        mov     ax, 2515h
        int     21h
        lea     dx, work
        int     27h

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы