CSAPP知识点回炉重造记/汇编语言学习笔记

1.寄存器:
ax, bx, cx, dx, ah, al, bh, bl, ch, cl, dh, dl, sp, bp, si, di
段寄存器:
ds, ss, cs, es


2.在[…]中,bx,si,di,bp可以单个出现,或只能以4种组合出现:bx+si,bx+di,bp+si,bp+di


3.机器指令并不关心数据的值是多少,而关心指令执行前一刻,它将要处理的数据所在的位置。所要处理的数据可以在3个地方:CPU内部、内存和端口。


4.立即数:对于直接包含在机器指令中的数据(执行前在CPU的指令缓冲器中),在汇编语言中称为立即数。立即数在汇编指令中是直接给出的。


5.方括号里面是bx的,默认段地址在ds中;方括号里面是bp的,默认段地址在ss中。


6.在没有寄存器参与的内存单元访问指令中,用word ptr或byte ptr 显性地指明所要访问的内存单元的长度是很必要的,否则,CPU无法得知所要访问的单元是字单元还是字节单元。比如:
CSAPP知识点回炉重造记/汇编语言学习笔记


7.push指令只进行字操作


8.可以修改IP,或同时修改CS和IP的指令统称为转移指令。概括地讲,转移指令就是可以控制CPU执行内存中某处代码的指令。


9.ret指令用栈中的数据,修改IP的内容,从而实现近转移;retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移。


10.栈是向低地址增长的:
CSAPP知识点回炉重造记/汇编语言学习笔记
PUSH 等价于:

subl $4, %esp

movl %ebp (%esp)