Вопрос № 35575: Уважаемые эксперты. Как реализуется чтобы вывод текста(сообщения) был как бы с новой строки, а не последовательно?
Если несложно примерчик...
Спасибо.
...Вопрос № 35617: Вопрос простой:
что означает - equ (вроде так пишется)
buffer equ $
Я так понимаю в buffer будет адрес символа $
если так, то чем она отличается от lea или offset
Заранее спасибо
..
Вопрос № 35.575
Уважаемые эксперты. Как реализуется чтобы вывод текста(сообщения) был как бы с новой строки, а не последовательно?
Если несложно примерчик...
Спасибо.
Отправлен: 16.02.2006, 21:03
Вопрос задал: Baim (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Евгений Иванов
Здравствуйте, Baim!
используй символы переноса строки - 13 и 10.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 16.02.2006, 21:09 Оценка за ответ: 4
Отвечает: Котиев Зураб
Здравствуйте, Baim!
добавь в конец строки 0A0Dh
string db "dsdsdsds",0Ah,0Dh
db "fgfgfgfgfgfg",0A,0Dh
Приложение:
Ответ отправил: Котиев Зураб (статус: 6-ой класс)
Отправлен: 16.02.2006, 21:43
Отвечает: PRiSon
Здравствуйте, Baim!
Ещё можно... только эт может не совсем то...
Вызываешь Эту процедуру перед выводом строки и всё.
SCREEN_NUMB db ?
POSE_CURSOR dw ?
CURSOR_SET PROC
PUSH AX ; сохраняем
PUSH BX ; регистры...
PUSH DX
MOV AH,02h
MOV BH,SCREEN_NUMB ; рабочая видео страница
MOV DX,POSE_CURSOR ; позиция курсора
INT 10h ; устанавливаем
POP DX
POP BX
POP AX
RET
CURSOR_SET ENDP
--------- Стремление - значит получится.
Ответ отправил: PRiSon (статус: 2-ой класс)
Отправлен: 17.02.2006, 08:16 Оценка за ответ: 2
Вопрос № 35.617
Вопрос простой:
что означает - equ (вроде так пишется)
buffer equ $
Я так понимаю в buffer будет адрес символа $
если так, то чем она отличается от lea или offset
Заранее спасибо
Отправлен: 17.02.2006, 14:53
Вопрос задал: Gwest (статус: 2-ой класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: PRiSon
Здравствуйте, Gwest!
1.equ - эквивалент... к примеру - MASHA equ 1000 (при ассемблировании произойдёт замена MASHA на 1000) для лучшей читабильности кода. MASHA лучше чем 1000???
2.Символ $ означает конец строки данных.
Buffer ЭКВИВАЛЕНТНО $
--------- Стремление - значит получится.
Ответ отправил: PRiSon (статус: 2-ой класс)
Отправлен: 17.02.2006, 15:08 Оценка за ответ: 4
Отвечает: Беляев Валерий (ака seaman)
Здравствуйте, Gwest!
PRiSon не совсем прав насчет $.
В ассемблере это текущий адрес компиляции. Только в ДОС-функциях вывода строки он означает еще и то, что имел в виду PRiSon - конец строки.
Если ты хочешь "занести" (на самом деле присвоить) адрес символа переменной надо так:
buffer db '$'
Чем отличается?
db резервирует место в памяти для байта, заносит в это место значение символа. Метка buffer, как всегда, принимает значение адреса этих данных.
equ просто вводит синоним для того что справа. Никакого машинного кода не генерится. Это директива ассемблера.
Т.е. то, что ты написал значит, что когда ассемблер встретит buffer, он подставит вместо него $.
Обычно это используют для облегчения чтения программы.
lea это команда процессора. Когда компилятор встречает ее, он генерирует соответствующий машинный код.
offset это (обычно) внутренний макрос компилятора, который говорит ему подставить значение смещения из полного адреса соответствующего операнда. (Не забудем что есть еще и сегмент)
Ответ отправил: Беляев Валерий (ака seaman) (статус: 3-ий класс)
Отправлен: 17.02.2006, 15:34 Оценка за ответ: 5