|
5鱼币
下面这段程序是王爽汇编里的作业题,编译链接后运行不正常,我和小甲鱼老师的习题答案对了一下,没错,然后把里面的细节都改的和答案一样了,可运行时还是出错。是不是和我的系统有关啊,请哪位老师给指点一下吧。
;编写0号中断处理程序
;编写0号中断处理程序,使得在除法溢出发生时,在屏幕中间显示字符串‘divide error!’,然后返回dos
;名称:0号中断处理程序
;功能:使得除法溢出发生时,在屏幕中间显示字符串‘divde 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 ;设置ds:[si]指向字符串
mov ds,ax
mov si,202h
mov ax,0b800h ;设置es:[di]指向显存地址
mov es,ax
mov di,12*160+36*2
mov cx,13 ;设置要传输的字符串的长度
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
|
|