关于汇编的一个小小的问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 05:34:35
今天,在汇编中,呵呵!也就是,今天,开始学习汇编的,遇到了一个问题,
也就是关于push and pop的,不废话,我先说明小我的原因所在,
堆栈操作指令 PUSH和POP

格式: PUSH OPRD

POP OPRD

功能: 实现压入操作的指令是PUSH指令;实现弹出操作的指令是POP指令

说明:
1. OPRD为16位(字)操作数,可以是寄存器或存储器操作数.

2. PUSH的操作过程是: (SP)<--(SP)-2,((sp))<--OPRD 即先修改堆栈指针SP(压入时为自动减2),然后,将指定的操作数送入新的栈顶位置.

此处的((SP))<--OPRD,也可以理解为: [(SS)*16+(SP)]<--OPRD 或 [SS:SP]<--OPRD
oprd 说是16位操作数,我还是有点不懂,

最下面的列式我想问下,ss是指的是什么?
为什么要*16?sp是不是 push oprd 的缩写?我觉得好像不是,一般英文的缩写都是头一个字母的,
还有,为什么最后还小于oprd?
我刚才瞎想了一会,大家看看,呵呵!属于瞎想,如果不对,请指教,

{(ss)*16+(sp)}<--oprd

ss2个push 也就是2个堆栈

乘以16 是 16ss

+sp 也就是加个堆栈个弹出

也就是什么都没做,
那这么说 16ss<---oprd?

为什么?

大家一定要帮帮我的~非常谢谢你们!还有,我想在好像有位会汇编的朋友,
有的时候,很简单的问题,去百度,还有可能都找不出什么原因,哎。。气愤啊~有兴趣的朋友请Q396508218 我天天晚上在的,希望能一起讨论汇编,

你学习栈结果的时候通常有个铁轨示意图。
每个操作数是有长度的,就是常说的机器字长。这个长度表示几节铁轨长度。
ss是栈寄存器。不影响你对栈的思考。
你应该去看看cpu的编程手册,你其他的教程顶用。建议你阅读AMD的cpu参考手册,而不是intel的。
使用Nasm或者yasm的可以更好地进行练习指令的理解。
如果学习编程的话,建议使用fasm。今后可能使xg asm编译器,我的,还没有出来,哈哈,快了。