Download presentation
Presentation is loading. Please wait.
Published byMaude Ethel Stanley Modified over 9 years ago
1
ECE291 Computer Engineering II Lecture 13 Dr. Zbigniew Kalbarczyk University of Illinois at Urbana- Champaign
2
Z. KalbarczykECE291 Outline Material covered on Exam I Lookup tables Jump tables Interrupt vectors –Interrupt functions examples
3
Z. KalbarczykECE291 Lookup Tables Lookup tables are often used to convert from one data form to another A lookup table is formed in the memory as a list of data that is referenced by a procedure to perform conversions XLAT instruction can often be used to lookup data in a table –place the offset of the array in the BX and –the desired index value in AL –XLAT returns the byte element in AL –AL cannot contain an index value greater than 255 –you can use XLAT with arrays containing more than 256 elements, simply treat each 256-byte block of the array as a smaller sub-array, e.g., to retrieve the 260th element add 256 to BX and set AL =3 (260 -256 -1)
4
Z. KalbarczykECE291 Table-Lookup Functions Example 1 Consider movement in an array by one element Array = Matrix of ROWSIZE x COLSIZE elements Pos = Position in array = Row * COLSIZE + Column Dir = Direction (UP=0, RIGHT=1, DOWN=2,LEFT=3) Slow and Tedious Original Code: Compares each possible direction value MBegin: CMP DIR,UP JE MoveUP CMP DIR,RIGHT JE MoveRT CMP DIR,DN JE MoveDOWN CMP DIR,LEFT JE MoveDown MoveUP: SUB Pos,COLSIZE JMP MDone MoveRT: ADD Pos,1 JMP MDone MoveDN: ADD Pos,COLSIZE JMP MDone MoveLT: SUB Pos,1 JMP MDone MDone: Finished!
5
Z. KalbarczykECE291 Table-Lookup Functions Example 1 (cont.) Fast and Compact Table-lookup Code Eliminate conditional jumps by defining a table of movements indexed by the Direction. Movement dw -COLSIZE ; Movement[0] == Go UP dw +1 ; Movement[1] == Go RIGHT dw +COLSIZE ; Movement[2] == Go DOWN dw -1 ; Movement[3] == Go LEFT MBegin: MOV BX, DIR ; Direction = {0..3} SHL BX, 1 ; Index words, not bytes MOV AX, Movement[BX] ADD Pos, AX ; Position += Movement MDone: Finished!
6
Z. KalbarczykECE291 Table Lookup Example 2 DAYS PROC FAR PUSH DX PUSH SI MOV SI, OFFSET DTAB XOR AH, AH ;clear AH ADD AX, AX ;double AX ADD SI, AX ;modify table address MOV DX, CS:[SI] ;get string address MOV AX, CS ;change data segment PUSH DS MOV DS, AX MOV AH, 09h INT21h POP DS POPSI POPDX RET DTABDWSUN, MON, TUE, WED, THU, FRI, SAT SUNDB‘Sunday $’ MONDB‘Monday $’ TUEDB‘Tuesday $’ WEDDB‘Wednesday $’ THUDB‘Thursday $’ FRIDB‘Friday $’ SATDB‘Saturday $’ DAYESENDP Converts numbers 0 to 6 to days of the week The number is passed in AL register Converts numbers 0 to 6 to days of the week The number is passed in AL register
7
Z. KalbarczykECE291 Jump Tables Suppose table entries are pointers to functions Suppose BX holds a command in the range of 0..N-1; let cmd index a function JFUNCTION PROC NEAR/FAR; Input BX = Command SHL BX,1 ; Words, not bytes JMP Jtable[BX] ; Jump to function Jtable dw offset Funct0 dw offset Funct1.. dw offset FunctN-1 Funct0: do something.. RET Funct1: do something else.. RET FunctN-1: do something else.. RET JFUNCTION ENDP
8
Z. KalbarczykECE291 Interrupt Vectors Jump Tables are the basis for interrupt vectors On 80x86, low 1024 bytes of memory hold vector table There are 256 pointers in the table Each entry is a far (4 byte segment:offset) pointer Memory address (hex) Interrupt function pointer 003FC INT 255 4 * x INT x 00008 INT 2 00004 INT 1 00000 INT 0
9
Z. KalbarczykECE291 Interrupt Vectors The term interrupt is used in three different contexts: Software interrupts (e.g., 21h) –provide a mechanism whereby the programmer can use the int instruction to access blocks of code that already exist and are resident in machine memory Hardware interrupts –triggered by hardware events external to the microprocessor, rather than resulting from an int or any other instruction –e.g., request for service by external devices such as disk drives Exceptions –hardware origin within the microprocessor itself –e.g., anomalous event within a program, such as an attempt to divide by zero
10
Z. KalbarczykECE291 Interrupt Functions Examples DOS Functions To execute of the many DOS functions, you can specify a sub- function by loading a value into AH just before calling INT 21 INT 21h, Subfunction: AH=3Dh: Open File AH=3Fh: Read File AH=3Eh: Close File AH=13h: Delete File (!) AH=2Ah: Get system date AH=2Ch: Get system time AH=2Ch: Read DOS Version AH=47h: Get Current Directory AH=48h: Allocate Memory block (specified in paragraphs==16 bytes) AH=49h: Free Memory block AH=4Ch: Terminate program (and free resources)
11
Z. KalbarczykECE291 Interrupt Functions Examples BIOS Functions SYSTEM BIOS Functions All PCs come with a BIOS ROM (or EPROM). The BIOS contains standard 80x86 opcodes to provide basic functions such as bootstraping and primitive I/O. INT 19h: Reboot system INT 11h: Get equipment configuration INT 16h: Keyboard I/O VIDEO BIOS Functions Video cards come with 80x86 commands burned in a ROM. Video BIOS is located at C0000-C7FFF and holds routines for handling basic functions. To execute a function in video BIOS ROM, call INT 10 with AX=sub- function. INT 10h, Subfunction: –AH=0,AL=2h: 80x25 Text –AH=0,AL=13h: 320x200, 256-color graphic
12
Z. KalbarczykECE291 Interrupt Functions Examples MOUSE & Hardware Functions MOUSE Functions : INT 33h Routines to read position and status of mouse AX=0000h: Reset AX=0001h: Show Mouse AX=0003h: Get Position & Status BX = Buttons Pressed: bit[0]=left, bit[1]=right CX = Column Position DX = Row Position HARDWARE Functions IRQ 0-7 FUNCTIONS : INT 8-Fh System timer (IRQ 0 == INT 8h) Keyboard (IRQ 1 == INT 9h) Bus/DMA (IRQ 2 == INT Ah) Serial Port (IRQ 3 == INT Bh) SoundBlaster (IRQ 5 == INT Dh) INT = 8 + IRQ IRQ 8-15 FUNCTIONS : INT 70h-77h SCSI Request (IRQ 10d == INT 72h) INT = 68h + IRQ
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.