Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2012, 02:18   #1
agnostiq
Новичок
Джуниор
 
Регистрация: 26.11.2012
Сообщений: 3
По умолчанию Подключение директивы .386 в MASM V5.00 и Tlink V3.00

Здравствуйте, уважаемые форумчани! Не могу разобраться как в MASM V5.00 (линковщиком служит Tlink V3.00) правильно подключить директиву .386. Подскажите, пожалуйста.
Код имеет вид
Код:
.386
.MODEL Flat, STDCALL
ASSUME  CS:KOM_,SS:STEK_,DS:DAN_
STEK_   SEGMENT STACK
    DW  10000 DUP (?)
DNOST_  DW  ?
STEK_   ENDS    
;main ()
KOM_    SEGMENT 
_main   PROC    FAR
    MOV EAX,DAN_
    MOV DS,EAX
    MOV EAX,STEK_
    MOV SS,EAX
;{  int a;
;   int b;
;   a=100;
    LEA SP,DNOST_
    PUSH    BP
    MOV BP,SP
    SUB SP,4
    MOV EAX,100
;   if(a==100) b=400;
    MOV -4[BP],EAX
    MOV EBX,100
    MOV EAX,-4[BP]
    CMP EAX,EBX
    MOV EAX,1
    JE  CC_1
    SUB EAX,EAX
CC_1:       
    TEST    EAX,EAX
    JNZ CC_3
    JMP CC_2
CC_3:       
    MOV EAX,400
    MOV -8[BP],EAX
;}
CC_2:       
    ADD SP,4
    POP BP
    MOV AH,4CH
    INT 21H
;
_main   ENDP    
    INCLUDE std.asm
KOM_    ENDS    
DAN_    SEGMENT 
DAN_    ENDS    
    END _main
Этот код при линковке выдает ошибку "32-bit record encountered in module P.ASM : use "/3" option"

Последний раз редактировалось agnostiq; 26.11.2012 в 09:38.
agnostiq вне форума Ответить с цитированием
Старый 26.11.2012, 09:17   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Код:
KOM_ SEGMENT
вот тут попробуй поменять на такой вариант:

Код:
KOM_ SEGMENT  USE16
если память не изменяет, ругается на использование не 32-х разрядных регистров...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 26.11.2012, 09:45   #3
agnostiq
Новичок
Джуниор
 
Регистрация: 26.11.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
вот тут попробуй поменять на такой вариант:

Код:
KOM_ SEGMENT  USE16
если память не изменяет, ругается на использование не 32-х разрядных регистров...
Спасибо, но только в этом случае ассемблер выдает "warning a4031: Operands types must match" на
Код:
MOV EAX,DAN_
и на
Код:
MOV EAX,STEK_
, а также ошибку "error A2006: Phase error between passes" в строке с меткой
Код:
CC_1:


Я вот если заменить
Код:
    MOV EAX,DAN_
    MOV DS,EAX
    MOV EAX,STEK_
    MOV SS,EAX
на
Код:
    MOV AX,DAN_
    MOV DS,AX
    MOV AX,STEK_
    MOV SS,AX
то ассемблер ошибки не выдает, но "32-bit record" появляется опять

Последний раз редактировалось agnostiq; 26.11.2012 в 09:54.
agnostiq вне форума Ответить с цитированием
Старый 26.11.2012, 10:20   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Смотрите внимательно параметры компиляции и линковки. Скорее всего дело где-то там зарыто - я этим комплектом не пользовался...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с .386!!! Kandela Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 12.08.2012 16:41
Директивы ImmortalAlexSan Общие вопросы Delphi 4 07.11.2010 15:25
Директивы. VintProg Свободное общение 3 10.11.2009 14:35
Директивы препроцессора в С++ alef Общие вопросы C/C++ 1 25.04.2008 01:36
директивы в MASM - INVOKE, PROTO, LOCAL fermat_c Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 05.04.2008 18:25