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

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ASSEMBLER —› почему не работает....

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


Дата: Дек 25, 2002 15:05:16

Всем привет, почему данная програмулина не выходит по ret
model small
.stack 256h
.data
i db 1
.code
.startup
push ds
mov ax,0
push ax
mov ax,@data
mov ds,ax
ret
end


Дата: Дек 25, 2002 16:25:53

Аноним
А что должна?
Это же exe а не com!!!!


Дата: Дек 25, 2002 16:35:26

retf вместо ret


Дата: Дек 25, 2002 16:57:09

Зачем retf мне не нужен выход по ret


Дата: Дек 25, 2002 17:01:01

Аноним
У вас программа *.exe
ret не может работать в программах вида exe (ну официально по крайней мере)

для выхода из exe используйте

mov ax,4c00h
int 21h

(Если я не ошибаюсь с 4с00 :)...)


Дата: Дек 25, 2002 17:16:19

В случае, если код оформлен как в учебниках по программированию, как far процедура, типа,

......
myproga proc far
push ds ; в стек заталкивается FAR адрес возврата
mov ax,0 ; ....
push ax ; ....
mov ax,@data
mov ds,ax
ret
myproga endp
end myproga


будет работать и простой ret.
Все равно вместо него компилятор подставит RETF (0CBh)
В данном случае будет сгенерирован retn (0C3h) и ты не попадешь на
PSP:0, куда так хочешь попасть.

Или оформи как far-процедуру, или пиши retf вместо ret.
Хотя так конечно лучше:
mov ax,4c00h
int 21h


Дата: Дек 25, 2002 17:55:14

Пример если можно что - то по правилам формирую, но ничего не получается


Дата: Дек 25, 2002 18:05:34

mov ax,4c00h
int 21h


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