worklalal 发表于 2017-11-29 10:17:03

[王爽汇编]-使用test后并没有使用新编写的0中断处理程序

assume cs:code

code segment

start:                mov ax, 0
                        mov es, ax
                        mov di, 200h
                       
                        mov ax, cs
                        mov ds, ax
                        mov si, offset do0
                        mov cx, offset do0end - offset do0
                        cld
                        rep movsb
                       
                        mov ax, 0
                        mov es, ax
                        mov word ptr es:, 200h
                        mov word ptr es:, 0
                       
                        mov ax, 4c00h
                        int 21h
                       
        do0:        jmp short do0start       
                        db 'welcome to fishc!'
                       
do0start:        mov ax, 0b800h
                        mov es, ax
                        mov di, 160*32+36*2
                       
                        mov ax, cs
                        mov ds, ax
                        mov si, 202h
                        mov cx, 16
                       
        s:                mov al, ds:
                        mov es:, al
                        mov byte ptr es:, 2
                        inc si
                        add di, 2
                        loop s
                       
                        mov ax, 4c00h
                        int 21h
do0end:         nop
                       
code ends

end start

用了一个有除法溢出的test后,debug发现并没有出现welcome to fishc! , 而且在没改写0中断程序之前,也不会报错divide xxxx ,也是继续执行莫名奇妙的指令。而是继续执行call xxx指令。这是为什么?我用的是win64位,安装的是dosbox 0.74 , masm5

兰陵月 发表于 2017-11-30 13:28:29

本帖最后由 兰陵月 于 2017-11-30 13:42 编辑

你第36行,改为:mov al, ds:看看。其他的错误,估计是副产品!!!
页: [1]
查看完整版本: [王爽汇编]-使用test后并没有使用新编写的0中断处理程序