Sen哥 发表于 2013-10-5 10:55:19

弱弱问一句,我能不能push al

弱弱问一句,我能不能push al,然后sp-1???

仰望天上的光 发表于 2013-10-5 10:55:20

理论上是可以的,但是由于你用的是8086汇编语言,所以最终要根据8086汇编语言的语法来决定是否可行。该语法规定只能将16比特的数推到堆栈中,所以就智能这样做。如果自己设计了一个硬件CPU并且自己设计了相对应的汇编语言以及该汇编语言的编译器,就可以实现自己的语法。

メ㊣逆ご帅☆ 发表于 2013-10-5 11:14:55

不能.
.]
]

Sen哥 发表于 2013-10-5 11:16:42

メ㊣逆ご帅☆ 发表于 2013-10-5 11:14 static/image/common/back.gif
不能.
.]
]

为啥?????

メ㊣逆ご帅☆ 发表于 2013-10-5 11:28:06

本帖最后由 メ㊣逆ご帅☆ 于 2013-10-5 11:36 编辑

Sen哥 发表于 2013-10-5 11:16 static/image/common/back.gif
为啥?????
规定。。。估计为了统一性,然后好对一些操作进行优化。我想你有听说过int类型是操作效率最高的一种类型(书上看过的。好像是c++ Primer plus)因为计算机操作大部分都是4字节
所以计算机比较擅长这个长度,大概是这样的东西,我自己也不清楚,而且进栈出栈的长度一致的话,也不容易混乱



牡丹花下死做鬼 发表于 2013-10-5 12:20:48

这是不可以的 你可以试试看 编译器应该会报错

无名侠 发表于 2013-10-5 17:35:48

不可以的,栈里面存储的数据都是2个字节所以sp要减去2

my_angel 发表于 2013-10-6 00:13:34

因为CPU的设计中只有通用寄存器才能拆开来使用,而其他不允许。。。你push al就只操纵部分堆栈。。。不允许的。。

happyin3 发表于 2013-10-6 07:52:13

学习了。。。。。。。

trek600 发表于 2013-10-6 08:07:03

不行吧。的是16位的吧

baby520 发表于 2013-10-6 18:33:06

al是一个字节。。。push.对应的是一个字。。

风吹绿野 发表于 2013-11-18 12:52:27

路过看看哈
页: [1]
查看完整版本: 弱弱问一句,我能不能push al