鱼C论坛

 找回密码
 立即注册
查看: 3516|回复: 2

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

[复制链接]
发表于 2011-11-5 23:00:34 | 显示全部楼层 |阅读模式

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

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

x
外中断,按下esc就可以改变字符串颜色的代码。看了n面视频还是看不太懂,
1: MOV       WORD PTR ES:[9*4],OFFSET INT9       ;9号中断指向新的中断命
      MOV       ES:[9*4+2],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:[0]
这儿为什么要用call?跳回原来的ds[0]干嘛?那后面的显示程序不就没法执行了。
3:INC       BYTE PTR ES:[160*12+40*2+1]
这句代码又是怎么回事丫?这个自加1是针对什么?不是es吧,也不是40*2+1后面的吧,应该是cl(表颜色)我以为应该用
inc cl
mov es:[160*12+40*2+1],cl
……我是菜鸟仂,现在这学期要学汇编,用的书也不是王爽的……各位大神教教我吧,真想了很久。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-6 10:44:47 | 显示全部楼层
第一个问题:你可以加上word ptr
第二个问题:用call是调用原来的int9例程,而你原来的int9例程的入口地址保存到了ds:[0]那里,调用完后返回call下面的指令去执行
第三个问题:inc 后面的byte ptr es:[160*12+40*2+1]是内存中的内容,比如内容是1,inc后就是2,颜色才会变啊,内容就是颜色的属性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2017-8-30 19:12:39 | 显示全部楼层
1.第2个有寄存器cs, 默认就是子单元了
2.调用完了不是跳出新的Int 9中断
3.感觉利用cl来传递也可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-25 03:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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