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

我的博客

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

[2012-05-05 20:09] 实验十二,延伸

图片载入中
看到原来的除法溢出中断处理程序,显示的字符串会随着行数的变化而变化,所以做了一个伪功能的中断处理程序。但是,毕竟程序不完善,且程序想法不同。所以有如下两个问题:
1.字符串第一次不会出现,当“程序正常返回”出现时,按第二次才会出现。
2.可能会有时候显示检测不准的时候。


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,0                      ;将偏移地址置零,为下面检测字符提供寄存器
   push cx                       ;将cx入栈,保存传送次数
   
@:       mov cl,es:[di]                ;将显存中第一列字符送到cl中,提供检测
         mov ch,0
   add cx,0ffb0h                 ;若字符为P则,cx为零
         jcxz @1                       ;若cx为零,则转移到@1
   mov cx,0                      ;将cx置零,以便下次检测
   add di,0a0h                   ;指向下一行
   jmp @                         ;跳到@处,下次检测
   
@2:   cld                           ;正方向传送
   rep movsw                     ;将字符串送入显存
   
   mov ax,4c00h
   int 21h                       ;返回dos
   
@1:   sub di,0a0h                   ;放在”程序正常返回“字符串的上一行。
         pop cx                        ;恢复字传送次数
   jmp @2                        ;转移到@2处,开始字符串的传送。
   
do0end:  nop                           ;设置无意义指令,为了计算中断程序字节数

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

[  fpamc   发表于  2012-05-05 20:21  ]

希望各位提意见和共同讨论哈

[  yahwei   发表于  2012-05-05 21:54  ]

发现你每次都能超额完全任务哦,我觉得用“P”这个字符做为检测标准还不够。

[  fpamc   发表于  2012-05-05 21:58  ]

嗯嗯,其实,真正的不是检测p。
但是呢,其它的还没想出来,嘿嘿,所以说'这个是个伪的,
在前面已经注明了

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

发现问题,解决问题,不错。

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