Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 379
от 22.02.2006, 17:12

Администратор:Калашников О.А.
В рассылке:Подписчиков: 264, Экспертов: 24
В номере:Вопросов: 2, Ответов: 5


Вопрос № 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.14 (бета) от 09.02.2006
Яндекс Rambler's Top100

В избранное