Начал навирать программы с задачника. Первые 3 окомпилировал и запуслил на компе нармально.
А вот начиная с четвертой появились проблеммы. При компиляции ошибок машина не выдает, а вот при запуске программы на экране ничего не происходит.
Привожу текст программы.
Вопрос: В чем проблемма?
Приложение:
Отправлен: 16.01.2005, 08:28
Вопрос задал: Кокухин, Алексей, Евгеньевич (статус: Читатель)
Всего ответов отправлено: 6
Отвечает: Dark_Lord
Здравствуйте, Кокухин, Алексей, Евгеньевич!
Если у вас стоит WinXP, то проблема в том, что приложение расчитано на видеорежимы, где видеопамять начинается по адресу 0B800h, а в WinXp по умолчанию стоит другой режим. Поэтому для нормальной работы программы нужно в начале установить нужный видеорежим,
mov ax,03h
int 10h
полную программу смотри в приложении.
Приложение:
Ответ отправил: Dark_Lord (статус: Профессионал)
Отправлен: 16.01.2005, 11:29
Отвечает: Евгений Иванов
Здравствуйте, Кокухин, Алексей, Евгеньевич!
Боже...
Это известная проблема.
Почитайте наконец-то rusfaq faq от Калайджана!
Или просто подумайте, что нужно сначала устанавливать видеорежим, а потом работать в нём. А так ведь неизвестно, какой видеорежим у вас и какая активная страница.
Удачи!
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 16.01.2005, 12:32
Отвечает: Undertaker
Здравствуйте, Кокухин, Алексей, Евгеньевич!
Поэксперементируйте со значениями регистров AL/AH в строках 8-9.
Где AL - символ, AH - атрибут
Ответ отправил: Undertaker (статус: 2-ой класс)
Отправлен: 16.01.2005, 18:00
Отвечает: Tigran K. Kalaidjian
Здравствуйте, Кокухин, Алексей, Евгеньевич!
В третью строчку впишите
assume cs:cseg
Использовал параметры:
tasm /t/m
tlink /t/x
Ответ отправил: Tigran K. Kalaidjian (статус: Профессионал)
Отправлен: 16.01.2005, 19:35
Отвечает: Ayl
Здравствуйте, Кокухин, Алексей, Евгеньевич!
ОС Windows XP? Поставь в начале программы следующий код:
mov ax, 3
int 10h
В XP при запуске DOS по умолчанию устанавливается 1-я текстовая страница. А в программе вывод производится в нулевую.
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 17.01.2005, 14:23
Отвечает: YAA
Привет, Кокухин, Алексей, Евгеньевич.
Не будь ламом, пиши так:
mov AX, 3101h ; сначала AH, затем AL.
...
mov CX, 2000
rep stosw ; пишет слово из AX в ES:[DI], инкрементирует AX by 2. Цикл, пока CX != 0.
Кстати: в видео памяти по чётным адресам (0, 2, 4, 6...) символ, а по нечётным (1, 3, 5, 7...) аттрибут (i.e. mov AX, 0131h).
Ответ отправил: YAA (статус: 2-ой класс)
Отправлен: 18.01.2005, 16:00