Показать сообщение отдельно
  (#1 (permalink)) Старый
ustin_7 ustin_7 вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.05.2008
По умолчанию 12.05.2008, 11:40

Здравствуйте !
Вопрос касается С-подобных процедур: нужен ли код пролога и эпилога в них или транслятор сгенерирует их автоматически при указании модификатора языка proc с ? Код - рабочий, но если удалить код пролога и эпилога из вызываемого модуля, то не работает. TASM4, WinXP
Спасибо !

;вызываемый модуль
model small
extrn string_1:byte,string_2:byte
public _sub
.code
_sub proc с
arg offset_str2:word,offset_str1:word ;offset_str2 [bp+4], offset_str2 [bp+6]
local x:byte,y:byte ;x [bp-1], y [bp-2]
; push bp
; mov bp,sp

mov dx,offset_str1
mov ah,09h
int 21h
mov dx,offset_str2
mov ah,09h
int 21h

sub sp,02h
mov x,01h
mov y,02h

mov al,x
add al,y
add al,30h
mov ah,0Eh
int 10h

; mov sp,bp
; pop bp
ret
_sub endp
end

;Вызывающий модуль
.model small
extrn _sub:far
public string_1,string_2
.stack
.data
string_1 db 'Local variable $'
string_2 db '1+2=$'
.code
main proc far
start: mov ax,@data
mov ds,ax
push offset string_1
push offset string_2
call _sub
add sp,04h
exit: mov ax,4C00h
int 21h
main endp
end start
Ответить с цитированием
Ads