The MASM Forum Archive 2004 to 2012

Miscellaneous Forums => 16 bit DOS Programming => Topic started by: t48605 on June 08, 2006, 03:20:15 AM

Title: value of interrupt vector ???
Post by: t48605 on June 08, 2006, 03:20:15 AM

mov ax,0000h
mov ds,ax
mov bx,0024h
mov ax,5800h
mov [bx],ax
mov ax,f000h
mov [bx+02],ax

above is the assumption and here is 4 result for choice ( 8086/8088 microprocessor )
A. int 03h will have the value of 5000:2800
B. int 06h will have the value of F000:5800
C. int 00h will have the value of 5800:F000
D. int 09h will have the value of F000:5800
so ... anyone help me to understand this test , I think that the assumption and choice is not concern , why have to ask about int here , while I know that the address of int is validly located , ie , int 00h has the address IP is 0000h ; 0001h and CS is 0002h ; 0003h  but the assumption is just about DS:BX :(
thanks !!!
Title: Re: value of interrupt vector ???
Post by: MichaelW on June 09, 2006, 01:09:48 PM
Interrupt vectors are 4 bytes each with the vector for interrupt 0 stored at offset 0 in the table. The offset address of an interrupt vector in the table is calculated as the interrupt number * 4, so for example, the offset of the interrupt 9 vector would be 9*4 = 36d = 24h. The segment address of the handler is stored in the word at the higher address, and the offset address of the handler in the word at the lower address.

Title: Re: value of interrupt vector ???
Post by: t48605 on June 09, 2006, 01:44:41 PM
well I first choice B because I think 06h * 4 = 24h , now as you said it 's D
but do you know why we need 4 bytes , why not 2 nibbles
for ie 0000:0024h has the value 5800
        0000:0025h has the value F000
while the fact is 0000:0024 -> 00
                       0000:0025 -> 58
                       0000:0026 -> 00
                       0000:0027 -> F0
Title: Re: value of interrupt vector ???
Post by: MichaelW on June 09, 2006, 03:42:14 PM
6 * 4 = 24d = 18h

The segment and offset addresses that make up an interrupt vector are 16-bit word values that will not fit into a nibble (4 bits) or byte (8 bits).

Words are stored in memory with the bytes reversed, so for example the word F000h would be stored in memory as:

<lower address>00,F0<higher address>

And dwords (32 bits) are stored in memory with the words reversed, so for example the dword F0005800h would be stored as:

<lower address>00,58,00,F0<higher address>
Title: Re: value of interrupt vector ???
Post by: t48605 on June 11, 2006, 10:47:01 AM
 http://img132.imageshack.us/img132/5547/whyhasnumber2tc.png
well , one more question , could you tell me about the number in red circle , whats create that number ?
thanks !!!
Title: Re: value of interrupt vector ???
Post by: Ossa on June 11, 2006, 02:09:19 PM
Create?

That is the pin number of the DB7 pin (or the D7 pin depending upon which data sheet you look at) - this is the MSB on the Data Bus, which in this case is a bidirectional bus (so the pin connections are tri-state).

Nothing "created" the number - it was simply decided that pin 27 corresponds to that function. I'm not too sure that I understand what you mean.
Ossa
Title: Re: value of interrupt vector ???
Post by: t48605 on June 12, 2006, 03:14:21 AM
that 's simple  ::)
thanks   :wink