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

我的博客

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

[2012-05-04 20:24] 第十二章作业

图片载入中
检测点12.1
(1)用debug查看内存,情况如下:
0000:0000  68 10 A7 00 8B 01 70 00-16 00 9D 03 8B 01 70 00
则3号中断源对应的中断处理程序入口的偏移地址的内存单位的地址为: 0070:018b 

检测点涉及相关内容:
一个表项存放一个中断向量,也就是一个中断处理程序的入口地址,这个入口地址包括段地址和偏移地址,一个表项占两个字,高地址存放段地址,低地址存放偏移地址

检测点12.1
(2)
存储N号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为: 4N 
存储N号中断源对应的中断处理程序入口的段地址的内存单元的地址为: 4N+2 
理由:同上O(∩_∩)O~

实验12 编写0号中断处理程序
编写0号中断处理程序,使得在除法溢出发生时,在屏幕中间显示字符串“divide error!”,然后返回DOS

assume cs:code

code segment

start:mov ax,cs
      mov ds,ax
      mov si,offset do0                ;设置源地址
   
      mov ax,0
      mov es,ax
      mov di,200h                      ;设置目标地址
   
      mov cx,offset do0end-offset do0  ;设置字节数,关于为什么书上有就不写了
      cld                              ;设置df为0,正方向
      rep movsb                        ;传送字符串
   
      mov word ptr es:[0*4],200h       ;将do0的偏移地址放到0号中断向量表
      mov word ptr es:[0*4+2],0        ;将do0的段地址放到0号中断向量表
   
      mov ax,4c00h
      int 21h
   
do0:  mov cx,13                        ;设置次数
      jmp short do0start               ;越过字符串,指向正确指令
      db 'dpipvpipdpep peprprpoprp!p'  ;字符+字符属性(白底黑字对应的字符为p)
   
do0start:mov ax,cs
         mov ds,ax
   mov si,205h                   ;指向字符串的地址
   
   mov ax,0b800h
   mov es,ax
   mov di,12*160+36*2            ;指向显存地址
   
   cld                           ;正方向传送
   rep movsw                     ;将字符串送入显存
   
   mov ax,4c00h
   int 21h                       ;返回dos
   
do0end:  nop                           ;设置无意义指令,为了计算中断程序字节数

code ends
end start
评论次数(2)  |  浏览次数(214)  |  类型(汇编作业) |  收藏此文  | 

[  dxiaolin   发表于  2012-05-04 20:46  ]

白底黑字对应的字符为p

又学了一招,呵呵呵

[  tomato   发表于  2012-05-06 00:08  ]

完成的没问题哦!

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