|
主题 : : 又查不错误了 不知道哪里有知识盲点了 [待解决] |
回复[ 24次 ]
点击[ 1412次 ] | |
|
|
|
|
[帖 主]
[ 发表时间: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 | | |
|
|
|
|
[第1楼]
[ 回复时间:2007-10-31 18:38 ]
[引用]
[回复]
[ top ] | |
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42 |
|
|
|
|
|
[第2楼]
[ 回复时间:2007-10-31 19:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53 |
初始化程序将建立BIOS所支持的中断向量,即将BIOS提供的中断例程的入口地址登记在中断向量表中。注意,对于BIOS所提供的中断例程,只需将入口地址登记在中断向量表中即可,因为它们是固化到ROM中的程序,一直在内存中存在。
依此说法:虽然我们可以用自己的处理程序“覆盖”(就是改写原来中断处理程序所在内存空间的数据),但是系统重新启动后,重新加载BIOS中断例程,那么中断处理程序又被ROM中的数据还原了。
所以说这种“覆盖”不是实际意义上的“覆盖”,只是暂时的。
这样说,第二题 选项“2、 BIOS9号中断的程序不可以被覆盖。”就是正确的。
大家讨论。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2007-10-31 19:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:179
信誉值:6
注册日期:2007-07-09 19:18 |
LS说的对,可能这个题不容易理解吧.的确得考虑一下. | | |
|
|
|
|
[第4楼]
[ 回复时间:2007-10-31 20:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:7
注册日期:2007-09-29 22:17 |
但是我没找出其他三个选项哪个是错的 用排除法 我也觉得只能选2了吧 | | |
|
|
|
|
[第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)。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2007-10-31 20:38 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:7
注册日期:2007-09-29 22:17 |
|
|
|
|
|
[第7楼]
[ 回复时间:2007-10-31 20:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42 |
5楼说的只是对于内中断的中断过程。对于可屏蔽中断,倒是跟内中断基本差不多,但是,对于不可屏蔽中断是“没有取中断类型码”这一步的。 | | |
|
|
|
|
[第8楼]
[ 回复时间:2007-10-31 21:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42 |
不过,经过这么一说我倒是有点明白了。本来想的是“BIOS9号中断的程序不可以被覆盖。”和“在CPU处理中断过程中可以响应键盘中断”两者矛盾呢。看了wednseday的说法,我想“代替”跟“覆盖”是不同的两个概念,“代替”不一定是“覆盖”,这在我们编写书中的新的int9中断例程的例子里也能看到,我们并没有覆盖以前的中断例程,而是做了一个替代程序,这个程序并没有和之前的例程相冲突,是共存的。
int9是可屏蔽中断,那么在cpu执行其他中断的时候,IF置0了,所以......
真是惭愧啊..... | | |
|
|
|
|
[第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了,所以......
真是惭愧啊..... | | |
|
|
|
|
[第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)。
嘿嘿 | | |
|
|
|
|
[第11楼]
[ 回复时间:2007-10-31 22:14 ]
[引用]
[回复]
[ top ] | |
荣誉值:179
信誉值:6
注册日期:2007-07-09 19:18 |
4、 在CPU处理中断过程中可以响应键盘中断
这个也有问题吧,比如处理int 16h时.也会响应int9中断吧? | | |
|
|
|
|
[第12楼]
[ 回复时间:2007-11-01 11:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:7
注册日期:2007-09-29 22:17 |
继续讨论 是不是每个中断都要IF=0 如果是的话 那对于可屏蔽中段 INT9是不是就应该不能被响应。 | | |
|
|
|
|
[第13楼]
[ 回复时间:2007-11-01 11:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53 |
4、 在CPU处理中断过程中可以响应键盘中断
这个也有问题吧,比如处理int 16h时.也会响应int9中断吧?
------------------
回复:不是吧?!
那样基本上会很--------乱--------套。 | | |
|
|
|
|
[第14楼]
[ 回复时间:2007-11-01 11:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42 |
中断遵循置IF为0,应该int 9 中断不会响应。 | | |
|
|
|
|
[第15楼]
[ 回复时间:2007-11-01 11:52 ]
[引用]
[回复]
[ top ] | |
荣誉值:179
信誉值:6
注册日期:2007-07-09 19:18 |
比如在int16H中断过程中如果键盘缓冲区没有按键就会循环等待.
此时算是在中断中吧,那此时肯定能够接受键盘中断.要是不接受按键从哪里来呀? | | |
|
|
|
|
[第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------------------------------------- | | |
|
|
|
|
[第17楼]
[ 回复时间:2007-11-01 21:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:179
信誉值:6
注册日期:2007-07-09 19:18 |
汗 楼上的强呀,中断都搞出来了.
太复杂没看懂,大概是先判断AH入口参数转去执行相应部分,
....判断键盘缓冲区中有没有键........ 唉不看了. | | |
|
|
|
|
[第18楼]
[ 回复时间:2007-11-02 09:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53 |
16号中断的代码中确实有置标志寄存器IF位的指令,cli和sti都出现过,应该能说明 int16H中断过程中能够响应int 9h中断。
16楼的代码中有注释的。 | | |
|
|
|
|
[第19楼]
[ 回复时间:2007-11-02 10:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:16
信誉值:6
注册日期:2007-06-26 16:56 |
大概中断程序写的比较精炼,建议 Wednesday 再开一贴 给大家讲解讲解
呵呵 | | |
|
|
|
|
[第20楼]
[ 回复时间:2007-11-02 10:15 ]
[引用]
[回复]
[ top ] | |
荣誉值:16
信誉值:6
注册日期:2007-06-26 16:56 |
主意可能有点馊 我一直对bios的中断程序挺好奇 想搞明白点。
可以没有兄台这般毅力 一步一步跟踪 实在惭愧呀 !
其他朋友可别学我 ,这种假手与人的事在学习中切不可干 !!! | | |
|
|
|
|
[第21楼]
[ 回复时间:2007-11-02 10:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53 |
大概中断程序写的比较精炼,建议 Wednesday 再开一贴 给大家讲解讲解
呵呵
-------------------------------------------------------------------------------
有这个必要吗,代码都贴上了。哈哈,有脱离主题之嫌。
好,时机成熟,一定小开一帖。 | | |
|
|
|
|
[第22楼]
[ 回复时间:2008-01-09 18:39 ]
[引用]
[回复]
[ top ] | |
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34 |
|
|
|
|
|
[第23楼]
[ 回复时间:2009-06-26 23:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:5
注册日期:2009-03-25 17:31 |
16h中断入口为 0212H:09C4H。
wendnesday的话我很怀疑.16h中断入口应该为0212:0c14吧 | | |
|
|
|
|
[第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。明白了吗? | | |