Помощь - Поиск - Пользователи - Календарь
Полная версия: Com программы и резервирование памяти
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Assembler
MixRin.RU$
Если я резервирую пустую память на 256 байт например, то размер выполняемого фала увеличивается соответственно на 256 байт sad.gif Как-нибудь можно резервировать память, чтобы при этом размер выполняемого .COM файла не увеличивался на размер этой памяти? dry.gif

Я понял как!!! Можно удалить топик и оставить где нибудь это как совет...
Раньше я выделял память так:
Buff db 256 DUP (0)
Но если вместо 0 поставить '?' (неизвестно), то размер файла увеличиватся не будет good.gif
Buff db 256 DUP (?)
xds
Причём все неинициализированные данные (директивы db, dw и т. п. с ?) должны располагаться либо в конце единственного сегмента, либо в секции .data?:

TEXT	segment
	assume cs:TEXT,ds:TEXT

	org 100h
startup:
	lea dx,msg
	mov ah,9
	int 21h
	mov ax,4C00h
	int 21h

;--- Инициализированные переменные ---
msg	db 'Hello, World!',13,10,'$'

;--- Неинициализированные переменные ---
dummy	dw 256 dup(?)

TEXT	ends
	end startup


.model tiny

.code
.startup
	lea dx,msg
	mov ah,9
	int 21h
	mov ax,4C00h
	int 21h

;--- Инициализированные переменные или константы ---
msg	db 'Hello, World!',13,10,'$'

;--- Неинициализированные переменные ---
dummy	dw 256 dup(?)

end


В случае использования расширенного набора директив определения сегментов, редактор связей сам расположит сегменты оптимальным образом:

.model tiny

;--- Инициализированные переменные ---
.data
msg	db 'Hello, World!',13,10,'$'

;--- Неинициализированные переменные ---
.data?
dummy	dw 256 dup(?)

.code
.startup
	lea dx,msg
	mov ah,9
	int 21h
	mov ax,4C00h
	int 21h

end
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.