CN99 <leon800219@[EMAIL PROTECTED]
> wrote:
: Hi all:
: Can anybody tell me what the value will be in ax, after the 'call'
excuted,
: and why? Thanks!
: To me:
: pop ax // ax = 8
: add ax, ax // ax = 16
: pop bx // bx = 1000
: add ax, bx // ax = 1000 + 16 -> 1016?
Looks like you are at segment = 10x1000, but at what offset?
I am guessing this is a DOS program, with origin offset = 0x100.
: 1000:0 b8 00 00 mov ax, 0
: 1000:3 9A 09 00 00 10 call far ptr s
This sets [stack-top] = return-address 0x0100 + 8 = 0x0108.
: 1000:8 8 40 inc ax
: 1000:9 9 58 s:pop ax
: add ax, ax
: pop bx
: add ax, bx
At label s, the return-address (0x0108) is popped into AX. What
was [stack-top] before the call? That determines contents of BX.


|