注册 登录
编程论坛 汇编论坛

请问这个中断程序有什么问题?

kd83kdi93 发布于 2013-01-17 14:23, 497 次点击
assume cs:code
data segment
    db 16 dup (0)
data ends
code segment
    start:
    mov ax,cs
    mov ds,ax
    mov si,offset a
    mov ax,data
    mov es,ax
    mov di,0
    mov cx,offset b-offset a
    cld
    rep movsb
    mov ax,0200h
    mov ds,ax
    mov ax,0
    mov word ptr ds:[2],data
    mov word ptr ds:[0],ax
    int 80h
   
    mov ax,4c00h
    int 21h
    code ends
    a:
    mov dx,1234h;
    iret
    b:
    nop
end start

使用80h中断让dx变成1234h  80h中断的内存应该是0200:0000 - 0003吧    但是我debug单步执行完int 80h直接就iret了    dx也没有变化  
不知道是本来就这样还是我的程序有问题   请教
4 回复
#2
zklhp2013-01-17 15:39
不懂帮顶
#3
wp2319572013-01-18 08:50
单片机?
除了纯dos 好像都不能调用int
#4
无敌小超人2013-01-28 18:34
试试不用单步。用单步结果不一样的
#5
清微御宇2013-01-28 19:40
回复 楼主 kd83kdi93
一般在自己写中断例程(a)时,需要把它(a)安装在一块别的程序不会用到的内存中(0000:0200~0000:0300)而不是你自己随便申请的data段
    mov word ptr ds:[2],data

    mov word ptr ds:[0],ax中断向量也设错了0000:0200中的值(IP),0000:0202中的值(cs)!!!
!!!

[ 本帖最后由 清微御宇 于 2013-1-28 19:54 编辑 ]
1