huangqihan55 发表于 2011-11-5 23:00:34

《零基础汇编》外中断篇疑问

外中断,按下esc就可以改变字符串颜色的代码。看了n面视频还是看不太懂,
1: MOV       WORD PTR ES:,OFFSET INT9       ;9号中断指向新的中断命
      MOV       ES:,CS         ;9号位置指向cs
为什么第一个要加word ptr,第二个又不加?
2:INT9:
            PUSH      AX
            PUSH      BX
            PUSH      ES
            IN      AL,60H      ; 60号端口   中输入的键盘码进入al
            PUSHF
            PUSHF               ;改变标志寄存器后两位
            POP       BX
            AND       BH,11111100B
            PUSH      BX
            POPF
            CALL      DWORD PTR DS:
这儿为什么要用call?跳回原来的ds干嘛?那后面的显示程序不就没法执行了。
3:INC       BYTE PTR ES:
这句代码又是怎么回事丫?这个自加1是针对什么?不是es吧,也不是40*2+1后面的吧,应该是cl(表颜色)我以为应该用
inc cl
mov es:,cl
……我是菜鸟仂,现在这学期要学汇编,用的书也不是王爽的……各位大神教教我吧,真想了很久。

090704020006 发表于 2011-11-6 10:44:47

第一个问题:你可以加上word ptr
第二个问题:用call是调用原来的int9例程,而你原来的int9例程的入口地址保存到了ds:那里,调用完后返回call下面的指令去执行
第三个问题:inc 后面的byte ptr es:是内存中的内容,比如内容是1,inc后就是2,颜色才会变啊,内容就是颜色的属性

刘长江666 发表于 2017-8-30 19:12:39

1.第2个有寄存器cs, 默认就是子单元了
2.调用完了不是跳出新的Int 9中断
3.感觉利用cl来传递也可以
页: [1]
查看完整版本: 《零基础汇编》外中断篇疑问