汇编学习笔记二

在内存中,数据是以小端的形式存放的

———————————————————————————————————————————————————————

DS寄存器:用来存放要访问数据的段地址

指令:mov ax,[...]

其中[...]代表内存的偏移地址,而段地址则是ds寄存器里面的。

mov 三种形式:寄存器,数据,元地址(偏移地址)

 

8086CPU不支持将数据直接送入段寄存器,所以必须先把数据放入某个寄存器中(这里用ax代表这个寄存器),在把该寄存器的内容放入段寄存器内。也就是说需要一个寄存器来当介质

所以说如果你用mov ds,1000H这是个非法指令,但你用mov bx 1000H,mov bs ax这是允许的

至于为什么不支持?这属于8086CPU硬件设计的问题(书上说只要了解这一点就行了)

 

———————————————————————————————————————————————————————

DS(DATA)是数据段地址

CS(CONSTRUCTION)是指令段地址

SS:栈顶段地址

SP:栈偏移地址

———————————————————————————————————————————————————————

8086CPU的入栈和出栈操作都是以字为单位进行的

8086CPU中,入栈时,栈顶从高地址向低地址方向增长

8086CPU中,在栈内写入数据时,会覆盖那个地址的值

———————————————————————————————————————————————————————

如果将10000H~1FFFFH这段空间当做栈段,初始状态栈是空的,此时SS=1000H,SP=?。这真是令人头疼的问题,假设有一个元素在栈里面,那么SP的值就为1FFFEH,唯一元素出栈,SP=SP+2,所以SP=0,所以当栈为空的时候,SS=1000,SP=0.

 

你可能感兴趣的:(汇编学习笔记二)