鱼C论坛

 找回密码
 立即注册
查看: 7768|回复: 13

汇编检测点10.5 (1)

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

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

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

x
果然大神都不愿意关注这小题。。我自己琢磨出来了!  ax=3

ss和ds指向同一个地址,里面存放着16个字节的0。

接着当代码执行到call word ptr ds:[0eh],会先push下一个地址的ip,即11h,然后word ptr ds:[0eh]里是存放着00,接着会跳到start处继续执行到call word ptr ds:[0eh]时,因为ds和ss使用的是栈,所以word ptr ds:[0eh]里存放着是11h。然后ip就会转到偏移为11h的地址,执行3次inc ax后。

最后得出ax=3.                        我知道是把INC AX 的偏移地址 放进栈  PUSH 进去的11H 是怎么算出来的,  我纠结了下,那个命令占多少个偏移 一直不太明白 为什么是11H  然后word ptr ds:[0eh】里面的值不是0吗?开始不是定义了为0吗?? 那如果改成跳到  word ptr ds:[0Ah]   那个里值是什么  这里最纠结,,,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-30 13:00:55 | 显示全部楼层
我真的很感悟……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-30 17:39:05 | 显示全部楼层
俺懂了 ,雾过来了。。。管理员删了吧此贴
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-1 06:16:58 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-20 23:16:04 | 显示全部楼层
有点理解了。一直在纠结这个题目
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-21 20:44:17 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-19 15:24:20 | 显示全部楼层
我怎么觉得ax=4c00h呢,为什么差两句话你们不执行了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-10 20:30:41 | 显示全部楼层
“push下一个地址的ip,即11h,然后word ptr ds:[0eh]里是存放着00” 这句话怎么那么矛盾呢,既然都把11push进去了,而且就在0eh处,怎么会有00呢,明明就是11h呀?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-7 11:56:25 | 显示全部楼层
开始 ds:[0eh]处存放的是00,但执行到“call word ptr ds:[0eh]”,首先push ip ,此时的 ip 是值是11h,入栈,因此 ss:[0eh]的值是11h,而ss栈与数据ds是相关联的,故ds:[0eh]与ss:[0eh]值一样是11h,故“call word ptr ds:[0eh]”命令就是跳转至11h处,即inc ax处,因上面“mov ax,0”,故最终ax=3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-12 10:02:20 From FishC Mobile | 显示全部楼层
call下一条指令的ip为什么是11h?一直没想通
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-9 18:24:02 | 显示全部楼层
根本不用管ip指向到底是多少,ss和ds都是指向的栈空间,sp又是10H,执行完call指令后,ip指向的是inc ac,把这条指令的偏移地址push进栈中,假设push ip1,此时sp的值是0eH,因为先sp要先-2,说明栈中0eH的位置就是ip1,接下来跳转到ds:[0eH]处,即栈中[0eH]存储的偏移地址处,存储的就是ip1,即第一条inc ax的指令的偏移地址,所以是接着下面执行的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-19 12:58:27 | 显示全部楼层
瞎说,AX明明最后是4C00H
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-27 17:27:25 | 显示全部楼层
看到楼主的帖子瞬间悟了,push ptr ds:[0eh] 会有3个操作:
     1)(sp) = (sp)-2  ,这时(sp) 的已经变成 0eh
     2)    赋值  ((ss)*16+(sp)) ,   值 是指向下一条指令的IP值(即第一个 ‘inc ax' 的偏移地址)
     3)  jmp  到 ((ss)*16+(sp))地址所在的内存单元,又回到了第一条  ‘inc ax' 指令
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-21 19:43:02 | 显示全部楼层
ip是ip
sp是sp
这里又没有指名IP是多少,怎么那么牵强附会呢。想象力太强了把
那如何按照你怎么算ip是多少,我来算
    mov ax,stack             3个字节
        mov ss,ax              2个字节
        mov sp,16               3个字节
        mov ds,ax               3个字节
        mov ax,0                 3个字节
        call word ptr ds:[0eh]  ;最少3个字节 这里算 最少的吧
        inc ax                   1个字节
        那么ip就等于 =15个字节  IP = FH

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 11:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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