INT 21H(25H)和INT 21H(35H)的请教!
问题是这样一来的。沈美明,温冬婵的IBM-PC汇编(2版)的295页有个设和取中断向量的说明,即INT 21H(25H)和INT 21H(35H)解释,
大致如下:
设中断向量:
把由AL指定的中断类型的中断向量DS:DX放在中断向量表中
预置:AH=25H
AL=中断类型号
DS:DX=中断向量
执行:INT 21H
取中断向量:
把由AL指定的中断类型的中断向量从中断向量表中取到ES:BX中
预置:AH=35H
AL=中断类型号
执行:INT 21H
返回时送:ES:BX=中断向量
1,个人以取中断向量来请教:
假设我想得知INT 4 的向量,
MOV AX,DATAS
MOV ES,AX
mov bx,0
MOV AH,35H
MOV AL,4
INT 21H
MOV CX,ES:[BX]
MOV DX,ES:[BX+2]
那么通过这段后CX是不是就是INT 4入口的偏移地址,DX就是INT 4的入口段地址
也就是说等效于
MOV CX,0000:0010H
MOV DX,0000:0012H
呢?
也就是说INT 21H(35H)的功能就是把以AL里的数据为中断类型号的中断入口地址(中断向量)以偏移和段地址的顺序存入ES:[BX]及后面的两个字的内存空间里?
2。之所以问是因为我把上面那段代码完善后,如下:
DATAS SEGMENT
DB 16 DUP(?)
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,ES:DATAS
START:
MOV AX,DATAS
MOV ES,AX
mov bx,0
MOV AH,35H
MOV AL,4
INT 21H
MOV CX,ES:[BX]
MOV DX,ES:[BX+2]
MOV AH,4CH
INT 21H
CODES ENDS
END START
在DEBUG时执行INT 21H(35H)时程序不知跑那去了,没法观察ES:[BX]处的变化,所以这里请教下。顺便也请教如何来DEBUG下这个实验?
先谢过!
注:不要照书摘段说明来回答,尽可能以可以理解的文字来指导我下!谢谢!