鱼C论坛

 找回密码
 立即注册
查看: 3401|回复: 4

实验12 编写0号中断处理的处理 的疑问

[复制链接]
发表于 2011-5-28 13:12:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 loop 于 2011-5-31 12:13 编辑
assume cs:code

  code segment
 
           start:
                mov ax,cs
                mov ds,ax
                mov si,offset do


                mov ax,0
                mov es,ax
                mov di,0200h
                mov cx,offset doend- offset do
                cld 
                rep movsb
                
                mov ax,0
                mov es,ax
                mov word ptr es:[0],200h
                mov word ptr es:[2],0
                

                
                mov ax,4c00h
                int 21h

  do:                
                jmp short dostart
                db "welcome to fishc.com!"
    dostart:
                mov ax,cs;                   不知道此处的cs指向的是哪个cs,是中断处理程序的cs,还是进行除法运算的cs呢
                mov ds,ax
                mov si,202h

                mov ax,0b800h
                mov es,ax
                mov di,12*160+60

                mov cx,21
        s:      mov al,[si]
                mov es:[di],al
                inc si
                add di,2
                loop s
                mov ax,4c00h
                  int 21h
    doend:        nop

code ends
end start

不知道 dostart:处的cs指向的是哪个cs,是中断处理程序的cs,还是进行除法运算的cs呢


而且在13章中编写中断07ch处进行大小写转换程序
capital:
         push cx;此处的cx,si指的是什么里面的cx,si,是调用7ch的程序,还是7ch处中断程序自身的cx,si
        push si

change:mov cl,[si]
        mov ch,0
        jcxz,ok
        and byte ptr [si],11011111b
        inc si
        jmp short change
    ok: pop si
        pop cx
        iret        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-28 17:08:21 | 显示全部楼层
这里的CS指向的是你中断程序里面的CS,因为你进入中断程序后,CS和IP均会被中断向量表改变。而你程序里面的CS和IP都被保存在堆栈里面了。

评分

参与人数 1荣誉 +1 收起 理由
loop + 1 欢迎交流讨论,鱼C有你更精彩~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-5-28 20:20:55 | 显示全部楼层
capital:
        push cx;此处的cx,si指的是什么里面的cx,si,是调用7ch的程序,还是7ch处中断程序自身的cx,si
        push si

那这个里面的si又是多少呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-28 20:34:28 | 显示全部楼层
这里的cx和si当然是程序本身的,因为你即便调用了中断程序,但是这两个地方并没有被改变,而你看到的push和pop的配对使用,只是为了进入中断程序后,不因为中断程序中对cx和si的改变而影响进入中断程序前cx,si的值。

评分

参与人数 1荣誉 +1 收起 理由
loop + 1 欢迎交流讨论,鱼C有你更精彩~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-5-28 21:20:15 | 显示全部楼层
:D  有点懂了,多谢多谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 20:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表