|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- 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:[0*4], 200h
- mov word ptr es:[0*4+2], 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:[di]
- mov es:[di], al
- mov byte ptr es:[di+1], 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 |
-
debug中的情况
|