鱼C论坛

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

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

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

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

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

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

  2.   code segment

  3.            start:
  4.                 mov ax,cs
  5.                 mov ds,ax
  6.                 mov si,offset do


  7.                 mov ax,0
  8.                 mov es,ax
  9.                 mov di,0200h
  10.                 mov cx,offset doend- offset do
  11.                 cld
  12.                 rep movsb
  13.                
  14.                 mov ax,0
  15.                 mov es,ax
  16.                 mov word ptr es:[0],200h
  17.                 mov word ptr es:[2],0
  18.                

  19.                
  20.                 mov ax,4c00h
  21.                 int 21h

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

  29.                 mov ax,0b800h
  30.                 mov es,ax
  31.                 mov di,12*160+60

  32.                 mov cx,21
  33.         s:      mov al,[si]
  34.                 mov es:[di],al
  35.                 inc si
  36.                 add di,2
  37.                 loop s
  38.                 mov ax,4c00h
  39.                   int 21h
  40.     doend:        nop

  41. code ends
  42. end start

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


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

  48. change:mov cl,[si]
  49.         mov ch,0
  50.         jcxz,ok
  51.         and byte ptr [si],11011111b
  52.         inc si
  53.         jmp short change
  54.     ok: pop si
  55.         pop cx
  56.         iret       
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-5-28 17:08:21 | 显示全部楼层
这里的CS指向的是你中断程序里面的CS,因为你进入中断程序后,CS和IP均会被中断向量表改变。而你程序里面的CS和IP都被保存在堆栈里面了。

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-5-28 20:20:55 | 显示全部楼层
capital:
        push cx;此处的cx,si指的是什么里面的cx,si,是调用7ch的程序,还是7ch处中断程序自身的cx,si
        push si

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

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-5-28 21:20:15 | 显示全部楼层
:D  有点懂了,多谢多谢!
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-4-21 05:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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