社区
汇编语言
帖子详情
关于push指令
lucky-lucky
2010-11-15 11:50:01
在debug下push指令不接受立即数
而在masm下push指令居然可以接受立即数,这着实有点不可思议
那么masm是如何将push指令翻译的呢?
我试着在汇编代码中添加了这个代码
push 5000h
结果发现装入debug中后,反汇编指令居然是这样
68 DB 68
00500F ADD [BX+SI+0F],DL
也就是说push 5000h的二进制指令是68 00 50
怎么会这样?原本想着给堆栈段里装东西怎么就装到数据段里去了呢?
...全文
501
6
打赏
收藏
关于push指令
在debug下push指令不接受立即数 而在masm下push指令居然可以接受立即数,这着实有点不可思议 那么masm是如何将push指令翻译的呢? 我试着在汇编代码中添加了这个代码 push 5000h 结果发现装入debug中后,反汇编指令居然是这样 68 DB 68 00500F ADD [BX+SI+0F],DL 也就是说push 5000h的二进制指令是68 00 50 怎么会这样?原本想着给堆栈段里装东西怎么就装到数据段里去了呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lucky-lucky
2010-11-15
打赏
举报
回复
Microsoft (R) MASM Compatibility Driver Version 6.11
Copyright (C) Microsoft Corp 1993. All rights reserved.
usage: MASM [option...] source(.asm),[out(.obj)],[list(.lst)],[cref(.crf)][;]
Run "MASM /H" for more info
奇怪啊,我就用6.11汇编工具啊
shzhfu
2010-11-15
打赏
举报
回复
你用哪个版本的汇编工具啊?我用masm5和masm6.15编译都不行呀,都提示不能用立即数的。在tasm 4.1下编译通过了,但它是婉转实现的。
例如
push 100H
编译为
push bp
mov bp,sp
mov word ptr [bp+2],100h
pop bp
我不知道它最后为什么不修改sp。
lucky-lucky
2010-11-15
打赏
举报
回复
大哥你简直是来救我的
masmaster
2010-11-15
打赏
举报
回复
栈段是一种特殊的数据段。
masmaster
2010-11-15
打赏
举报
回复
8086cpu不允许push压入立即数。debug是16位调试器,用debug32试一试。
masmaster
2010-11-15
打赏
举报
回复
楼主源代码中是不是使用了.386之类的伪指令,否则的话,编译那就会出错的。
Git如何还原之前的提交,如何在提交之前撤销‘git add .’
我不小心
push
了有问题的代码,提交代码的时候将不应该上传的代码上传到远程仓库。这个时候git还原就能够很有效的帮助我们解决问题。 如何在提交前撤消'git add'。 你的问题是我们持续创作的动力!
POP和
PUSH
指令
PUSH
指令
: 首先减少 ESP 的值,再将源操作数复制到堆栈。操作数是 16 位的,则 ESP 减 2,操作数是 32 位的,则 ESP 减 4。
PUSH
指令
有 3 种格式:
PUSH
reg/mem16
PUSH
reg/mem32
PUSH
inm32 POP
指令
: 首先把 ...
汇编
push
指令
实例、解析
在汇编语言中,
push
指令
用于将数据或
指令
推入栈(stack)中。在执行这个
指令
之后,新的栈顶元素将是ax的值。在之后的代码中,如果有其他元素被推入栈中,那么ax的值将会被推到更低的位置。例如,在调用一个段内函数...
PUSH
进栈
指令
和POP出栈
指令
PUSH
进栈
指令
指令
格式:
PUSH
源
指令
功能:将源操作数推入堆栈。 源操作数可以是16位通用寄存器、段寄存器或存储器中的数据字,但不能是立即数。堆栈是以“先进后出”的方式工作的一个存储区,栈区的段地址由SS...
X86
PUSH
指令
详解
SDM
指令
功能描述(
PUSH
) 总体描述: 先递减栈指针,然后把
指令
中的SRC操作数的内容放在栈顶(也就是ss:(r/e)sp),关于地址和操作数等的宽度规则如下: 地址宽度:取决于当前cs指向的代码段的D flag,可以被prefix...
汇编语言
21,458
社区成员
41,603
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章