x86$B%"!<%-%F%/%A%c(B

64K$B%P%$%H$NJI$H(B640K$B%P%$%H$NJI(B

64K$B%P%$%H$NJI$O(B16$B%S%C%H$N7W;;5!$N=IL?$GO"B3$7$?%a%b%j%"%I%l%9$X$N(B $B%"%/%;%9$,(B2$B$N(B16$B>h$7$+5v$5$l$J$$$?$a$K:n$i$l$^$9!#(B $B$7$+$7!"(Bx86$B$K$O%;%0%a%s%H%l%8%9%?$,$"$k$?$a!"(B8086$B$G$O:GBg(B2$B$N(B20$B>h(B $B$^$G$N%"%I%l%C%7%s%0$,2DG=$G$9!#$D$^$j!"(B1M$B%P%$%H$G$9!#$3$N(B1M$B%P%$%H$N(B $B6u4V$r$I$N$h$&$K;H$&$+$O(BOS$B$K0MB8$7$^$9!#Nc$($P(BMS-DOS$B$G$O:G=i$N(B 640K$B%P%$%H$r%a%b%j$K!"$=$l0J30$r2hLLI=<($N$?$a$N%O!<%I%&%(%"$d(B BIOS$B$N(BROM$B$J$I$K;H$$$^$7$?!#$G$9$+$i!"(B640K$B%P%$%H0J>e$N%a%b%j$r(B $BEk:\$7$F$b!"(B8086/MS-DOS$B$G$O(B640K$B%P%$%H$r1[$($?%a%b%j$r(B $BMxMQ$9$k$3$H$O$G$-$^$;$s!#$3$l$,(B640K$B%P%$%H$NJI$G$9!#(B

$B%W%m%F%/%H%b!<%I$H%j%"%k%b!<%I(B

$B%j%"%k%b!<%I$H$O2>A[5-21$rMxMQ$7$J$$%b!<%I$G%W%m%F%/%H%b!<%I$H$O(B $B2>A[5-21$rMxMQ$9$k%b!<%I$G$9!#$3$N@Z$jBX$($O%7%9%F%`%l%8%9%?72$K(B $B$"$k%3%s%H%m!<%k%l%8%9%?#0(B(CR0)$B$N:G2<0L%S%C%H(B($B%S%C%H(B0)$B$G9T$J$o$l$^$9!#(B $B$3$N%S%C%H$,(B0$B$N>l9g$O!"%j%"%k%b!<%I$G!"(B1$B$N>l9g$,%W%m%F%/%H%b!<%I$G$9!#(B

x86$B$N%"%I%l%9JQ49(B

$B%j%"%k%b!<%I$G$N%;%0%a%s%H%"%I%l%9$H%W%m%F%/%H%b!<%I$G$N$=$l$O(B $B0[$J$C$FMh$^$9!#$3$3$G$O%W%m%F%/%H%b!<%I!"$D$^$j2>A[5-21$rMxMQ$7$?(B $B%7%9%F%`$G$N(Bx86$B$N%;%0%a%s%H5!9=$NLr3d$K$D$$$F@bL@$7$J$,$i!"(B $B%"%I%l%9JQ495!9=$K$D$$$F2r@b$7$^$9!#(B $B%^%7%s8lL?Na$,<($9%"%I%l%9$+$i $B%;%0%a%s%H%"%I%l%9$OB?>/J#;($J%a%+%K%:%`$G:n$i$l$^$9$N$G!"(B $B=g$rDI$C$F@bL@$7$^$9!#(B $B%;%0%a%s%H%l%8%9%?$K$O$$$/$D$+$"$j$^$9!#(BCS$B$O%3!<%I%;%0%a%s%H(B $B%l%8%9%?$G!"%^%7%s8lL?Na$rFI$_9~$`;~$K;H$o$l$k$b$N$G$9!#(BDS$B$O(B $B%G!<%?%;%0%a%s%H%l%8%9%?$G!"%^%7%s8lL?Na$K5-=R$5$l$?%a%b%j%"%/%;%9(B $B$r9T$J$&;~$K;H$o$l$kJ*$G$9!#(BSS$B$O%9%?%C%/%;%0%a%s%H%l%8%9%?$G!"(B $B%^%7%s8l$N(Bpush$B$d(Bpop$B$N@\%"%I%l%C%7%s%0$d%Y!<%9AjBP%"%I%l%C%7%s%0$J$I$N(B $B%"%I%l%C%7%s%0$K8=$o$l$k$b$N$G$9!#(B
$B%;%0%a%s%H%l%8%9%?$K$O%;%l%/%?CM$,4^$^$l$F$$$^$9!#(B $B$3$NCM$O%;%0%a%s%H%G%#%9%/%j%W%?%F!<%V%k$NCf$K$"$k(B $B%;%0%a%s%H%G%#%9%/%j%W%?$r<($7$^$9!#%;%0%a%s%H%G%#%9%/%j%W%?$K$O(B $B%;%0%a%s%H%Y!<%9$,5-=R$5$l$F$$$^$9$N$G!"$=$l$r%;%0%a%s%H(B $B%"%I%l%9$H$7$^$9!#%G%#%9%/%j%W%?%F!<%V%k$K$OL\E*$K$h$j(B $B%0%m!<%P%k%G%#%9%/%j%W%?%F!<%V%k!"%m!<%+%k%G%#%9%/%j%W%?%F!<%V%k$,(B $B$"$j$j$^$9!#%0%m!<%P%k%G%#%9%/%j%W%?%F!<%V%k$O(B $B%7%9%F%`$K#1$D$G$9$,!"%m!<%+%k%G%#%9%/%j%W%?%F!<%V%k$O%?%9%/Kh$K(B $B;}$A$^$9!#$=$7$F!"$3$l$i$N%F!<%V%k$N0LCV$r;X$7<($7$F$$$k$N$O(B GDTR$B$H(B LDTR$B$G$9!#$3$l$i$N%F!<%V%k$r$I$N$h$&$K;H$&$+$O(BOS$B$K$h$C$F(B $B0c$C$FMh$^$9!#(B

$B3d$j9~$_(B

STI$B$H(BCLI

EFLAGS$B%l%8%9%?$N%S%C%H(B9$B$O(BCPU$B$X$N3d$j9~$_$r5v2D!?6X;_$9$k%U%i%0$G$9!#(B $B$3$N%U%i%0$r%*%s!?%*%U(B(1/0)$B$9$k$N$O%^%7%s8lL?Na(BSTI(Set Interrupt Enable Flag)$B$H(BCLI(Clear Interrupt Flag)$B$G$9!#$3$N%U%i%0$O%O!<%I%&%(%"3d$j9~$_$r(B $B@)8f$9$k$?$a$N$b$N$G!"Nc303d$j9~$_$K$OM-8z$G$O$"$j$^$;$s!#(B

$B%O!<%I%&%(%"3d$j9~$_$K8B$i$:Nc303d$j9~$_$b$=$N3d$j9~$_MW0x$K(B $BBP1~$7$?3d$j9~$_HV9f$,3d$jIU$1$i$l$F$$$^$9!#%j%"%k%b!<%I$K$*$$$F$O(B $B%a%b%j>e$K8GDjE*$K%<%mHVCO$+$i(B1K$B%P%$%HJ,!"3d$j9~$_HV9f$H3d$j9~$_%k!<%A%s$r(B $BBP1~$5$;$k3d$j9~$_%Y%/%?!<%F!<%V%k$,%"%5%$%s$5$l$F$$$^$9!#$7$+$7!"(B $B%W%m%F%/%H%b!<%I$K$*$$$F$O3d$j9~$_%Y%/%?!<%F!<%V%k$NBe$o$j$K(B $B3d$j9~$_%G%#%9%/%j%W%?!<%F!<%V%k$r;H$$$^$9!#(BIDTR$B$O$=$N%F!<%V%k$r(B $B<($7$F$$$^$9!#$3$N%l%8%9%?$NCM$O%j%"%k%b!<%I$G$O(B0$B$K8GDj$5$l$F$$$^$7$?$,!"(B $B%W%m%F%/%H%b!<%I$G$O(BOS$B$,CM$r<+M3$K@_Dj$9$k$3$H$,$G$-$^$9!#(B $B3d$j9~$_%G%#%9%/%j%W%?!<%F!<%V%k$NBg$-$5$O(B256$B8DJ,$G$9!#(B

Linux$B$K$*$1$k3d$j9~$_HV9f$N4IM}(B

Linux$B$K$*$1$k3d$j9~$_HV9f$N4IM}$O asm-i386/irq.h #define NR_IRQS 224 linux/include/asm/hw_irq.h: IDT vectors usable for external interrupt sources start at 0x20: #define FIRST_EXTERNAL_VECTOR 0x20 #define SYSCALL_VECTOR 0x80 Vectors 0x20-0x2f are used for ISA interrupts. Vectors 0xf0-0xfa are free (reserved for future Linux use). #define SPURIOUS_APIC_VECTOR 0xff #define ERROR_APIC_VECTOR 0xfe #define INVALIDATE_TLB_VECTOR 0xfd #define RESCHEDULE_VECTOR 0xfc #define CALL_FUNCTION_VECTOR 0xfb #define LOCAL_TIMER_VECTOR 0xef extern int irq_vector[NR_IRQS];
80386$B0J9_$N(BCPU
$BO@M}%"%I%l%96u4V(B 64TB
$BJ*M}%"%I%l%96u4V(B 4GB
$B%;%0%a%s%H%5%$%:(B 4GB

486CPU$B$N%P%9(B
$B%"%I%l%9%P%9(B	32 bit
$B%G!<%?%P%9(B	32 bit
I/O $B%P%9(B	16 bit

$BHFMQ%l%8%9%?72(B
				32 bit	16bit	8bit
$B%"%-%e%`%l!<%?(B			EAX	AX	AH,AL
$B%Y!<%9%l%8%9%?(B			EBX	BX	BH,BL
$B%+%&%s%?%l%8%9%?(B		ECX	CX	CH,CL
				EDX	DX	DH,DL
$B%=!<%9%$%s%G%C%/%9(B		ESI	SI
$B%G%9%F%#%M!<%7%g%s%$%s%G%C%/%9(B	EDI	DI
$B%Y!<%9%]%$%s%?(B			EBP	BP		
$B%9%?%C%/%]%$%s%?(B		ESP	SP		
$B%$%s%9%H%i%/%7%g%s%]%$%s%?(B	EPI	PI		
$B%U%i%0%l%8%9%?(B			EFLAGS	FLAGS
$B%;%0%a%s%H%l%8%9%?(B
	$B%3!<%I%;%0%a%s%H(B		CS
	$B%G!<%?%;%0%a%s%H(B		DS
	$B%9%?%C%/%;%0%a%s%H(B		SS
	$B%(%/%9%H%i%;%0%a%s%H(B		ES
					FS
					GS
$B!v%$%s%9%H%i%/%7%g%s%]%$%s%?$O$$$o$f$k%W%m%0%i%`%+%&%s%?$N$3$H(B

$B%7%9%F%`%l%8%9%?72(B
				 48 bit	32 bit	16 bit
$B%7%9%F%`%"%I%l%9%l%8%9%?(B
$B%0%m!<%P%k%G%#%9%/%j%W%?%F!<%V%k(B GDTR
$B3d$j9~$_%G%#%9%/%j%W%?%F!<%V%k(B	 IDTR
						LDTR
						TR
$B%3%s%H%m!<%k%l%8%9%?(B
					CR0
					CR1
					CR2
					CR3

GNU$B%"%;%s%V%j8@8l(B

$BI=8=5,B'$NNcBj(B
movw %ax,%bx		%ax$B$NFbMF$r(B%bx$B$KBeF~(B
movw $123,%ax		$B==?J?t(B123$B$r(B%ax$B$KBeF~(B
movb $-0xa1,%cx		$B#1#6?J?t(B-a1$B$r(B%cx$B$KBeF~(B
movb $0b10111101,%dh	$B#2?J?t(B10111101$B$r(B%dh$B$KBeF~(B
movb $'A',%dl		$BJ8;z(B'A'$B$r(B%dl$B$KBeF~(B
movl $var,%esi		$BJQ?t(Bvar$B$N%"%I%l%9CM$r(B%esi$B$KBeF~(B
movb var,%ah		$BJQ?t(Bvar$B$N%a%b%j$NFbMF$r(B%ah$B$KBeF~(B
movb (%ebx),var		%ebx$B$,<($9%"%I%l%9$N%a%b%j$NFbMF$rJQ?t(Bvar$B$KBeF~(B

x86$B$N%a%b%j%"%I%l%C%7%s%0%b!<%I(B
$B%$%_!<%G%#%(!<%H%"%I%l%C%7%s%0(B
	mov  $0x12, %al		16$B?J?t(B12$B$r(B%al$B$KBeF~(B
	addl $0x89af,%ebx	16$B?J?t(B89af$B$r(B%ebx$B$NFbMF$K2C;;(B
				
$BD>@\%"%I%l%C%7%s%0(B
	movb ($0x12),%al	16$B?J?t(B12$B$N%"%I%l%9$NFbMF$r$r(B%al$B$KBeF~(B
	movb 0x12,%al	 	$B>e5-$HF1$8(B
	movl var, %ebx		$BJQ?t(Bvar$B$NFbMF$r(B%ebx$B$KBeF~(B

$B4V@\%"%I%l%C%7%s%0(B
	movb (%bx),%al		%bx$B$,<($9%"%I%l%9$NFbMF$r(B%al$B$KBeF~(B
	movb %cl,(%ebx)		%cl$B$NFbMF$r(B%ebx$B$,<($9%"%I%l%9$KBeF~(B

$B%Y!<%9AjBP%"%I%l%C%7%s%0(B
	movb array(%bx),%al	%bx$B$NFbMF$K(Barray$B$r2C$($?CM$r%"%I%l%9$H$7(B
				  $B$=$NFbMF$r(B%al$B$KBeF~(B
        incw -10(%ebp)		%ebp$B$NFbMF$K==?J?t(B-10$B$r2C$($?CM$r(B
				  $B%"%I%l%9$H$7$F$=$NFbMF$r%$%s%/%j%a%s%H$9$k(B