BBS: Inland Empire Archive Date: 06-14-92 (20:44) Number: 459 From: MATT HART Refer#: NONE To: PHIL HODGES Recvd: NO Subj: Interrupts Conf: (2) Quik_Bas
PH> Regs.ax = &H3000 DOS interrupt services generall expect the function in AH. The 8086 registers are: AX - two bytes AH is the Most Significant Byte and AL is the Least Significant Byte. Together, AH and AL make up AX. To place a value into AH or AL seperately, you must calculate it and put it all into AX. AH = &H30 AL = 0 Regs.AX = AH*256 + AL ' The *256 puts AH into the MSB of AX. Of course, it is much easier to just: AH vvAL vvvv Regs.AX = &H3000 PH> CALL INTERRUPT(&H21, Regs, Regs) Interrupt 21h, with Regs as the incoming register information, and Regs also containing the outgoing register information. Many programmers, myself included, use two types : InRegs and OutRegs DIM InRegs AS RegType DIM OutRegs AS RegType CALL INTERRUPT (&H21, InRegs, OutRegs) PH> MajorVersion = Regs.ax MOD 256 The MOD function (modulo division) returns the remainder of Regs.ax divided by 256, in this case, AL. So: AX MOD 256 = AL and AX \ 256 = AX Note the \ is used rather than /. The backslash \ division is Integer division and throws out any remainder. Remember using AH*256 to get AH and AL into AX? Well, AX\256 gets it back: AH*256+AL = AX AH*256 = AX-AL AH = (AX-AL)/256 But with integer division, the AL remainder is thrown out: AH = AX\256 PH> MinorVersion = Regs.ax \ 256 PH> PRINT USING "Current DOS version #!##"; MajorVersion; "."; MinorVersion PH> BH = original equipment manufacturers serial number PH> BL:CX =24-bit user serial number (optional, OEM dependent) If you wanted BH, you would use: BH = Regs.bx \ 256 As a 24 bit serial number, is must be represent by at least 3 bytes, so you can use a long integer (4 bytes) BLCX& = (Regs.bx MOD 256)*256*256 + Regs.cx Using 256*256 puts BL into the MSB range - like this: BL CH CL 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 And you have your 24 bit serial number too. --- * Origin: Midnight Micro! V.32/REL (918)451-3306 (1:170/600)
Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET