为了对中断进行探究,学习到这里时我们尝试编写一个do0程序,同时还要编写一个安装程序p247,把do0安装到系统中,替换原有的0号中断例程。教材中已经给出了do0和p247的完整的程序实现。
但是看完教材里的程序后,我想到了一个问题,在教材给出的do0中,我们自己统计出字符数量然后赋值给cx,那么能不能让程序自动计算呢,答案是肯定的
我们先把do0放在一边,在p247中,我们需要统计出do0本身的长度,教材给了我们一种统计do0本身长度的方式,即:
在do0结束之后,加上一个标号do0end,然后就可通过offset do0end-offset do0 来获取到do0本身的长度
那么,我们应该可以用同样的方法,让编译器去统计字符串的长度
实现方法如下:
sb:
db "chufayichu!"
sbend:
nop
然后我们就可以这样给cx赋值:
mov cx,offset sbend-offset sb
完整代码(do0安装程序)如下:
assume ss:stack,cs:code
stack segment stack
db 256 dup (0)
stack ends
code segment
main:
mov ax,cs
mov ds,ax
mov si,offset do0; ds:si指向源地址
mov ax,0
mov es,a