40 likes | 164 Views
Die sleutelbord en sleutelbordbuffer pushf by call van onderbrekings prosedure. SLEUTELBORD.
E N D
Die sleutelbord en sleutelbordbuffer • pushf by call van onderbrekings prosedure RS245-2003-Lesing 14
SLEUTELBORD 'n Onderbreking tipe 9 word veroorsaak elke keer as 'n sleutel gedruk of gelos word. Die sleutel se skandeerkode word deur die onderbrekingsprosedure gelees en die skandeerkode en die ooreenstemmende ASCII kode word in 'n buffer geplaas. Die skandeerkode wanneer die sleutel gelos word word nie gestoor nie. Die BIOS roep int 16H (met ah =0) gee toegang tot die skandeerkodes en ASCII kodes in die buffer. LW. Die sleutelbord het self ook 'n interne buffer wat die skandeerkodes buffer ingeval die PC die onderbreking nie dadelik kan diens nie. RS245-2003-Lesing 14
DIE SLEUTELBORD BUFFER 40:3D 40:1E 40:1C 40:1A Die sleutelbord bufferarea is 0040:001E tot 0040:003D. Daar is twee wysers : Die "Tail" by 0040:001C Die "Head" by 0040:001A Elke keer as data in die buffer gestoor word, word die "tail" met twee geïnkrementeer. Die "tail" wys aanvanklik na 0040:001E. As die buffer vol is, word die "tail" herstel om na 0040:001E te wys. As die data uitgehaal word, word die "head" geïnkrementeer. Indien die "Tail" die "Head" inhaal word die gonser gegons. BIOS INT 16H kan gebruik word om data uit die buffer te haal en die "Head" op te dateer. Buffer Tail Head RS245-2003-Lesing 14
PUSHF en CALL van ONDERBREKINGSPROSEDURE 'n Onderbrekingsrosedure word normaalweg met 'n int-instruksie of hardeware onderbreking geroep. As jy 'n onderbrekingsprosedure will CALL moet jy eers 'n pushf doen aangesien die iret instruksie aan die einde van onderbrekingsprosedure 'n popf doen. Gestel jy het 'n onderbrekingsprosedure se adres gestoor by: Offs: dw 0 Segm: dw 0 dan kan jy dit CALL met pushf call dword ptr Offs RS245-2003-Lesing 14