По нажатию 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 ;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д