首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

王爽汇编12章实验题!该怎么解决

2014-04-18 
王爽汇编12章实验题!!!第12章的实验题:编写0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示字符串

王爽汇编12章实验题!!!
第12章的实验题:编写0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示字符串"divide error!",然后返回到DOS.
代码:


assume cs:code 
code segment
start:  mov ax,cs
        mov ds,ax
        mov si,offset do0               ;设置ds:si指向源地址
 
        mov ax,0
        mov es,ax
        mov di,200h                     ;设置es:di指向目标地址

        mov cx,offset do0end-offset do0 ;设置cx为传输长度
        cld                             ;设置传输方向为正
        rep movsb

        mov ax,0
        mov es,ax
        mov word ptr es:[0*4],200h
        mov word ptr es:[0*4+2],0       ;设置中断向量表
         

        mov ax,4c00h
        int 21h

do0:    jmp short do0start
        db 'divide error!'
 

do0start:mov ax,cs
         mov ds,ax
         mov si,202h                    ;设置ds:si指向字符串
 
         mov ax,0b800h
         mov es,ax
         mov di,12*160+34*2             ;设置es:di指向显存空间的中间位置
 

         mov cx,13                      ;设置cx为字符串长度
s:       mov al,[si]
         mov es:[di],al
         inc si
         add di,2
         loop s
 
         mov ax,4c00h
         int 21h


do0end:  nop
code ends
end start


[解决办法]
这样的,要在本程序里才能作用吧,否则这个中断向量会被重置的,所以不会有反应,比如在 mov ax, 4c00h 前加上
 mov  bl, 0
div  bl


引用
其中第3行的CS和第28行的CS一样吗,第28行的CS怎么解释????
不一样的吧,第 3 行是程序执行时,程序自己的 cs;28 行,这里的代码被执行的话,应该是已经被移动到了 0000:0200 处之后的,即 cs 为 0000 了。

热点排行