![]() |
eXeL@B —› Вопросы новичков —› CodeView отображение смещения |
Посл.ответ | Сообщение |
|
Создано: 27 февраля 2013 02:25 · Личное сообщение · #1 |
|
Создано: 27 февраля 2013 02:44 · Поправил: plutos · Личное сообщение · #2 Ваш буффер со строкой находится по адресу 0108, как и должно быть, если ваша строка начинается по адресу 0х0108. A вообще лучше этот код сделать так: mov dх, seg buffer ;DS:DX = buffer address mov ds, dx mov dx, offset buffer mov ah, 9 ;function 0x9h write string int 21 .............. buffer db ' = Test mess$' Предполагается, что ваша строчка начинается не с "Т", а с blank (0x20h) по адресу 0108. Если все же с "Т" (по адресу 010B), то исправьте это: buffer db ' = Test message$' на вот это: buffer db 'Test message$' и все будет работать как надо. ----- Give me a HANDLE and I will move the Earth. ![]() |
|
Создано: 27 февраля 2013 09:15 · Личное сообщение · #3 |
|
Создано: 27 февраля 2013 14:56 · Личное сообщение · #4 Немного уточню. Было так: Code:
Сделал *.com, открывают в CodeView, а у меня показывается так: Code:
А пишут, якобы должно быть так: Code:
![]() |
|
Создано: 27 февраля 2013 15:45 · Поправил: mysterio · Личное сообщение · #5 |
|
Создано: 27 февраля 2013 15:54 · Личное сообщение · #6 |
|
Создано: 27 февраля 2013 16:01 · Личное сообщение · #7 |
|
Создано: 27 февраля 2013 16:04 · Поправил: OKOB · Личное сообщение · #8 на скрине все в соответствии с исходником 09 - номер функции заносимый в АН offset String - 10Bh к последнему скрину: такое впечатление, что загружены две разные сборки программы. Смотри окно дизассемблера. В кодВью по адресу 109 - int 20 (СD 20), а только потом строка, в АФД - сразу строка и потому смещение не 10В, а 109, т.е на 2 байта меньше. ----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 27 февраля 2013 16:11 · Личное сообщение · #9 на скрине все в соответствии с исходником 09 - номер функции заносимый в АН offset String - 10Bh На сколько я понял, когда читал, то в выделенном окне синего цвета (скрин ниже) в регистре DS:10B (h не ставлю) и напротив его ещё Test message$ : http://saveimg.ru/pictures/27-02-13/93378deb64dda08adb97d2e93779b857.jpg Но, Test message$, как видно на скрине, находится напротив смещения 0100 и 0110. Что я не так понимаю? ![]() |
|
Создано: 27 февраля 2013 16:13 · Личное сообщение · #10 такое впечатление, что загружены две разные сборки программы. Смотри окно дизассемблера. В кодВью по адресу 109 - int 20 (СD 20), а только потом строка, в АФД - сразу строка и потому смещение не 10В, а 109, т.е на 2 байта меньше. Воооот, вот это я и хотел сказать, но не знал как выразить словами ![]() Т.е. получается так из-за разных версий CV? ![]() |
|
Создано: 27 февраля 2013 16:38 · Поправил: OKOB · Личное сообщение · #11 n199a пишет: Что я не так понимаю? В окне данных, слева отображаются адреса с шагом 16 байт, 100, 110..., в шапке окна (вверху) числа от 00 до 0F, указывающие позицию байта в этом окне. Чтобы получить адрес байта нужно сложить эти два числа 100+0В=10В, где и находится первый символ сообщения 'T' с кодом ascii - 54. Версии вашей программы разные, а CV и AFD не причем, о чем свидетельствует последний скрин из АФД со смещением строки 10В. ЗЫ: Версии программы точно разные, потому что на чернобелом скрине из АФД сообщение не 'Test message', а что-то наподобие 'Hello World', т.к. в аскии строка 48 65 6С 6С 6F... Скорее всего ваша программа выглядит не так как вы привели выше, а глядя на дмзассемблер вот так: Code:
----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 27 февраля 2013 17:03 · Личное сообщение · #12 |
|
Создано: 27 февраля 2013 17:23 · Личное сообщение · #13 |
|
Создано: 27 февраля 2013 17:31 · Личное сообщение · #14 |
![]() |
eXeL@B —› Вопросы новичков —› CodeView отображение смещения |
Эта тема закрыта. Ответы больше не принимаются. |