亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? basm.doc

?? hello everybody. good lucky to you
?? DOC
?? 第 1 頁 / 共 3 頁
字號:

                    which calls most DOS routines. But many of the
                    interrupt vectors are unused, which means, of course,
                    that you can write your own interrupt handler and put a
                    far pointer to it into one of the unused interrupt
                    vectors.

                    To write an interrupt handler in Turbo C++, you must
                    define the function to be of type interrupt; more
                    specifically, it should look like this:

                     void  interrupt myhandler(bp, di, si, ds, es, dx,




                                   - 9 -






                                               cx, bx, ax, ip, cs, flags,
                     ... );

                    As you can see, all the registers are passed as
                    parameters, so you can use and modify them in your code
                    without using the pseudovariables discussed earlier in
                    this online file. You can also pass additional
                    parameters (flags, ...) to the handler; those should be
                    defined appropriately.

                    A function of type interrupt will automatically save
                    (in addition to SI, DI, and BP) the registers AX
                    through DX, ES, and DS. These same registers are
                    restored on exit from the interrupt handler.

                    Interrupt handlers may use floating-point arithmetic in
                    all memory models. Any interrupt handler code that uses
                    an 80x87 must save the state of the chip on entry and
                    restore it on exit from the handler.

                    An interrupt function can modify its parameters.
                    Changing the declared parameters will modify the
                    corresponding register when the interrupt handler
                    returns. This may be useful when you are using an
                    interrupt handler to act as a user service, much like
                    the DOS INT 21 services. Also, note that an interrupt
                    function exits with an IRET (return from interrupt)
                    instruction.

                    So, why would you want to write your own interrupt
                    handler? For one thing, that's how most memory-resident
                    routines work. They install themselves as interrupt
                    handlers. That way, whenever some special or periodic
                    action takes place (clock tick, keyboard press, and so
                    on), these routines can intercept the call to the
                    routine handling the interrupt and see what action
                    needs to take place. Having done that, they can then
                    pass control on to the routine that was there.


   Using low-level  =======================================================
         practices
                    You've already seen a few examples of how to use these
                    different low-level practices in your code; now it's
                    time to look at a few more. Let's start with an
                    interrupt handler that does something harmless but
                    tangible (or, in this case, audible): It beeps whenever
                    it's called.



                                  - 10 -






                    First, write the function itself. Here's what it might
                    look like:

                     #include        <dos.h>

                     void  interrupt  mybeep(unsigned bp, unsigned di,
                     unsigned si,
                                             unsigned ds, unsigned es,
                     unsigned dx,
                                             unsigned cx, unsigned bx,
                     unsigned ax)
                     {
                        int     i, j;
                        char    originalbits, bits;
                        unsigned char   bcount = ax >> 8;

                        /* Get the current control port setting */
                        bits = originalbits = inportb(0x61);

                        for (i = 0; i <= bcount; i++){

                           /* Turn off the speaker for awhile */
                           outportb(0x61, bits & 0xfc);
                           for (j = 0; j <= 100; j++)
                              ;   /* empty statement */

                           /* Now turn it on for some more time */
                           outportb(0x61, bits | 2);
                           for (j = 0; j <= 100; j++)
                              ;   /* another empty statement */
                           }

                        /* Restore the control port setting */
                        outportb(0x61, originalbits);
                     }

                    Next, write a function to install your interrupt
                    handler. Pass it the address of the function and its
                    interrupt number (0 to 255 or 0x00 to 0xFF).

                     void  install(void interrupt (*faddr)(), int inum)
                     {
                        setvect(inum, faddr);
                     }

                    Finally, call your beep routine to test it out. Here's
                    a function to do just that:




                                  - 11 -






                     void  testbeep(unsigned char bcount, int inum)
                     {
                        _AH = bcount;
                        geninterrupt(inum);
                     }

                    Your main function might look like this:

                     main()
                     {
                        char  ch;

                        install(mybeep,10);
                        testbeep(3,10);
                        ch = getch();
                     }

                    You might also want to preserve the original interrupt
                    vector and restore it when your main program is
                    finished. Use the getvect and setvect functions to do
                    this.






























                                  - 12 -






INDEX
___________________________________________________________________________





A                                       F
asm (keyword) 2                         floating point
  braces and 2                            arithmetic
assembler                                   interrupt functions and 10
  built in 1                            functions
assembly language                         calling
  inline 1                                  in inline assembly code 6
    braces and 2
    C structure members and 7
      restrictions 8                    G
    calling functions 6                 goto statements
    commenting 2                          assembly language and 8
    directives 6
    goto in 8
    jump instructions 5, 8              I
    option (*B) 1                       INT instruction 9
    referencing data in 6               interrupt (keyword) 9
    register variables in 7             interrupts
    semicolons and 3                      beep
    size overrides in 7                     example 11
    syntax 2                              functions
    variable offsets in 7                   example of 10
                                            floating-point arithmetic in 10
                                          handlers
B                                           calling 11
braces                                      installing 11
  asm keyword and 2                         programming 9
built-in assembler 1

                                        J
C                                       jump instructions, inline assembly language
command-line compiler                     table 5
  options                                 using 8
    assembly language and 1
    -B (inline assembler code) 1
    inline assembler code  1            L
comments                                labels
  inline assembly language code 2         in inline assembly code 8






Index                                                                    13






M                                       repeat prefix opcodes 5
memory-resident routines 10

                                        S
O                                       size overrides in inline assembly
opcodes 3                                 code 7
  defined 2                             software interrupt instruction 9
  mnemonics                             sounds
    table 4                               beep 11
  repeat prefixes 5                     structures
operands (assembly language) 2            members
                                            in inline assembly code 7
                                              restrictions 8
P                                       syntax
prefix opcodes, repeat 5                  inline assembly language 2
programs
  terminate and stay resident
    interrupt handlers and 10           T
                                        terminate and stay resident
                                          programs
R                                         interrupt handlers and 10
referencing data in inline assembly     Turbo Assembler 1
  code 6
registers
  DI                                    V
    assembly language and 7             variables
  SI                                      offsets in inline assembly code 7
    assembly language and 7
  variables
    in inline assembly code 7





















                                  - 14 -


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区视频在线播放| 国产无人区一区二区三区| 亚洲综合一区在线| 欧美三级在线视频| 日韩av一级片| 精品国产1区二区| 成人教育av在线| 一区二区三区在线免费播放| 欧美日韩亚洲丝袜制服| 秋霞电影网一区二区| 精品国产乱子伦一区| 国产精品一区二区在线观看网站| 欧美激情一区二区三区蜜桃视频| 不卡一区二区在线| 亚洲一级在线观看| 亚洲精品一线二线三线无人区| 成人黄色在线网站| 视频一区在线视频| 久久久久久久久久看片| 一道本成人在线| 奇米影视一区二区三区小说| 国产午夜精品理论片a级大结局| 一本大道av一区二区在线播放| 日精品一区二区| 欧美激情在线一区二区三区| 欧美日韩中文字幕一区| 国产综合久久久久影院| 中文字幕在线不卡一区二区三区| 欧美精品久久一区| 国产一区二区不卡老阿姨| 亚洲在线视频网站| 久久精品一区二区三区不卡| 欧美三级韩国三级日本一级| 国产不卡在线一区| 日本午夜一区二区| 亚洲视频一区在线观看| 久久综合久久综合久久| 日本道免费精品一区二区三区| 精品影院一区二区久久久| 亚洲精品日韩一| 国产亚洲成年网址在线观看| 制服.丝袜.亚洲.中文.综合| 成人午夜视频在线观看| 免费的成人av| 香蕉久久夜色精品国产使用方法| 中文字幕精品一区二区三区精品| 欧美一区二区成人6969| 欧洲一区二区三区在线| 精品对白一区国产伦| 欧美视频日韩视频在线观看| 风间由美中文字幕在线看视频国产欧美| 视频一区欧美精品| 亚洲综合一区二区| 亚洲色图在线视频| 国产精品女同互慰在线看| 日韩欧美精品三级| 7777精品久久久大香线蕉| 91麻豆精品在线观看| 国产成人精品aa毛片| 久久国产尿小便嘘嘘尿| 视频一区欧美精品| 亚洲高清三级视频| 亚洲精品菠萝久久久久久久| 国产精品美女久久久久久久久久久| 日韩午夜电影在线观看| 欧美人伦禁忌dvd放荡欲情| 日本高清成人免费播放| 一本到三区不卡视频| 99精品欧美一区二区蜜桃免费| 国产大片一区二区| 国产精品18久久久久久vr| 精品一区二区三区免费视频| 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久久国产精品不卡| 日韩一区二区在线看| 日韩精品专区在线| 欧美mv和日韩mv的网站| 久久影院午夜论| 国产色一区二区| 国产精品视频免费看| 国产精品国产精品国产专区不片| 国产精品久久久久久久久快鸭| 欧美激情中文不卡| 亚洲乱码日产精品bd| 亚洲在线成人精品| 日本不卡视频在线观看| 久久成人免费电影| 国产成人av福利| 97久久精品人人爽人人爽蜜臀| 97久久超碰精品国产| 欧美色视频在线| 日韩天堂在线观看| 久久精品亚洲麻豆av一区二区| 中日韩av电影| 亚洲精品视频免费看| 日韩av电影免费观看高清完整版在线观看 | 国产91综合一区在线观看| 国产成人a级片| 91日韩精品一区| 91精品午夜视频| 久久久久久99精品| 亚洲精品视频一区| 蜜臀av性久久久久av蜜臀妖精| 国产精品一区2区| 在线观看av一区二区| 日韩精品中文字幕在线不卡尤物| 日本一区二区三区免费乱视频| 国产麻豆精品theporn| jvid福利写真一区二区三区| 精品视频1区2区3区| 久久婷婷成人综合色| 一区二区三区 在线观看视频| 免费xxxx性欧美18vr| 白白色 亚洲乱淫| 在线播放视频一区| 国产精品色一区二区三区| 婷婷丁香激情综合| 成人污视频在线观看| 欧美妇女性影城| 国产精品久久久久久久久免费桃花 | 成人免费视频在线观看| 日韩中文字幕一区二区三区| 国产露脸91国语对白| 精品视频1区2区| 亚洲国产成人午夜在线一区 | 蜜臀久久久99精品久久久久久| 成人av资源站| 精品久久久久99| 一区二区三区在线视频观看58| 国内精品久久久久影院一蜜桃| 在线观看网站黄不卡| 中文字幕乱码一区二区免费| 免费观看一级欧美片| 欧美优质美女网站| 国产精品毛片久久久久久| 麻豆精品视频在线观看免费| 在线一区二区观看| 国产精品欧美经典| 激情综合网av| 欧美一区二区在线免费观看| 亚洲精品欧美激情| 成人h精品动漫一区二区三区| 欧美本精品男人aⅴ天堂| 亚洲在线中文字幕| 91亚洲精品久久久蜜桃| 国产欧美一区二区三区鸳鸯浴 | 久久99精品国产91久久来源| 欧美私人免费视频| 亚洲色图制服诱惑| 不卡一区中文字幕| 国产精品亲子伦对白| 国产精品伊人色| 2021久久国产精品不只是精品 | 久久99精品久久久久久久久久久久 | 国产精品久久久久婷婷二区次| 国产在线一区观看| 精品蜜桃在线看| 裸体在线国模精品偷拍| 制服丝袜在线91| 日本vs亚洲vs韩国一区三区二区| 欧美日韩亚洲丝袜制服| 亚洲一区二区三区美女| 欧美性生活久久| 亚洲国产aⅴ成人精品无吗| 日本一区二区久久| 懂色av一区二区夜夜嗨| 中国av一区二区三区| av电影在线观看一区| 亚洲色图一区二区三区| 一本到高清视频免费精品| 亚洲猫色日本管| 在线观看成人小视频| 亚洲成人动漫精品| 欧美一级日韩一级| 久久精品国产秦先生| 精品对白一区国产伦| 国产91清纯白嫩初高中在线观看| 国产欧美日韩三级| 91丝袜呻吟高潮美腿白嫩在线观看| 国产精品久久久久四虎| 色哟哟日韩精品| 亚洲成人一区二区在线观看| 欧美一区二区精品| 国产精品一区2区| 亚洲日本在线天堂| 欧美羞羞免费网站| 麻豆视频观看网址久久| 国产视频一区不卡| 色狠狠色狠狠综合| 蜜桃在线一区二区三区| 国产欧美日韩麻豆91| 色婷婷精品大视频在线蜜桃视频| 亚洲午夜国产一区99re久久| 日韩视频一区二区在线观看| 国产精品一卡二卡在线观看| 亚洲视频一二三| 日韩区在线观看| 99久久精品免费| 日本美女视频一区二区| 欧美韩国日本综合|