鱼C论坛

 找回密码
 立即注册
查看: 3456|回复: 7

汇编检测点10.5

[复制链接]
发表于 2012-3-13 16:07:18 | 显示全部楼层 |阅读模式

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

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

x
检测点10.5的第一小题,实在想不通ax为3是怎么得到的,请懂的朋友们解答一下,帮我解惑!谢谢。:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-14 14:32:45 | 显示全部楼层
call word ptr 这条命令相当于执行push ip,jmp word ptr 内存单元地址
所以call word ptr ds:[0eh]这条命令相当于执行push ip,jmp word ptr ds:[0eh],push ip把下一行的inc ax的ip地址放入到栈中,于是SP-2,word ptr ds:[0eh]的内容就是inc ax的IP地址,然后在执行jmp,就跳回去了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2013-8-12 16:32:55 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2013-8-13 22:53:30 | 显示全部楼层
夏洛 发表于 2012-3-14 14:32
call word ptr 这条命令相当于执行push ip,jmp word ptr 内存单元地址
所以call word ptr ds:[0eh]这条命 ...

这答案是容易让人明白些
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-14 03:52:12 | 显示全部楼层
没题目? 帮顶。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-14 16:20:11 | 显示全部楼层
本帖最后由 狂潮丶 于 2013-8-14 16:23 编辑

assume cs:code

stack segment

     dw 8 dup (0)

stack ends

code segment

start:   mov ax,stack

     mov ss,ax

     mov sp,16

     mov ds,ax

     mov ax,0

     call word ptr ds:[0eh]      关键就在这里call word 是近转移那么就是把call指令后的第一个字节的ip压入栈也就是inc ax的ip。压入之后栈顶变为0eh,那么这句代码call word ptr ds:[0eh]就是跳转到inc ax处然后执行三次inc ax程序结束!

     inc ax

     inc ax

     inc ax

     mov ax,4c00h

     int 21h

code ends

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

使用道具 举报

发表于 2016-5-10 12:59:21 | 显示全部楼层
assume cs:code
        stack segment   ;定义栈段
        dw 8 dup (0)    ;16个字节
        stack ends
        code segment

        start:  mov ax,stack
                mov ss,ax
                mov sp,16     ;栈初始化
                mov ds,ax     ;数据段和栈段是同一段空间
                mov ax,0       ;ax=0
                call word ptr ds:[0eh];把下一条指令的cs和ip压入栈空间  sp=0eh cs入栈 然后ip入栈
                                       ;call后把cs 和ip还原 等同于call到下一条指令执行
                inc ax      ;ax=1
                inc ax       ;ax=2
                inc ax        ;ax=3

                mov ax,4c00h
                int  21h        ;程序正常结束  ax的值为3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-22 20:09:11 | 显示全部楼层
真的看得一脸郁闷
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 12:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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