Вопрос № 96512: Здравствуйте! Подкскажите пожалуйста почему при попытке сассемблировать файл (команда ML.EXE PROG.ASM /AT) командная строка выдает следующий текст
..Вопрос № 96610: Здраствуйте, уважаемые эксперты. У меня несколько вопросов из выпуска N14 рассылки Калашникова. В этом номере сказано, что отсчёт
строк и столбцов в видеобуфере ведётся с 0, т.е. 25 строк(от 0 до 24) и
80 столбцов(от 0 до 79). Чтобы получи...
Вопрос № 96.512
Здравствуйте! Подкскажите пожалуйста почему при попытке сассемблировать файл (команда ML.EXE PROG.ASM /AT) командная строка выдает следующий текст
Приложение:
Отправлен: 26.07.2007, 16:48
Вопрос задал: Dasha (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Dasha!
По вашим ошибкам:
error A4910:cannot open file: С:ml.err -немогу окрыть файл ml.err
PROG.ASM (4):error A2008: :Begin -ощибка в строке нужно Begin:
PROG.ASM (6):error A2034 -команда должна быть в сементе
PROG.ASM (14):error A2006: :Begin -неопределенный символ :Begin
Скоре всего Ваша программа должна иметь такой вид:
в строках 1,2,3,5,9,11,13 должны быть Ваши коментарии. code segment;забыли указать сегмент assume cs:code;ds:code;ss:code
org 100h
begin:;двоеточие ставится после метки mov ah,09h
mov dx,offset myText
int 21h
ret;может быть и такая строка int 20h myText db 'Hello World$';выводимый текст может быть любой ends
end begin;двоеточие не ставится
Удачи!
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Здраствуйте, уважаемые эксперты. У меня несколько вопросов из выпуска N14 рассылки Калашникова. В этом номере сказано, что отсчёт
строк и столбцов в видеобуфере ведётся с 0, т.е. 25 строк(от 0 до 24) и
80 столбцов(от 0 до 79). Чтобы получить линейный адрес последнего
символа последнюю строку(24) надо умножить на 160(это понятно). Но я никак не могу понять, зачем умножать 80 на 160, ведь последний стодбец 79. Не знаю, может автор поэтому отнимает из полученного ответа 2 ?!
Да и потом, в файле Main.asm переменным Height_X и Width_Y, отвечающим за высоту рамки и её ширину( без ограничивающих символов) мы присваиваем 23 и 78 соответсвенно. Опять же отсчёт ведётся же с 0 !!! На всякий случай привожу 2 файла в приложении -
Main.asm и Display.asm...
Приложение:
Отправлен: 27.07.2007, 14:50
Вопрос задал: AsserAcer (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Asseracer!
Обратите внимание на строки после метки Next_lined:
mov al,'¦' ;Вывели этот символ (он один)1
stosw
mov al,32 ;32 - пробел (или 20h или ' ')
mov cx,Width_Y ;CX = ширина+78
rep stosw ;Поехали!
mov al,'¦' ;Завершаем ряд...+1
итого: 80 столбцов (хотя нумерация 0-79)
ps:команды REP и LOOP не работают с СХ=0, для защиты от этого (когда значение СХ точно не известно )есть такая команда:JCXZ
Удачи!
--------- И только наступив на грабли мы приобретаем драгоценный опыт!