Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Рекомендуемые сообщения

В ASMе я пока-что слабоват (учусь скажем так), и тут вот столкунлся с такой проблемой, не вьезжаю как такое получается! Я создаю маленькую програмку: сегменты размечаю вручную, тоесть с помощью SEGMENT... ENDS и тут то и начинается веселье!

В процесе дебагинга выяснилось, что каким то макаром адрес сегмента даных оказывается записаным в регистре сегмента стека (тоесть вместо DS в SS), либо же данные помещаются по адресу сегмента стека. Если поменять вручную содержимое DS на SS, либо сделать нехитрое копирование то все работает нормально, читает что положено из памяти.

Компилировалось это все в TASM и MASM - результат аналогичен.

Компиляция без дерективы .386

Программа просто пробная и никакой логической нагрузки не несет! :unsure:

assume cs:_code

_data segment

string db "This is a string"

alist db 10h, 20h, 30h

_data ends

_code segment 'code'

main:

assume ds:_data

;mov ax,data -----вот это помогает------

;mov ds,ax

mov bx,offset alist

mov dl,[bx]

inc bx

mov dl, [bx]

inc bx

mov dl,[bx]

mov ax, 4c00h

int 21h

_code ends

end main

Подскажите что творится, и в чем я не прав!

Ссылка на комментарий
Поделиться на другие сайты

Спасибо за такое большое количество ответов! :unsure:

К счастью я сам нашел решение! И оказалось оно достаточно глупым!

Оказывается директивы assume не достаточно для того чтобы "умная" система записала в регистр DS адресс сегмента данных, поэтому его то надо туда копировать вручную! (глупо получилось с учетом того, что я и сам это пробовал)

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...