[ASM] jak zrobić segmenty 32 bitowe

0

mam problem gdy używam model
huge lub large
wyskakuje mi komunikat

Fatal: 16 bit segment not supported in module asm.asm

co muszę dodać w segmentach aby były uważane jako 32 bitowe?

0

i jeszcze coś takiego:

gdy użyje przerwania int 21h to windows wywala blad wiecie ten co jest przycisk debuguj i wyślij informacje o błędzie

0

Jak piszesz coś pod Windows to używaj modelu pamięci flat.

A żeby używać rejestrów 32-bitowych zdefiniuj typ procesora

np.

.686

0

niestety to nie to :(
zawsze używam modelu procesora ;)
kod wygląda tak

;Aplikacja korzystajaca z otwartego okna konsoli
.686
.MODEL flat, STDCALL
assume cs:_TEXT,ds:_DATA
includelib ..\lib\user32.lib
includelib ..\lib\kernel32.lib
;-------------
_DATA SEGMENT
tablica dd 100000 dup(0)
_DATA ENDS
;------------
_TEXT SEGMENT
start:
    mov ah,07h
    int 21h
_TEXT	ENDS
END start


a to plik wykonywalny
http://odsiebie.com/pokaz/847188---e1d9.html

0

Po co w ogóle używasz dyrektywy asseume ?

Skoro używasz płaskiego modelu pamięci to segmentów jako takich nie ma.

Po prostu piszesz .code , .data itd...

Po drugie deklarujesz za dużą tablicę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1