21.04.2012, 03:35
общий
это ответ
Здравствуйте, Наталия!
1.Организация стековой памяти.
Разработать программу с вызовом внутрисегментной команды CALL и RET ;
При внутрисегментном вызове в стек заносится смещение следующей команды.
Сегментный регистр CS не меняется
По внутрисегментной команде ret извлекается из стека адрес, куда и передается управление
[code h=200]_stack segment 'stack'
dw 100h dup(?)
_stack ends
code segment 'code'
assume cs:code
start:
mov ax, 5
call square
mov ax, 4c00h
int 21h
square proc
mul ax
ret
square endp
code ends
end start[/code]
2.Организация стековой памяти.
Разработать программу с вызовом межсегментной команды CALL и RET ;
При межсегментном вызове в стек заносится сначала сегмент текущего кода,
затем смещение следующей команды.
После чего происходит длинный вызов подпрограммы
По межсегментной команде ret из стека извлекаются и смещение и сегмент,
т.о. происходит длинный возврат в точку вызова
[code h=200]_stack segment 'stack'
dw 100h dup(?)
_stack ends
code1 segment 'code'
assume cs:code1
start:
mov ax, 5
call square
mov ax, 4c00h
int 21h
code1 ends
code2 segment 'code'
assume cs:code2
square proc far
mul ax
ret
square endp
code2 ends
end start[/code]
3.Организация стековой памяти.
Разработать программу вложенными вызовами внутрисегментных и
межсегментных команд CALL и RET.
В этом примере сначала делаем межсегментный вызов подпрограммы square
В которой происходит внутрисегментный вызов подпрограммы add1,
из которой, в свою очередь, происходит межсегментный вызов подпрограммы sub1
В стек заносится каждый раз либо короткий адрес, либо длинный адрес,
в зависимости от типа вызова.
[code h=200]_stack segment 'stack'
dw 100h dup(?)
_stack ends
code1 segment 'code'
assume cs:code1
start:
mov ax, 5
call square
mov ax, 4c00h
int 21h
sub1 proc far
dec ax
ret
sub1 endp
code1 ends
code2 segment 'code'
assume cs:code2
square proc far
mul ax
call add1
ret
square endp
add1 proc near
inc ax
call sub1
ret
add1 endp
code2 ends
end start[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен