· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ZEN —› ... подскажите ...

Посл.отвђт Сообщенiе


Дата: Янв 9, 2003 18:18:13

Привет, это снова я кумарю ... :|
Обьясните мне, пожалуйста, что означают директивы
.Radix 16
.StartUp
и почему здесь выход в дос осуществляется ret-ом, а не
mov ax, 4c00h
int 21h
а то в книжке вроде нет ...


Дата: Янв 9, 2003 23:39:14

Про StartUp не знаю :)
А вот radix 16 - это вроде ты вначале прописываешь,чтобы потом каждый раз к шест.числу не добавлять "h".


Дата: Янв 10, 2003 06:39:30

Godness
Директива .Startup разворачивается в зависимости от модели памяти.
Скомпилируйте листинг и посмотрите.

почему здесь выход в дос осуществляется ret-мо
Где это здесь?


Дата: Янв 10, 2003 13:49:29

To P2M
... вот -
.286
.model tiny
.Code
.Radix 16
.Startup
ret
END
... ?!
To Я
... хм..м ... не поняллл :-/ ?! неужели надо было городить целую директиву ради того, что бы только не ставить "h" ... а, если десятичное число ?! ...


Дата: Янв 10, 2003 22:19:04

хз.
Что знал,то сказал :)


Дата: Янв 11, 2003 17:38:40

Вобщем Radix - это директива для АСма, что бы он знал какие числа Вы используете в программе по умолчанию (т.е. без добавления приставок) Все другие числа необходимо писать с приставками. Если Вы написали Radix 16 то десятичные числа надо писать с приставкой, и на оборот...


С Уважением, Игорь


Дата: Янв 12, 2003 01:21:11

А ret потому что тебя вынесет в PSP а там int20h. Кстати он же вызывается и при
mov ax, 4c00h
int 21h


Дата: Янв 13, 2003 20:37:41

Вроде понял, :| - спасибо !

... это, ... дык ... дык ... дык ...
... спасибо большое, блин ...
... спасибо блин, - большое ...
... блин, - большое спасибо ...
Хм..м ...
... большое спасибо, - блин ... :)


Дата: Фев 15, 2003 02:29:05

ret для выхода в ДОС корректно работает только в com-файлах. она передает управление на нулевой адрес сегмента (на первый байт PSP), а там код команды int 20h.


Дата: Фев 15, 2003 04:34:52

Аноним Фев 15, 2003 02:29:05
корректно работает только в com-файлах
Потому что DOS при запуске com-программы настраивает SS указывает на PSP, SP указывает на последнее слово в сегменте PSP, а DOS устанавливает его в ноль. Поэтому получается, что ret устанавливает в IP ноль, предполагается что в момент ret CS == SS указывают на PSP.

Если в exe-программе поместить в стек PSP:0h, то и в ней можно воспользоваться retf'ом, например:
[code]
.model small
.stack 100h
.code
start:
push es
xor ax,ax
push ax
retf
end start
[/code]


Дата: Фев 15, 2003 04:35:44 · Поправил: P2M


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.081