По нажатию Ctrl+А завершить работу программы и выполнить команду dir - Assembler
Формулировка задачи:
Помогите пожалуйста, написать программу на Turbo Assembler которая после нажатия [Ctrl ] + [А] завершить работу программы и выполнить команду DOS : dir.
Решение задачи: «По нажатию Ctrl+А завершить работу программы и выполнить команду dir»
textual
Листинг программы
org 100h jmp start mes0 db 13,10,' Ctrl+A - emulation "DIR"' db 13,10,' ------------------------------------------' db 13,10,' Enter string: $' mes1 db 13,10 db 10,' File name' db 13,10,'+----------------+',13,10,' $' crlf db 13,10,' $' ; перевод строки dtaBuf db 44 dup(0) ; +30 = имя файла (13 символов) fName db '*.*',0 ; маска с именем файла (все файлы) noFile db 7,13,10,'<---All files printed!$' start: ; align 16 ; выравним параграф памяти.. mov ah,9 ; mov dx,mes0 ; int 21h ; @@: ; xor ax,ax ; читаем клаву.. int 16h ; cmp al,1 ; Ctrl+A ?! je dirCommand ; int 29h ; jmp @b ; dirCommand: ; mov ah,9 ; mov dx,mes1 ; int 21h ; mov ah,1Ah ; установим область DTA mov dx,dtaBuf ; int 21h ; mov ah,4Eh ; искать файл.. mov cx,10h ; атрибут - включая каталоги! mov dx,fName ; маска имени файлов int 21h ; jc stop ; ошибка? call printName ; выводим имя на экран findNext: ; mov ah,4Fh ; искать сл.файл.. mov dx,dtaBuf ; буфер для данных int 21h ; jc stop ; call printName ; jmp findNext ; мотаем цикл до ошибки.. stop: ; mov ah,9 ; нет больше файлов! mov dx,noFile ; int 21h ; exit: xor ax, ax ; int 16h ; int 20h ; на выход! ;ннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн ; Функция выводит имя файла на экран, из области DTA printName: ; mov si,dtaBuf+30 ; смещаемся в буфере к имени файла @@: ; lodsb ; читаем символы, or al,al ; ..пока не встретится нуль jz @f ; int 29h ; выводим их на экран jmp @b ; @@: ; mov ah,9 ; вставляем перенос строки mov dx,crlf ; int 21h ; ret ;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д