![]() |
#2
zklhp2012-04-07 10:51
|

CODE SEGMENT PARA PUBLIC 'CODE'
MAIN PROC FAR
ASSUME CS:CODE
PUSH DS ; 保留PSP的段地址
MOV AX,0 ; 保留PSP的IP=0
PUSH AX
MOV AX,DATA
MOV DS,AX
ASSUME DS:DATA
CLI ; 关中断
MOV AX,0 ; 加载中断程序入口地址
MOV ES,AX ; 段地址清零
MOV DI,24H ; 中断地址为36(09H号中断)
MOV AX,OFFSET KBINT ; 保存键盘中断服务程序入口地址
CLD ; 方向标志位清零,DI自加
单步执行到此出错: STOSW ; 存入串指令的字操作,将KBINT的地址偏移量存入0000:0024寻址单元
MOV AX,CS
STOSW
.........
.........
MAIN PROC FAR
ASSUME CS:CODE
PUSH DS ; 保留PSP的段地址
MOV AX,0 ; 保留PSP的IP=0
PUSH AX
MOV AX,DATA
MOV DS,AX
ASSUME DS:DATA
CLI ; 关中断
MOV AX,0 ; 加载中断程序入口地址
MOV ES,AX ; 段地址清零
MOV DI,24H ; 中断地址为36(09H号中断)
MOV AX,OFFSET KBINT ; 保存键盘中断服务程序入口地址
CLD ; 方向标志位清零,DI自加
单步执行到此出错: STOSW ; 存入串指令的字操作,将KBINT的地址偏移量存入0000:0024寻址单元
MOV AX,CS
STOSW
.........
.........
每到单步执行完“CLD”后,要执行"STOSW"时,就会提示:
“C:\WINDOWS\system32\cmd.exe
NTVDM CPU 遇到无效的指令。
。。。。。”
求达人指点是怎么回事。。。

[ 本帖最后由 paul_wing 于 2012-4-6 22:14 编辑 ]