mumu2218 发表于 2013-5-30 12:49:28

汇编检测点10.5 (1)

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

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

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

最后得出ax=3.                        我知道是把INC AX 的偏移地址 放进栈PUSH 进去的11H 是怎么算出来的,我纠结了下,那个命令占多少个偏移 一直不太明白 为什么是11H然后word ptr ds:   那个里值是什么这里最纠结,,,,

止不住的颤抖 发表于 2013-5-30 13:00:55

我真的很感悟……

mumu2218 发表于 2013-5-30 17:39:05

俺懂了 ,雾过来了。。。管理员删了吧此贴

bafengao 发表于 2013-6-1 06:16:58

强烈支持楼主ing……

ZhaoYuBetter 发表于 2014-3-20 23:16:04

有点理解了。一直在纠结这个题目

无名侠 发表于 2014-3-21 20:44:17

mumu2218 发表于 2013-5-30 17:39 static/image/common/back.gif
俺懂了 ,雾过来了。。。管理员删了吧此贴

干嘛要删除?留着给后人借鉴。

吃货YA鸭 发表于 2017-6-19 15:24:20

我怎么觉得ax=4c00h呢,为什么差两句话你们不执行了。

bjyfcx 发表于 2017-12-10 20:30:41

“push下一个地址的ip,即11h,然后word ptr ds:里是存放着00” 这句话怎么那么矛盾呢,既然都把11push进去了,而且就在0eh处,怎么会有00呢,明明就是11h呀?

梦想飞翔的蜗牛 发表于 2019-2-7 11:56:25

开始 ds:处存放的是00,但执行到“call word ptr ds:”,首先push ip ,此时的 ip 是值是11h,入栈,因此 ss:的值是11h,而ss栈与数据ds是相关联的,故ds:与ss:值一样是11h,故“call word ptr ds:”命令就是跳转至11h处,即inc ax处,因上面“mov ax,0”,故最终ax=3

问题最多的网友 发表于 2020-3-12 10:02:20

call下一条指令的ip为什么是11h?一直没想通

mrthreepa 发表于 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:处,即栈中存储的偏移地址处,存储的就是ip1,即第一条inc ax的指令的偏移地址,所以是接着下面执行的

yuxinajie 发表于 2020-6-19 12:58:27

瞎说,AX明明最后是4C00H{:5_109:}

18630145849 发表于 2021-8-27 17:27:25

看到楼主的帖子瞬间悟了,push ptr ds: 会有3个操作:
   1)(sp) = (sp)-2,这时(sp) 的已经变成 0eh
   2)    赋值((ss)*16+(sp)) ,   值 是指向下一条指令的IP值(即第一个 ‘inc ax' 的偏移地址)
   3)jmp到 ((ss)*16+(sp))地址所在的内存单元,又回到了第一条‘inc ax' 指令

maikehong 发表于 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:;最少3个字节 这里算 最少的吧
      inc ax                   1个字节
        那么ip就等于 =15个字节IP = FH

{:5_94:} {:5_91:}
页: [1]
查看完整版本: 汇编检测点10.5 (1)