Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Как загрузить адрес метки в регистр ?


Автор: Dreamuchiy 6.1.2014, 02:56
Не могу сообразить никак. 
Надо в  ax загрузить адрес начала блока данных. все ерунда какаято. 
примерный текст программы:

.small
.code
MOV AX,адрес  (вот что тут должно быть после "ах," что бы физический адрес начала "TEXT" был ? Или вообще     надо команду "LEA" применить? Опять же что полсле запятой должно быть?
....
....
.DATA
TEXT DB "HELLO"


Будет применятся последовательный вывод символов на экран через int 10 bios. То есть адрес соответственно будет увеличиваться на единицу и продолжать выводить символ за символом. DOS функции использовать не могу потому что программа будет запускаться до загрузки оs. Давно этим не занимался и ничего не могу сообразить который день ((

Автор: ФедосеевПавел 6.1.2014, 21:12
lea ax, text
или
mov ax, offset text

Автор: Dreamuchiy 6.1.2014, 23:09
В общем ерунда какая то получается. С загрузкой адреса я разобрался, спасибо ! А вот далее получается что угодно но только не то что надо. Вот программа:
Код

lea bx,priv
cycle:
 push bx
mov al,[bx]       вот тут загружается все что угодно кроме того что надо. Хотя в bx адрес верный
cmp al,255
jz prn_end
mov ah,0ah
mov bh,0
mov cx,0
int 10h
pop bx
inc bx
jmp cycle

.data
priv db "Hello",255 


все остальное работает как надо

Автор: Dreamuchiy 7.1.2014, 03:29
P.S. грубо говоря в al назо поместить содержимое ячейки по адресу с меткой "priv"
чего я только не перепробовал. все ерунда какая то. И в bx адрес грузится. Но после команды например mov al,[bx] значение регистра al совсем не то ((  smile 

Автор: ksili 7.1.2014, 13:37
Давно не писал на ассемблере. Но вот такой момент бросился в глаза: если в bx уже нужный адрес, зачем писать [bx]? Пробовал просто mоv ax, bx?

Автор: Dreamuchiy 7.1.2014, 14:16
Цитата(ksili @ 7.1.2014,  13:37)
Давно не писал на ассемблере. Но вот такой момент бросился в глаза: если в bx уже нужный адрес, зачем писать [bx]? Пробовал просто mоv ax, bx?

ну так надо же содержимое ячейки а не значение регистра

Автор: Dreamuchiy 7.1.2014, 16:51
Все разобрался. Добавил указатель CS:[SI]
В SI смещение а cs текущий сегмент соответственно. Только функция 0a int 10 bios печатает все на одном знакоместе

Автор: ФедосеевПавел 8.1.2014, 19:36
Цитата(Dreamuchiy @  7.1.2014,  16:51 Найти цитируемый пост)
Только функция 0a int 10 bios печатает все на одном знакоместе

Смотри http://itnews.3dn.ru/publ/48-1-0-642, http://yandex.ru/yandsearch?clid=9582&text=int+10h&lr=35.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)