问题是这样一来的。沈美明,温冬婵的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下这个实验?
先谢过!
注:不要照书摘段说明来回答,尽可能以可以理解的文字来指导我下!谢谢!
6 个解决方案
#1
mark
#2
没人指点一下吗?
#3
路过帮顶!!!!!!!!
#4
对中断21的35号功能理解错误,这里ES返回的是中断向量的段地址,BX返回的是中断向量的偏移量。
MOV CX,ES:[BX]
MOV DX,ES:[BX+2]
应该改成
mov cx, bx ;偏移量
mov dx, es ;段地址
后面的说法成立
在dos操作系统,可以直接到中断向量表中取地址。
MOV CX,ES:[BX]
MOV DX,ES:[BX+2]
应该改成
mov cx, bx ;偏移量
mov dx, es ;段地址
后面的说法成立
在dos操作系统,可以直接到中断向量表中取地址。
#5
着个问题应该不是很复杂吧?
我也只是对“DS:DX=中断向量”和“返回时送:ES:BX=中断向量”这两句没掌握透所以才实验了下,又没实验出来才问下。是嫌分少还是INT 21H(25),(35)很少用到而不大清楚,还是其他原因?
只要你回答的很精辟我乐意加分啊。一般性回答(只要针对问题的)多少我也会给分的啊。
难道这个问题很复杂吗?不至于一个版块都没人能谈几句的吧?
汗!
我也只是对“DS:DX=中断向量”和“返回时送:ES:BX=中断向量”这两句没掌握透所以才实验了下,又没实验出来才问下。是嫌分少还是INT 21H(25),(35)很少用到而不大清楚,还是其他原因?
只要你回答的很精辟我乐意加分啊。一般性回答(只要针对问题的)多少我也会给分的啊。
难道这个问题很复杂吗?不至于一个版块都没人能谈几句的吧?
汗!
#6
谢谢!
那么INT 21H(25H)中的"DS:DX=中断向量 "不也就是说DS就是向量的段地址,DX里的数据就是向量的偏移地址。
说到这我倒突然想起来了,不可能是DS:[DX],因为DX不能用来寻址。被那个“:”迷惑了,写成“DS、DX=中断向量"多好。。。
谢谢 gzgzlxg大超侠,这个版块就算您最厉害了!
感谢指点!我给你加分!
谢谢!
#1
mark
#2
没人指点一下吗?
#3
路过帮顶!!!!!!!!
#4
对中断21的35号功能理解错误,这里ES返回的是中断向量的段地址,BX返回的是中断向量的偏移量。
MOV CX,ES:[BX]
MOV DX,ES:[BX+2]
应该改成
mov cx, bx ;偏移量
mov dx, es ;段地址
后面的说法成立
在dos操作系统,可以直接到中断向量表中取地址。
MOV CX,ES:[BX]
MOV DX,ES:[BX+2]
应该改成
mov cx, bx ;偏移量
mov dx, es ;段地址
后面的说法成立
在dos操作系统,可以直接到中断向量表中取地址。
#5
着个问题应该不是很复杂吧?
我也只是对“DS:DX=中断向量”和“返回时送:ES:BX=中断向量”这两句没掌握透所以才实验了下,又没实验出来才问下。是嫌分少还是INT 21H(25),(35)很少用到而不大清楚,还是其他原因?
只要你回答的很精辟我乐意加分啊。一般性回答(只要针对问题的)多少我也会给分的啊。
难道这个问题很复杂吗?不至于一个版块都没人能谈几句的吧?
汗!
我也只是对“DS:DX=中断向量”和“返回时送:ES:BX=中断向量”这两句没掌握透所以才实验了下,又没实验出来才问下。是嫌分少还是INT 21H(25),(35)很少用到而不大清楚,还是其他原因?
只要你回答的很精辟我乐意加分啊。一般性回答(只要针对问题的)多少我也会给分的啊。
难道这个问题很复杂吗?不至于一个版块都没人能谈几句的吧?
汗!
#6
谢谢!
那么INT 21H(25H)中的"DS:DX=中断向量 "不也就是说DS就是向量的段地址,DX里的数据就是向量的偏移地址。
说到这我倒突然想起来了,不可能是DS:[DX],因为DX不能用来寻址。被那个“:”迷惑了,写成“DS、DX=中断向量"多好。。。
谢谢 gzgzlxg大超侠,这个版块就算您最厉害了!
感谢指点!我给你加分!
谢谢!