Консультация № 109433
14.11.2007, 20:15
0.00 руб.
0 1 1
Доброе время суток, уважаемые эксперты. у меня возник следующий вопрос, или скорее проблема. Суть программы очень проста : пользователь вводит имя файла и программа шифрует этот файл. Только вот дело в том . что если имя файла выбрано по умолчанию (то есть указано в коде) тогда все работает нормально. Отсюда последовал вполне логичный вывод что, когда вводится строка и имя файла сохраняется в выделенном буфере, то при переводе ее в формат ASCIIZ возникает ошибка , в последующих строках я поставил проверку на открытие выбранного файла, что и послужило "индикатором" ошибки именно в этих строках.
если я правильно понимаю, то при переводе строки в формат ASCIIZ необходимо в ее конец добавить "0", прошу посмотрите приведенный фрагемнт кода и укажите на ошибку.
Заранее выражаю огромную благодарность.
Виктор

Приложение:
; ... mov ah,09h ; здесь выводится приглашение ; на ввод имени файла lea dx,prigl int 21h mov ah,3fh ;считываем имя выделенный буфер xor bx,bx mov cx,name_len lea dx,file_name int 21h mov bx,ax ; переводим строку в формат ASCIIZ sub bx,2 mov file_name[bx],‘0‘ mov ah,09h ; просто для проверки смотрим, что лежит в буфере lea dx,file_name int 21h mov ah,3Dh ; пытаемся открыть выбранный файл mov al,2 lea dx,file_name int 21h jc ERROR ; ----------- ; ..... prigl DB ‘Enter file name $‘ file_name DB 10 DUP (?) name_len DW 10

Обсуждение

давно
Старший Модератор
31795
6196
14.11.2007, 21:04
общий
это ответ
Здравствуйте, V_Victor!

<i>Функция DOS 0Ah — Считать строку символов из STDIN в буфер
Ввод: АН = 0Ah
DS:DX = адрес буфера
Вывод: Буфер содержит введенную строку</i>

буфер имеет формат:
-первый байт - максимальная длина строки(маск=256)
-второй байт - кол-во введенных символов
-третий и дальше сама введенная строка.
т.е. в программе это выглядит так:
<font color=blue><i>сегмент кода</i>
mov ah,0ah
mov dx,offset myBuff
int 21h

<i>сегмент данных</i>
myBuff db 256
szBuff db ?
inBuff db 256 dup (?)</font>

Вам остается после ввода строки, заменить последний код(0Dh) на 0.
Перед применением 09-ой функции- не забывайте о "$" в конце строки.

Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа