![]() |
|
|
![]()
|
|
| suvolod |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.8.2005 Репутация: нет Всего: 1 |
Пожалуйста, помогите понять, что в этой программе не так...
Компилирую таким образом c:\MASM611\bin\ml /c /Cp %1.asm C:\MASM611\bin\LINK.EXE "%1.obj" ,,,,, Программа работает, но вместо str_my выводит какой-то мусор. Явно не спозиционирован сегмент данных, но почему - никак не могу понять |
|||
|
||||
| suvolod |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.8.2005 Репутация: нет Всего: 1 |
Да, еще хочу добавить, что мне надо обязательно оставить директиву .386, так как выше приведен только скелет программы, а в нем я использую команды, которые ассемблер понимает только с этой директивой - например, команды для работы с сопроцессором. Короче, я хочу подружить .386 с директивами упрощенного описания сегментов, в том смысле чтобы сегменты оказались корректно спозиционированными - код на cs, данные на ds, ну и так далее...
|
|||
|
||||
| ds29 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 15.3.2006 Репутация: 1 Всего: 2 |
.MODEL small .386 ;ПОСЛЕ! .data str_my db 'Hello, my friend!$' ;var2 dd 77777777h .code ;assume cs:@code, ds:@data START: mov ax, @data mov ds, ax lea dx, str_my mov ah, 9 int 21h mov ax, 4c00h ; а не mov ah, 4ch , т.к. ax может быть "испорчен" int 21h END START а вообще, открой любйю книжку |
|||
|
||||
| suvolod |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 20.8.2005 Репутация: нет Всего: 1 |
Спасибо, все заработало после того как model и .386 поменял местами. Если несложно, поясните почему обмен местами этих директив заставил программу работать корректно???
У меня дома куча учебников по asm-у, но такие нюансы не рассматриваются, потому и обратился в форум... Добавлено @ 13:36 Кстати, используя "model small", - вы немного схитрили. Я не хочу писать com-программу, возможно мне понадобиться в будущем несколько сегментов кода или данных, соответственно надо будет использовать другие модели памяти и явно позиционировать сегменты.... |
|||
|
||||
| ds29 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 15.3.2006 Репутация: 1 Всего: 2 |
если в двух словах, то .186 , .286 , ... , можешь указать в ЛЮБОМ месте программы непосредственно перед использованием инструкции необходимого процессора, но ПОСЛЕ описания моедли памяти.
например: mov al,bl .386 movsx dx,al .... |
|||
|
||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |