| 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   | Сообщение посчитали полезным: n199a | 
| 
 | 
Создано: 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 отображение смещения | 
| Эта тема закрыта. Ответы больше не принимаются. | 







 .

 Для печати