. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  又查不错误了 不知道哪里有知识盲点了  [待解决] 回复[ 24次 ]   点击[ 1412次 ]  
85193520
[帖 主]   [ 发表时间:2007-10-31 16:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:7
注册日期:2007-09-29 22:17
以下说法错误的是___1___。 
 1、 CPU通过总线和外部设备进行联系。 
 2、 不可屏蔽中断过程中不用取中断类型码。 
 3、 外部可屏蔽中断的中断类型码是通过数据总线送入CPU的。 
 4、 中断过程中将IF置为0是为了在中断过程中禁止其他的可屏蔽中断 
以下说法错误的是__2_____。 
 1、 断码和通码相差80H。 
 2、 BIOS9号中断的程序不可以被覆盖。 
 3、 在键盘缓冲区中,一个键盘输入用一个字单元存放,高位字节存放扫描码,低位字节存放字符码。 
 4、 在CPU处理中断过程中可以响应键盘中断 
下列关于int 9h的说法正确的是  4
 1、 int 9h中断是不可屏蔽中断。 
 2、 int 9h中断的作用是读出按键的扫描码,如果是字符转换成字符码,并将其显示在屏幕上。 
 3、 int 9h中断是DOS中断。 
 4、 我们可以编写新的int 9h中断来代替系统中原来的int 9h中断。 

下列指令中不会影响标志寄存器的是 3
 1、 cld 
 2、 or 
 3、 nop 
 4、 shl
fishboy
[第1楼]   [ 回复时间:2007-10-31 18:38 ]   [引用]   [回复]   [ top ] 
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42
第二题得稍稍考虑一下...
考虑ing....
Wednesday
[第2楼]   [ 回复时间:2007-10-31 19:36 ]   [引用]   [回复]   [ top ] 
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53
初始化程序将建立BIOS所支持的中断向量,即将BIOS提供的中断例程的入口地址登记在中断向量表中。注意,对于BIOS所提供的中断例程,只需将入口地址登记在中断向量表中即可,因为它们是固化到ROM中的程序,一直在内存中存在。

依此说法:虽然我们可以用自己的处理程序“覆盖”(就是改写原来中断处理程序所在内存空间的数据),但是系统重新启动后,重新加载BIOS中断例程,那么中断处理程序又被ROM中的数据还原了。

所以说这种“覆盖”不是实际意义上的“覆盖”,只是暂时的。

这样说,第二题 选项“2、 BIOS9号中断的程序不可以被覆盖。”就是正确的。

大家讨论。
cxn
[第3楼]   [ 回复时间:2007-10-31 19:44 ]   [引用]   [回复]   [ top ] 
荣誉值:179
信誉值:6
注册日期:2007-07-09 19:18
LS说的对,可能这个题不容易理解吧.的确得考虑一下.
85193520
[第4楼]   [ 回复时间:2007-10-31 20:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:7
注册日期:2007-09-29 22:17
但是我没找出其他三个选项哪个是错的 用排除法 我也觉得只能选2了吧
Wednesday
[第5楼]   [ 回复时间:2007-10-31 20:35 ]   [引用]   [回复]   [ top ] 
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53
中断过程:
(1)取中断类型码n;
(2)标志寄存器入栈,IF = 0,TF = 0;---->据说IF = 0,可屏蔽中断不响应,据说int 9h是可屏蔽中断
(3)CS、IP入栈;
(4)(IP) = (n*4),(CS) = (n*4+2)。
85193520
[第6楼]   [ 回复时间:2007-10-31 20:38 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:7
注册日期:2007-09-29 22:17
呵呵 我正思考这个问题  谢谢 让你点出来了
fishboy
[第7楼]   [ 回复时间:2007-10-31 20:50 ]   [引用]   [回复]   [ top ] 
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42
5楼说的只是对于内中断的中断过程。对于可屏蔽中断,倒是跟内中断基本差不多,但是,对于不可屏蔽中断是“没有取中断类型码”这一步的。
fishboy
[第8楼]   [ 回复时间:2007-10-31 21:03 ]   [引用]   [回复]   [ top ] 
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42
不过,经过这么一说我倒是有点明白了。本来想的是“BIOS9号中断的程序不可以被覆盖。”和“在CPU处理中断过程中可以响应键盘中断”两者矛盾呢。看了wednseday的说法,我想“代替”跟“覆盖”是不同的两个概念,“代替”不一定是“覆盖”,这在我们编写书中的新的int9中断例程的例子里也能看到,我们并没有覆盖以前的中断例程,而是做了一个替代程序,这个程序并没有和之前的例程相冲突,是共存的。
int9是可屏蔽中断,那么在cpu执行其他中断的时候,IF置0了,所以......
真是惭愧啊.....
fishboy
[第9楼]   [ 回复时间:2007-10-31 21:05 ]   [引用]   [回复]   [ top ] 
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42
【上面的帖子发错了】汗!!
不过,经过这么一说我倒是有点明白了。本来想的是“BIOS9号中断的程序不可以被覆盖。”和“我们可以编写新的int 9h中断来代替系统中原来的int 9h中断。”两者矛盾呢。看了wednseday的说法,我想“代替”跟“覆盖”是不同的两个概念,“代替”不一定是“覆盖”,这在我们编写书中的新的int9中断例程的例子里也能看到,我们并没有覆盖以前的中断例程,而是做了一个替代程序,这个程序并没有和之前的例程相冲突,是共存的。 
int9是可屏蔽中断,那么在cpu执行其他中断的时候,IF置0了,所以...... 
真是惭愧啊.....
Wednesday
[第10楼]   [ 回复时间:2007-10-31 21:21 ]   [引用]   [回复]   [ top ] 
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53
更正:

可屏蔽中断过程: 
(1)取中断类型码n; 
(2)标志寄存器入栈,IF = 0,TF = 0;---->据说IF = 0时,CPU不响应可屏蔽中断信息,据说int 9h是可屏蔽中断 
(3)CS、IP入栈; 
(4)(IP) = (n*4),(CS) = (n*4+2)。 

嘿嘿
cxn
[第11楼]   [ 回复时间:2007-10-31 22:14 ]   [引用]   [回复]   [ top ] 
荣誉值:179
信誉值:6
注册日期:2007-07-09 19:18
4、 在CPU处理中断过程中可以响应键盘中断  
这个也有问题吧,比如处理int 16h时.也会响应int9中断吧?
85193520
[第12楼]   [ 回复时间:2007-11-01 11:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:7
注册日期:2007-09-29 22:17
继续讨论 是不是每个中断都要IF=0 如果是的话 那对于可屏蔽中段 INT9是不是就应该不能被响应。
Wednesday
[第13楼]   [ 回复时间:2007-11-01 11:11 ]   [引用]   [回复]   [ top ] 
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53
4、 在CPU处理中断过程中可以响应键盘中断  
这个也有问题吧,比如处理int 16h时.也会响应int9中断吧?
------------------
回复:不是吧?!
那样基本上会很--------乱--------套。
fishboy
[第14楼]   [ 回复时间:2007-11-01 11:25 ]   [引用]   [回复]   [ top ] 
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42
中断遵循置IF为0,应该int 9 中断不会响应。
cxn
[第15楼]   [ 回复时间:2007-11-01 11:52 ]   [引用]   [回复]   [ top ] 
荣誉值:179
信誉值:6
注册日期:2007-07-09 19:18
比如在int16H中断过程中如果键盘缓冲区没有按键就会循环等待.
此时算是在中断中吧,那此时肯定能够接受键盘中断.要是不接受按键从哪里来呀?
Wednesday
[第16楼]   [ 回复时间:2007-11-01 15:04 ]   [引用]   [回复]   [ top ] 
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53
唉,楼上说的相当有道理。
我察看了 16号中断的大部分代码,确实有置标志寄存器IF位的指令,cli和sti都出现过,应该能说明 int16H中断过程中能够响应int 9h中断,至少在某个时间段内能。

把代码也贴上吧。哈哈。

-d0:0
0000:0000  68 10 A7 00 8B 01 70 00-16 00 A5 03 8B 01 70 00   h.....p.......p.
0000:0010  8B 01 70 00 B9 06 12 02-40 07 12 02 FF 03 12 02   ..p.....@.......
0000:0020  46 07 12 02 0A 04 12 02-3A 00 A5 03 54 00 A5 03   F.......:...T...
0000:0030  6E 00 A5 03 88 00 A5 03-A2 00 A5 03 FF 03 12 02   n...............
0000:0040  A9 08 12 02 A4 09 12 02-AA 09 12 02 5D 04 12 02   ............]...
0000:0050  B0 09 12 02 0D 02 E1 02-C4 09 12 02 8B 05 12 02   ................
0000:0060  0E 0C 12 02 14 0C 12 02-1F 0C 12 02 AD 06 12 02   ................
0000:0070  AD 06 12 02 A4 F0 00 F0-37 05 12 02 D1 6F 00 C0   ........7....o..

察看部分中断向量可知,16h中断入口为 0212H:09C4H。

中断处理详细代码如下:
-u0212:09C4
0212:09C4 1E            PUSH    DS
0212:09C5 53            PUSH    BX
0212:09C6 BB4000        MOV     BX,0040
0212:09C9 8EDB          MOV     DS,BX
0212:09CB 80FC10        CMP     AH,10
0212:09CE E8E8FD        CALL    07B9
0212:09D1 7203          JB      09D6
0212:09D3 E9E000        JMP     0AB6
0212:09D6 0AE4          OR      AH,AH
0212:09D8 743E          JZ      0A18
0212:09DA FECC          DEC     AH
0212:09DC 7474          JZ      0A52
0212:09DE FECC          DEC     AH
0212:09E0 7411          JZ      09F3
0212:09E2 FECC          DEC     AH
0212:09E4 7408          JZ      09EE
0212:09E6 FECC          DEC     AH
0212:09E8 7404          JZ      09EE
0212:09EA FECC          DEC     AH
0212:09EC 740A          JZ      09F8
0212:09EE 5B            POP     BX
0212:09EF 1F            POP     DS
0212:09F0 E959FC        JMP     064C
0212:09F3 A01700        MOV     AL,[0017]
0212:09F6 EBF6          JMP     09EE
0212:09F8 56            PUSH    SI
0212:09F9 8B1E1C00      MOV     BX,[001C]
0212:09FD 8BF3          MOV     SI,BX
0212:09FF E8B901        CALL    0BBB
0212:0A02 3B1E1A00      CMP     BX,[001A]
0212:0A06 740B          JZ      0A13
0212:0A08 890C          MOV     [SI],CX
0212:0A0A 891E1C00      MOV     [001C],BX
0212:0A0E B000          MOV     AL,00
0212:0A10 5E            POP     SI
0212:0A11 EBDB          JMP     09EE
0212:0A13 B001          MOV     AL,01
0212:0A15 5E            POP     SI
0212:0A16 EBD6          JMP     09EE
0212:0A18 8B1E1A00      MOV     BX,[001A]
0212:0A1C 3B1E1C00      CMP     BX,[001C]
0212:0A20 7513          JNZ     0A35
0212:0A22 E8B4FD        CALL    07D9
0212:0A25 B80290        MOV     AX,9002
0212:0A28 CD15          INT     15
0212:0A2A E88CFD        CALL    07B9
0212:0A2D 8B1E1A00      MOV     BX,[001A]
0212:0A31 3B1E1C00      CMP     BX,[001C]
0212:0A35 E89001        CALL    0BC8
0212:0A38 7505          JNZ     0A3F
0212:0A3A E8E300        CALL    0B20
0212:0A3D EBEB          JMP     0A2A
0212:0A3F 8B07          MOV     AX,[BX]
0212:0A41 E87701        CALL    0BBB
0212:0A44 891E1A00      MOV     [001A],BX
0212:0A48 E82901        CALL    0B74
0212:0A4B 72DD          JB      0A2A
0212:0A4D E8FC00        CALL    0B4C
0212:0A50 EB9C          JMP     09EE
0212:0A52 8B1E1A00      MOV     BX,[001A]
0212:0A56 3B1E1C00      CMP     BX,[001C]
0212:0A5A 8B07          MOV     AX,[BX]
0212:0A5C E86901        CALL    0BC8
0212:0A5F 742F          JZ      0A90
0212:0A61 E8E800        CALL    0B4C
0212:0A64 E80D01        CALL    0B74
0212:0A67 E86FFD        CALL    07D9
0212:0A6A 7345          JNB     0AB1
0212:0A6C E84C01        CALL    0BBB
0212:0A6F 891E1A00      MOV     [001A],BX
0212:0A73 EBDD          JMP     0A52
0212:0A75 8B1E1A00      MOV     BX,[001A]
0212:0A79 3B1E1C00      CMP     BX,[001C]
0212:0A7D 8B07          MOV     AX,[BX]
0212:0A7F E84601        CALL    0BC8
0212:0A82 740C          JZ      0A90
0212:0A84 E8C500        CALL    0B4C
0212:0A87 E8D100        CALL    0B5B
0212:0A8A E84CFD        CALL    07D9
0212:0A8D EB22          JMP     0AB1
0212:0A8F 90            NOP
0212:0A90 E846FD        CALL    07D9
0212:0A93 50            PUSH    AX
0212:0A94 9F            LAHF
0212:0A95 50            PUSH    AX
0212:0A96 2E            CS:
0212:0A97 A1B809        MOV     AX,[09B8]
0212:0A9A 2E            CS:
0212:0A9B 3B06C009      CMP     AX,[09C0]
0212:0A9F 7208          JB      0AA9
0212:0AA1 B401          MOV     AH,01
0212:0AA3 C4C4          LES     AX,SP
0212:0AA5 16            PUSH    SS
0212:0AA6 EB06          JMP     0AAE
0212:0AA8 90            NOP
0212:0AA9 2E            CS:
0212:0AAA FF06BC09      INC     WORD PTR [09BC]
0212:0AAE 58            POP     AX
0212:0AAF 9E            SAHF
0212:0AB0 58            POP     AX
0212:0AB1 5B            POP     BX
0212:0AB2 1F            POP     DS
0212:0AB3 CA0200        RETF    0002                                              ;retf
0212:0AB6 80EC10        SUB     AH,10
0212:0AB9 742C          JZ      0AE7
0212:0ABB FECC          DEC     AH
0212:0ABD 74B6          JZ      0A75
0212:0ABF FECC          DEC     AH
0212:0AC1 7403          JZ      0AC6
0212:0AC3 E928FF        JMP     09EE
0212:0AC6 A01800        MOV     AL,[0018]
0212:0AC9 8AE0          MOV     AH,AL
0212:0ACB 2404          AND     AL,04
0212:0ACD 51            PUSH    CX
0212:0ACE B105          MOV     CL,05
0212:0AD0 D2E0          SHL     AL,CL
0212:0AD2 59            POP     CX
0212:0AD3 80E473        AND     AH,73
0212:0AD6 0AC4          OR      AL,AH
0212:0AD8 8A269600      MOV     AH,[0096]
0212:0ADC 80E40C        AND     AH,0C
0212:0ADF 0AE0          OR      AH,AL
0212:0AE1 A01700        MOV     AL,[0017]
0212:0AE4 E907FF        JMP     09EE
0212:0AE7 8B1E1A00      MOV     BX,[001A]
0212:0AEB 3B1E1C00      CMP     BX,[001C]
0212:0AEF 7513          JNZ     0B04
0212:0AF1 E8E5FC        CALL    07D9
0212:0AF4 B80290        MOV     AX,9002
0212:0AF7 CD15          INT     15
0212:0AF9 E8BDFC        CALL    07B9
0212:0AFC 8B1E1A00      MOV     BX,[001A]
0212:0B00 3B1E1C00      CMP     BX,[001C]
0212:0B04 E8C100        CALL    0BC8
0212:0B07 7505          JNZ     0B0E
0212:0B09 E81400        CALL    0B20
0212:0B0C EBEB          JMP     0AF9
0212:0B0E 8B07          MOV     AX,[BX]
0212:0B10 E8A800        CALL    0BBB
0212:0B13 891E1A00      MOV     [001A],BX
0212:0B17 E84100        CALL    0B5B
0212:0B1A E82F00        CALL    0B4C
0212:0B1D E9CEFE        JMP     09EE
0212:0B20 50            PUSH    AX
0212:0B21 E8B5FC        CALL    07D9
0212:0B24 B402          MOV     AH,02
0212:0B26 C4C4          LES     AX,SP
0212:0B28 16            PUSH    SS
0212:0B29 8B1E1A00      MOV     BX,[001A]
0212:0B2D 3B1E1C00      CMP     BX,[001C]
0212:0B31 7517          JNZ     0B4A
0212:0B33 2E            CS:
0212:0B34 A1B809        MOV     AX,[09B8]
0212:0B37 2E            CS:
0212:0B38 3B06C009      CMP     AX,[09C0]
0212:0B3C 7307          JNB     0B45
0212:0B3E 2E            CS:
0212:0B3F FF06BC09      INC     WORD PTR [09BC]
0212:0B43 EBE4          JMP     0B29
0212:0B45 B401          MOV     AH,01
0212:0B47 C4C4          LES     AX,SP
0212:0B49 16            PUSH    SS
0212:0B4A 58            POP     AX
0212:0B4B C3            RET                                                        ;ret


其中的call 指令调用的子程序代码
*********
调用处0212:09CE E8E8FD        CALL    07B9
------------------------------------------
子程序代码:
-u0212:07b9
0212:07B9 1E            PUSH    DS
0212:07BA 50            PUSH    AX
0212:07BB B84000        MOV     AX,0040
0212:07BE 8ED8          MOV     DS,AX
0212:07C0 9F            LAHF
0212:07C1 F70614030024  TEST    WORD PTR [0314],2400
0212:07C7 750C          JNZ     07D5
0212:07C9 F0            LOCK
0212:07CA 81261403FFFD  AND     WORD PTR [0314],FDFF
0212:07D0 9E            SAHF
0212:07D1 58            POP     AX
0212:07D2 1F            POP     DS
0212:07D3 EB03          JMP     07D8
0212:07D5 FA            CLI                                                       ;IF=0
0212:07D6 EBF8          JMP     07D0
0212:07D8 C3            RET

*********
调用处0212:09FF E8B901        CALL    0BBB
------------------------------------------
子程序代码:
-u0212:0bbb
0212:0BBB 43            INC     BX
0212:0BBC 43            INC     BX
0212:0BBD 3B1E8200      CMP     BX,[0082]
0212:0BC1 7504          JNZ     0BC7
0212:0BC3 8B1E8000      MOV     BX,[0080]
0212:0BC7 C3            RET

*********
调用处0212:0A22 E8B4FD        CALL    07D9
------------------------------------------
子程序代码:
-u0212:07d9
0212:07D9 1E            PUSH    DS
0212:07DA 50            PUSH    AX
0212:07DB B84000        MOV     AX,0040
0212:07DE 8ED8          MOV     DS,AX
0212:07E0 9F            LAHF
0212:07E1 F70614030300  TEST    WORD PTR [0314],0003
0212:07E7 7514          JNZ     07FD
0212:07E9 F70614030024  TEST    WORD PTR [0314],2400
0212:07EF 750C          JNZ     07FD
0212:07F1 F0            LOCK
0212:07F2 810E14030002  OR      WORD PTR [0314],0200
0212:07F8 9E            SAHF
0212:07F9 58            POP     AX
0212:07FA 1F            POP     DS
0212:07FB EB03          JMP     0800
0212:07FD FB            STI                                                     ;IF = 1
0212:07FE EBF8          JMP     07F8
0212:0800 C3            RET

*********
调用处0212:0A35 E89001        CALL    0BC8
------------------------------------------
子程序代码:
-u0212:0bc8
0212:0BC8 53            PUSH    BX
0212:0BC9 51            PUSH    CX
0212:0BCA 50            PUSH    AX
0212:0BCB 9F            LAHF
0212:0BCC 50            PUSH    AX
0212:0BCD A01700        MOV     AL,[0017]
0212:0BD0 2470          AND     AL,70
0212:0BD2 B104          MOV     CL,04
0212:0BD4 D2E8          SHR     AL,CL
0212:0BD6 2407          AND     AL,07
0212:0BD8 8A1E9700      MOV     BL,[0097]
0212:0BDC 32D8          XOR     BL,AL
0212:0BDE 80E307        AND     BL,07
0212:0BE1 7425          JZ      0C08
0212:0BE3 F606970040    TEST    BYTE PTR [0097],40
0212:0BE8 751E          JNZ     0C08
0212:0BEA 800E970040    OR      BYTE PTR [0097],40
0212:0BEF D2E3          SHL     BL,CL
0212:0BF1 0AC3          OR      AL,BL
0212:0BF3 B403          MOV     AH,03
0212:0BF5 C4C4          LES     AX,SP
0212:0BF7 16            PUSH    SS
0212:0BF8 80269700F8    AND     BYTE PTR [0097],F8
0212:0BFD 240F          AND     AL,0F
0212:0BFF 08069700      OR      [0097],AL
0212:0C03 80269700BF    AND     BYTE PTR [0097],BF
0212:0C08 58            POP     AX
0212:0C09 9E            SAHF
0212:0C0A 58            POP     AX
0212:0C0B 59            POP     CX
0212:0C0C 5B            POP     BX
0212:0C0D C3            RET

*********
调用处0212:0A3A E8E300        CALL    0B20
------------------------------------------
子程序代码:
-u0212:0b20
0212:0B20 50            PUSH    AX
0212:0B21 E8B5FC        CALL    07D9
0212:0B24 B402          MOV     AH,02
0212:0B26 C4C4          LES     AX,SP
0212:0B28 16            PUSH    SS
0212:0B29 8B1E1A00      MOV     BX,[001A]
0212:0B2D 3B1E1C00      CMP     BX,[001C]
0212:0B31 7517          JNZ     0B4A
0212:0B33 2E            CS:
0212:0B34 A1B809        MOV     AX,[09B8]
0212:0B37 2E            CS:
0212:0B38 3B06C009      CMP     AX,[09C0]
0212:0B3C 7307          JNB     0B45
0212:0B3E 2E            CS:
0212:0B3F FF06BC09      INC     WORD PTR [09BC]
0212:0B43 EBE4          JMP     0B29
0212:0B45 B401          MOV     AH,01
0212:0B47 C4C4          LES     AX,SP
0212:0B49 16            PUSH    SS
0212:0B4A 58            POP     AX
0212:0B4B C3            RET

*********
调用处0212:0A48 E82901        CALL    0B74
------------------------------------------
子程序代码:
-u0212:0b74
0212:0B74 53            PUSH    BX
0212:0B75 50            PUSH    AX
0212:0B76 9F            LAHF
0212:0B77 8BD8          MOV     BX,AX
0212:0B79 58            POP     AX
0212:0B7A 53            PUSH    BX
0212:0B7B 80FCE0        CMP     AH,E0
0212:0B7E 750F          JNZ     0B8F
0212:0B80 B41C          MOV     AH,1C
0212:0B82 3C0D          CMP     AL,0D
0212:0B84 7423          JZ      0BA9
0212:0B86 3C0A          CMP     AL,0A
0212:0B88 741F          JZ      0BA9
0212:0B8A B435          MOV     AH,35
0212:0B8C EB1B          JMP     0BA9
0212:0B8E 90            NOP
0212:0B8F 80FC84        CMP     AH,84
0212:0B92 771E          JA      0BB2
0212:0B94 3CF0          CMP     AL,F0
0212:0B96 7507          JNZ     0B9F
0212:0B98 0AE4          OR      AH,AH
0212:0B9A 740D          JZ      0BA9
0212:0B9C EB14          JMP     0BB2
0212:0B9E 90            NOP
0212:0B9F 3CE0          CMP     AL,E0
0212:0BA1 7506          JNZ     0BA9
0212:0BA3 0AE4          OR      AH,AH
0212:0BA5 7402          JZ      0BA9
0212:0BA7 32C0          XOR     AL,AL
0212:0BA9 8BD8          MOV     BX,AX
0212:0BAB 58            POP     AX
0212:0BAC 9E            SAHF
0212:0BAD 8BC3          MOV     AX,BX
0212:0BAF 5B            POP     BX
0212:0BB0 F8            CLC
0212:0BB1 C3            RET
0212:0BB2 8BD8          MOV     BX,AX
0212:0BB4 58            POP     AX
0212:0BB5 9E            SAHF
0212:0BB6 8BC3          MOV     AX,BX
0212:0BB8 5B            POP     BX
0212:0BB9 F9            STC
0212:0BBA C3            RET

*********
调用处0212:0A4D E8FC00        CALL    0B4C
------------------------------------------
子程序代码:
-u0212:0b4c
0212:0B4C 2E            CS:
0212:0B4D C706B8090000  MOV     WORD PTR [09B8],0000
0212:0B53 2E            CS:
0212:0B54 C706BC090000  MOV     WORD PTR [09BC],0000
0212:0B5A C3            RET

*********
调用处0212:0A87 E8D100        CALL    0B5B
------------------------------------------
子程序代码:
-u0212:0b5b
0212:0B5B 53            PUSH    BX
0212:0B5C 50            PUSH    AX
0212:0B5D 9F            LAHF
0212:0B5E 8BD8          MOV     BX,AX
0212:0B60 58            POP     AX
0212:0B61 53            PUSH    BX
0212:0B62 3CF0          CMP     AL,F0
0212:0B64 7506          JNZ     0B6C
0212:0B66 0AE4          OR      AH,AH
0212:0B68 7402          JZ      0B6C
0212:0B6A 32C0          XOR     AL,AL
0212:0B6C 8BD8          MOV     BX,AX
0212:0B6E 58            POP     AX
0212:0B6F 9E            SAHF
0212:0B70 8BC3          MOV     AX,BX
0212:0B72 5B            POP     BX
0212:0B73 C3            RET


-----END-------------------------------------
cxn
[第17楼]   [ 回复时间:2007-11-01 21:21 ]   [引用]   [回复]   [ top ] 
荣誉值:179
信誉值:6
注册日期:2007-07-09 19:18
汗 楼上的强呀,中断都搞出来了.
太复杂没看懂,大概是先判断AH入口参数转去执行相应部分,
....判断键盘缓冲区中有没有键........ 唉不看了.
Wednesday
[第18楼]   [ 回复时间:2007-11-02 09:46 ]   [引用]   [回复]   [ top ] 
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53
16号中断的代码中确实有置标志寄存器IF位的指令,cli和sti都出现过,应该能说明 int16H中断过程中能够响应int 9h中断。

16楼的代码中有注释的。
cat442
[第19楼]   [ 回复时间:2007-11-02 10:11 ]   [引用]   [回复]   [ top ] 
荣誉值:16
信誉值:6
注册日期:2007-06-26 16:56
大概中断程序写的比较精炼,建议 Wednesday 再开一贴 给大家讲解讲解
 呵呵
cat442
[第20楼]   [ 回复时间:2007-11-02 10:15 ]   [引用]   [回复]   [ top ] 
荣誉值:16
信誉值:6
注册日期:2007-06-26 16:56
主意可能有点馊 我一直对bios的中断程序挺好奇 想搞明白点。

可以没有兄台这般毅力 一步一步跟踪 实在惭愧呀 !

其他朋友可别学我 ,这种假手与人的事在学习中切不可干 !!!
Wednesday
[第21楼]   [ 回复时间:2007-11-02 10:56 ]   [引用]   [回复]   [ top ] 
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53
大概中断程序写的比较精炼,建议 Wednesday 再开一贴 给大家讲解讲解 
 呵呵
-------------------------------------------------------------------------------
有这个必要吗,代码都贴上了。哈哈,有脱离主题之嫌。

好,时机成熟,一定小开一帖。
mouse
[第22楼]   [ 回复时间:2008-01-09 18:39 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
要学到了,顶下
sinawear
[第23楼]   [ 回复时间:2009-06-26 23:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:5
注册日期:2009-03-25 17:31
16h中断入口为 0212H:09C4H。 
wendnesday的话我很怀疑.16h中断入口应该为0212:0c14吧
myhbasm
[第24楼]   [ 回复时间:2009-06-27 17:49 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-28 09:56
你算错了,16h中断入口的cs所在的内存单元是16h*4+2=5Ah,IP所在的内存单元是16h*4=58h,0000:0058是09c4h,0000:005A是0212h。明白了吗?
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved