![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 21.10.2011
Сообщений: 6
|
![]()
Здравствуйте!!
Задача: Программа должна выделять английские символы в словах текстового файла зеленым фоном. Доп условия: формат- exe, ввод с клавиатуры - средствами bios, вывод на экран в графическом режиме с освобождением памяти. По возможности с комментариями. сделала формат exe и освобождение памяти. сейчас проблема открыть файл: текстовик создан, но он все равно выдает ошибку о невозможности открыть файл! в ассемблере новичок Код:
________ Код нужно оформлять по правилам: тегом [CODE]..[/СODE] (это кнопочка с решёточкой #) Не забывайте об этом! Модератор. Последний раз редактировалось Serge_Bliznykov; 23.10.2011 в 09:30. |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
решение: после присвоения mov HANDLE,ax ;запоминание файлового номера делайте JMP на ту часть программы, где Вы сообщите, что файл открылся нормально и начнёте его обрабатывать! |
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 21.10.2011
Сообщений: 6
|
![]()
спасибо! получилось)
у меня такой вопрос: почему если файл открылся без ошибок, то почему он не обрабатывается дальше по коду, то есть закрытие файла? или у ассемблера есть какая-то особенность,что нужно совершать переход? |
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
При чём здесь ассемблер?! Хотите, поясню, ЧТО Вы написали на алгоритмическом (псевдоязыке) ? 1) Открыть файл. 2) Если ошибка перейти на пункт 4 3) сохранить хэндл открытого файла 4) выдать сообщение об ошибке 5) закрыть файл. какой пункт выполнится после пункта 3? Ответ - пункт 4 - выдать сообщение об ошибке. а какой пункт выполнится после пункта 4 - очевидно пункт 5 - закрыть файл. |
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 21.10.2011
Сообщений: 6
|
![]()
понятно,спасибо.
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 21.10.2011
Сообщений: 6
|
![]()
при добавлении jmp оказывается ничего не изменилось:
.model tiny ; модель памяти .stack 100h ; установка размера стека 100h .data ; начало сегмента данных cr equ 0dh ;возврат каретки lf equ 0ah ;подача строки FileName db '1.txt',0 ErrorOpenFile db cr,lf,'Error! Unable to open file!$' OpenFile db cr, lf,'File is opened!$' HANDLE dw ? .code ;начало сегмента кода main: mov ax, @data ;настройка сегментного регистра mov ds, ax ;устновка регистра ds на сегмент данных ;открытие файла mov ah,3dh ;номер функции открытия файла mov al,02h ;только чтение lea dx, FileName ;ASCIIZ строка int 21h ;открытие файла jc open_error ;уход по ошибке mov HANDLE,ax ;запоминание файлового номера jmp open ;вывод сообщения об успешном открытии файла open: mov ah,9h lea dx, OpenFile int 21h ;вывод сообщения об ошибке открытия файла open_error: mov ah,9h lea dx, ErrorOpenFile int 21h ;закрытие файла mov ah,3eh ;номер функции закрытия файла mov bx,HANDLE ;файловый номер int 21h ;закрытие файла exit: ;выход из программы mov ah,49h ;освобождение памяти int 21h mov ah,4ch ;выход int 21h end main то есть даже файл открывается, то выдается два сообщения (успешное открытие и ошибка при открытии), а если файл отсутствует,то только ошибка.. почему так??? Последний раз редактировалось Olya_lya; 23.10.2011 в 19:47. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Формула на ассемблере | Vikenty | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 4 | 30.05.2010 00:54 |
Курсовая на ассемблере | inhell | Фриланс | 1 | 07.06.2008 06:04 |