Ik probeer mbv inline assembly mijn console programma "close-aware" te maken, dwz, je klikt op het kruisje rechtsboven, en hij sluit netjes af. Volgens MSDN moet je dan het volgende stukje asm uitvoeren:
Die laatste regel stopt de waarde van register ax in een variabele, zodat ik kan checken of het gelukt is. Dit stukje code zorgt ervoor dat ik verderop met een ander stukje assembler kan checken of er geclosed is. Het probleem is echter dat het ding gruwelijk crashed als ik dit uitvoer. Ik heb het boeltje ook nog eens nagelezen in een interrupt-list, en dit moet goed zijn. Waarom crashed ie hier dan op? Komt het doordat ik het als inline assember uitvoer (__asm{ ... } ) of is er gewoon iets mis met die interrupt aanroep?
Extra info: Compiler=VC, OS=Win98
GAS:
1
2
3
4
5
6
| mov ah, 16h ; Windows multiplex function mov al, 8Fh ; VM Close mov dh, 0 ; Enable or Disable Close Command mov dl, 01h ; Enable Close int 2Fh mov _AX, ax |
Die laatste regel stopt de waarde van register ax in een variabele, zodat ik kan checken of het gelukt is. Dit stukje code zorgt ervoor dat ik verderop met een ander stukje assembler kan checken of er geclosed is. Het probleem is echter dat het ding gruwelijk crashed als ik dit uitvoer. Ik heb het boeltje ook nog eens nagelezen in een interrupt-list, en dit moet goed zijn. Waarom crashed ie hier dan op? Komt het doordat ik het als inline assember uitvoer (__asm{ ... } ) of is er gewoon iets mis met die interrupt aanroep?
Extra info: Compiler=VC, OS=Win98