| QBASIC - maskinkode - INT21 |
Rutinen Int21h kan benytes til at udføre MS-DOS API sytemkald.
| INT21 funktioner: 19 : Get Default Drive 2A : Get Date 2C : Get Time 3306 : Get MS-DOS Version 36 : Get Disk Free Space 47 : Get Current Directory 6521 : Convert String : konverterer små bogstaver (også æ, ø og å) til store - og omvendt |
| 2A : Get Date |
|
TYPE Tregs ax AS INTEGER bx AS INTEGER cx AS INTEGER dx AS INTEGER si AS INTEGER di AS INTEGER ec AS INTEGER END TYPE |
alle benyttede CPU-registre + ec: error code |
DECLARE SUB init () DECLARE SUB Int21h () |
initialiserer: indlæser maskinkoden udfører INT21 kaldet |
DECLARE FUNCTION Hi% (I%) DECLARE FUNCTION Lo% (I%) |
returnerer den høje byte returnerer den lave byte |
DIM SHARED i21 AS STRING * 80 DIM SHARED r AS Tregs DIM SHARED int21 AS INTEGER |
til maskinkoden til register-data til maskinkodens startadresse |
PRINT "DATE: "; DATE$ |
DATE: 06-29-2002 |
r.ax = &H2A00 Int21h |
INT
21 funktion 2Ah "Get Date" INT 21 kaldes |
PRINT "Year :"; r.cx PRINT "Month :"; Hi(r.dx) PRINT "Day :"; Lo(r.dx) PRINT "Weekday:"; Lo(r.ax) |
Year : 2002 Month : 6 Day : 29 Weekday: 6 |
SUB init int21 = VARPTR(i21) BLOAD "int21.bin", int21 END SUB |
Maskinkoden i int21.bin >MASM: Qbasic - INT21 |
SUB Int21h CALL ABSOLUTE(r, int21) END SUB |
FUNCTION Hi% (w%) Hi% = (&HFF00& AND w%) \ &H100 END FUNCTION |
FUNCTION Lo% (w%) Lo% = &HFF AND w% END FUNCTION |
| 2C : Get Time |
|
Det meste dette program er identisk med programmet Get Date
TYPE Tregs ax AS INTEGER bx AS INTEGER cx AS INTEGER dx AS INTEGER si AS INTEGER di AS INTEGER ec AS INTEGER END TYPE |
||
DECLARE SUB init () DECLARE SUB Int21h () DECLARE FUNCTION Hi% (I%) DECLARE FUNCTION Lo% (I%) |
initialiserer: indlæser maskinkoden udfører INT21 kaldet og returnerer en fejlkode returnerer den høje byte returnerer den lave byte |
|
DIM SHARED i21 AS STRING * 80 DIM SHARED r AS Tregs DIM SHARED int21 AS INTEGER |
til maskinkoden til register-data til maskinkodens startadresse |
PRINT "TIME: "; TIME$ |
TIME: 21:07:03 |
|
r.ax = &H2C00 Int21h |
INT 21
funktion 2Ch "Get TIme" INT 21 kaldes |
|
PRINT "Hour :"; Hi(r.cx) PRINT "Minute:"; Lo(r.cx) PRINT "Second:"; Hi(r.dx) |
Hour : 21 Minute: 7 Second: 3 |
SUB init int21 = VARPTR(i21) BLOAD "int21.bin", int21 END SUB |
Maskinkoden i int21.bin >MASM: Qbasic - INT21 |
SUB Int21h% CALL ABSOLUTE(r, int21) END SUB |
|
FUNCTION Hi% (w%) Hi% = (&HFF00& AND w%) \ &H100 END FUNCTION |
|
FUNCTION Lo% (w%) Lo% = &HFF AND w% END FUNCTION |