Хочу перейти в сегмент памяти BF00h, но переход просиходит в сегмент 068Eh. Если объявляю Off_move первее, чем Seg_move, то все работает хорошо. Почему? Как вообще происходит переход? Ведь cs не менял. .286 cseg SEGMENT assume cs: CSEG, ds: CSEG, es: CSEG, ss: CSEG org 100h start: jmp Init Seg_move dw 0BF00h Off_move dw offset Lab_jmp ; если объявить Off_move первее чем Seg_move , то все ; работает хорошо Init: mov es, Seg_move mov di, 100h mov cx, offset Finish-100h mov si, 100h rep movsb jmp dword ptr cs:[Off_move] Lab_jmp: nop ret Finish equ $ CSEG ends end start
Denis_den Что значит "первее чем"? Пару сегмент:смещение надо определять так Код (Text): off dw ... seg dw ...
Привет q_q. Я знаю что надо определять так: off dw ... seg dw ... но я не понимал почему. Я разобрался в чем дело. Я не правильно понимал jmp dword ptr cs:[Off_move] . Спасибо за ответ.
Denis_den не понимал почему Так зеведено у ms-intel. По младшим адресам смещение, по старшим сегмент, а сама пара адресуется младшим адресом.