关于push指令
时间:2010-11-15
来源:互联网
在debug下push指令不接受立即数
而在masm下push指令居然可以接受立即数,这着实有点不可思议
那么masm是如何将push指令翻译的呢?
我试着在汇编代码中添加了这个代码
push 5000h
结果发现装入debug中后,反汇编指令居然是这样
68 DB 68
00500F ADD [BX+SI+0F],DL
也就是说push 5000h的二进制指令是68 00 50
怎么会这样?原本想着给堆栈段里装东西怎么就装到数据段里去了呢?
而在masm下push指令居然可以接受立即数,这着实有点不可思议
那么masm是如何将push指令翻译的呢?
我试着在汇编代码中添加了这个代码
push 5000h
结果发现装入debug中后,反汇编指令居然是这样
68 DB 68
00500F ADD [BX+SI+0F],DL
也就是说push 5000h的二进制指令是68 00 50
怎么会这样?原本想着给堆栈段里装东西怎么就装到数据段里去了呢?
作者: p569354158 发布时间: 2010-11-15
8086cpu不允许push压入立即数。debug是16位调试器,用debug32试一试。
作者: masmaster 发布时间: 2010-11-15
栈段是一种特殊的数据段。
作者: masmaster 发布时间: 2010-11-15
大哥你简直是来救我的
作者: p569354158 发布时间: 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。
例如
push 100H
编译为
push bp
mov bp,sp
mov word ptr [bp+2],100h
pop bp
我不知道它最后为什么不修改sp。
作者: shzhfu 发布时间: 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汇编工具啊
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汇编工具啊
作者: p569354158 发布时间: 2010-11-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28