|  | 
 
| 
这段例程什么能调用不能正常显示能?
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  用debug调式时 没有执行 mov ax,0b800h
 mov es,ax
 这指令怎么没有执行啊  跳过  这是怎么回事
 
 
 c_s segment
 A:
 ;********************************
 ;安装中断例程
 ;A标号是程序的入口地址
 ;显示例程安装在段地址是0h,偏移地址是240h
 ;中断类型码是7Dh
 ;
 ;
 ;********************************
 ;要安装的例程原始地址
 mov ax,cs
 mov ds,ax                ;段地址
 mov si,offset B        ;偏移地址
 
 ;要安装的例程目标地址,段地址为0h,偏移地址为240h
 mov ax,0h
 mov es,ax        ;段地址
 mov di,240h        ;偏移地址
 
 ;复制数据,正向复制
 ;复制数据的长度是offset D-offset B
 mov cx,offset D-offset B
 cld
 rep movsb
 
 
 ;设置中断向量表
 ;段地址是0h
 mov ax,0h
 mov es,ax
 mov word ptr es:[7ah*4],240h
 mov word ptr es:[7ah*4+2],0
 
 ;返回
 mov ax,4c00h
 int 21h
 
 ;********************************
 ;显示数据中断例程
 ;B例程的入口地址
 ;D标号是空操作用于计算例程的指令的大小
 ;S标号是循环标号
 ;ok是退出例程标号
 ;********************************
 B:
 push cx
 push si
 push es
 mov ax,0b800h        ;
 mov es,ax                ;
 
 mov byte ptr es:[12*160+40*2],'!'        ;把!复制到段地址为b800h,偏移地址为12*160+40*2
 
 ;返回
 iret
 
 ok:        pop es
 pop si
 pop cx
 iret
 D:nop
 c_S ends
 end A
 | 
 |