Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: нужно ввести путь к файлу через клавиатуру средствами BIOS  (Прочитано 7316 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Galunchik
Новенький

ru
Offline Offline

« : 28-10-2011 08:57 » 

надо переделать код,чтобы на экране выдавалось сообщение: Enter path to file: , и путь вводился с клавиатуры средствами bios??? подскажите,как сделать!

Код:
.model tiny                             
.stack 100h                             
.data                                   
 
cr      equ     0dh                             
lf      equ     0ah                             
 
 
;данные
;MSG db cr,lf,'Enter path to file: $'
FileName db '1.txt',0
ErrorOpenFile db cr,lf,'Error! Unable to open file!$'
EndF db cr,lf, 'Reading the file is complete!$'
 
 
HANDLE dw ?                             
symbol db ?
 
 
.code                                   
main:
        mov ax, @data           
        mov ds, ax                     
 
;установка курсора
        mov ah,02h                     
        mov bh,00                       
        mov dh,09h                     
        mov dl,01h                     
        int 10h
       
       
;открытие файла
        mov ah,3dh                     
        mov al,00h                     
       
       
        lea dx, FileName         
        int 21h                         
       
        lea dx, ErrorOpenFile
        jc open_error           
        mov HANDLE,ax           
 
;чтение файла
read:   
        mov ah,3fh             
        mov bx,HANDLE           
        mov cx,1                       
        lea dx,symbol           
        int 21h
 
        jc exit                         
 
;проверка количества прочитанных символов
        cmp ax,cx               
                                               
 
;загрузка адреса сообщения об окончании работы
        lea dx, EndF           
        jnz endFile
 
       
       
        mov al,symbol           
        mov bx, 07h                   
        push ax                       
       
;изменение цвета
        or al, 20h                   
        cmp al, 'a'                   
        jb Printing                 
       
        cmp al,'z'                     
        ja Printing                   
        mov bx, 02h               
       
       
;вывод символа с атрибутами
Printing:
        mov ah, 09h                 
        mov al, 20h                 
        int 10h                         
       
        pop dx                         
 
;проверка кода "в начало строки"       
        cmp dl,0dh                     
        jz read                         
 
;проверка кода "перейти на новую строку"       
        cmp dl,0ah                     
        jnz isOut                       
       
        mov ah,02h                     
        int 21h
       
        mov dl,0dh                     
 
       
isOut:
        mov ah,02h                     
        int 21h                         
       
        jmp read                       
       
       
;запоминание dx для вывода сообщения   
endFile:
        push dx                         
 
       
;закрытие файла
 
        mov ah,3eh                     
        mov bx,HANDLE           
        int 21h                         
       
       
        ;xor ax,ax
        ;int 16h
       
        xor ax,ax
        int 16h
;вывод сообщения об ошибке открытия файла
open_error:
        mov ah,09h
        int 21h
        jmp exit
       
 
exit:                                   
        mov ah,49h                     
        int 21h
       
        xor ax,ax                       
        int 16h
 
        mov ah,4ch                     
        int 21h
end main
Записан
DneprSMV
Помогающий

kz
Offline Offline
Пол: Мужской

« Ответ #1 : 28-10-2011 10:14 » 

Galunchik,
Вывод строки - INT 21H  AH = 9  (строка должна заканчиваться $)
или ф-ии INT 10H
там же и ф-ии приема стоки с консоли.
см. книги Питер Абель "Ассемблер ...."  и Р.Джордейн "Справочник программиста перс. комп."
Там все досконально расписано. Или просто бери док на INT 21H.
---
А в чем проблема-то ?
MSG db cr,lf,'Enter path to file: $'
lea dx, MSG    - загрузить в ES:DX адрес твоего сообщения
mov ah,09h     - ф-я вывода строки ограниченной $
int 21h
---
Ввод из той же оперы по сложности.
вот, кажется - INT 21 - ф-я 0Ah - ввод строки.
ф-я 01h - ввод символа с ожиданием.
« Последнее редактирование: 28-10-2011 10:24 от DneprSMV » Записан

"Не слушайте никаких советов, в том числе и этот" (Сократ ?)
Galunchik
Новенький

ru
Offline Offline

« Ответ #2 : 28-10-2011 10:36 » 

проблема ввода самой директории с клавиатуры. В bios вроде бы не получится ввести строку, а только посимвольно..вопрос: как сделать?
Записан
DneprSMV
Помогающий

kz
Offline Offline
Пол: Мужской

« Ответ #3 : 28-10-2011 11:23 » 

Galunchik,
. . . . .
---
Ввод из той же оперы по сложности.
вот, кажется - INT 21 - ф-я 0Ah - ввод строки.
не понял. у кого не получается ввести строку - ? у биос ? у "ней" задачи и посложнее выходят.
сделать - используя INT 21h / ф-я 0Ah   (правда она кажисть относится не к биос а к дос)
Улыбаюсь
Записан

"Не слушайте никаких советов, в том числе и этот" (Сократ ?)
Galunchik
Новенький

ru
Offline Offline

« Ответ #4 : 28-10-2011 11:45 » new

Galunchik,
. . . . .
---
Ввод из той же оперы по сложности.
вот, кажется - INT 21 - ф-я 0Ah - ввод строки.
не понял. у кого не получается ввести строку - ? у биос ? у "ней" задачи и посложнее выходят.
сделать - используя INT 21h / ф-я 0Ah   (правда она кажисть относится не к биос а к дос)
Улыбаюсь

ага,это дос
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines