汇编网首页登录博客注册
chinatree的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
友情链接

[2011-09-02 18:16] 第12章检测点及实验12

检测点12·1
(1)用debug查看内存,情况如下:
000:0000 68 10 A7 00 8B 01 70 00-16 00 9D 03 8B 01 70 00
则3号中断源对应的中断处理程序的入口地址为:—70:18b—。
    (2)存储N号中断源对应的中断处理程序入口的偏移地址的内存单元的地址
为:N*4    。
存储N号中断源对应的中断处理程序入口的段地址的内存单元的地址为:—N*4+2—。

真是的,在这12·4节前根本就没有将什么在高字,什么在低字,得往后翻。



实验1 2  编写O号中断的处理程序
    编写0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示字符串“divide error!”,然后返回到DOS。
    要求:仔细跟踪调试,在理解整个过程之前,不要进行后面课程的学习。

code segment
assume cs:code
db 16 dup (0)
start:mov ax,cs
mov ss,ax
mov sp,10h
mov ds,ax
mov si,offset d0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset d0end-d0
cld
rep movsb
mov word ptr es:[2],0
mov word ptr es:[0],200h
int 0
mov ax,4c00h
int 21h
d0:jmp short d1
sasa db 'divide error!'
d1:mov ax,cs
mov ds,ax
mov ax,0b800h
mov es,ax
mov di,160*12+60
mov si,202h;就是这里,用offset操作符取的地址是错误的
mov ah,2
mov cx,13
s1:mov al,[si]
mov es:[di],ax
add di,2
inc si
loop s1
mov ax,4c00h
int 21h
iret
d0end:nop
code ends
end start
评论次数(2)  |  浏览次数(333)  |  类型(汇编作业) |  收藏此文  | 

[  tomato   发表于  2011-09-02 19:41  ]

比较简单吧?

[  chinatree   发表于  2011-09-02 19:52  ]

是呀,感觉就像长跳转一样,只是中间的步骤多了些,很不想背中断向量表。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码