鱼C论坛

 找回密码
 立即注册
查看: 4333|回复: 5

检测点13.1(2)

[复制链接]
发表于 2017-7-29 16:10:48 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 lsjtys2 于 2017-7-29 16:53 编辑

用7ch中断完成loop指令答案:
assume cs:code
code segment
start:mov ax,cs
      mov ds,ax
          mov si,offset do0
          mov ax,0
          mov es,ax
          mov di,200h
          mov cx,offset do0end-offset do0
          cld
          rep movsb
          
          mov ax,0
          mov es,ax
          mov word ptr es:[7ch*4],200h
          mov word ptr es:[7ch*4+2],0
          
          mov ax,4c00h
          int 21h
          
do0:  push bp
      mov bp,sp
          add [bp+2],bx
          pop bp
          iret
          mov ax,4c00h
          int 21h
do0end:nop
code ends
end start

有一点不明白 do0 段中add [bp+2],bx   是把栈里的ip拿出来修改,实现loop循环
索引的段地址应该是ds没错吧! 是add ds:[bp+2],bx  这样段地址是数据段的段地址和栈的偏移地址是怎么可能修改到栈里的ip的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-7-29 16:20:39 | 显示全部楼层
本帖最后由 lsjtys2 于 2017-7-29 16:25 编辑

想很长时间了,实在想不出给的是数据段的段地址和 栈的偏移地址是怎么修改到栈里IP的值的,不是应该add ss:[bp+2],bx才对吗?我用debug试了这答案没有问题,可就想不明白 给的是数据段的段地址和栈的偏移地址 却改了栈里的ip
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-29 21:16:24 | 显示全部楼层
明白了!任何以寄存器[bp+??]定址的不管??是什么都以ss为段地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-18 15:37:10 | 显示全部楼层
bp的段地址默认为ss的,bp+2是取得了se处的ip,后面加上bx的数值,就变成s处的ip了,后面取出ip值的时候,ip的值已经由原来的se的ip值变成s处的ip值了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-18 19:32:47 | 显示全部楼层
mov ax,4c00h
          int 21h    这个指令在中断例程里多余了吧,因为在设置中断向量的时候不是有了么,而且ie ok 指令里有跳转转到出去后的

mov ax,4c00h
          int 21h   是不是重复了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-26 17:38:05 | 显示全部楼层
lsjtys2 发表于 2017-7-29 16:20
想很长时间了,实在想不出给的是数据段的段地址和 栈的偏移地址是怎么修改到栈里IP的值的,不是应该add ss: ...

用bp默认是ss做段地址而不是ds做
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 03:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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