汇编笔记_第三章
寄存器内存访问
内存器中字的存储
- 大端方式:高位字节排放在内存的低地址端,低位字节存放在高地址端;(现在见到的都是大端方式)
- 小端方式:低位字节存放在内存的低地址端,高位字节存放在高地址端;
DS和[address]
- 执行指令时,8086CPU自动取DS中的数据作为内存单元的段地址;
- 不能直接将数据送到DS中,必须 数据->一般的寄存器->段寄存器;
例如:
mov bx,1000H
mov ds,bx
mov [0],al
字的传送
- 8086CPU是16位结构,有16根数据线,一次可以传送16位的数据,也就是一次可以传送一个字;(P50的问题3.3、3.4)
mov、add、sub指令
mov指令的几种形式:
mov 寄存器,数据
mov 寄存器,寄存器
mov 寄存器,内存单元
mov 内存单元,寄存器
mov 段寄存器,寄存器
栈
- 8086CPU中的入栈和出栈操作都是以 字 为单位的;
- 任意时刻,SS:SP指向栈顶元素;
push指令的执行过程
push ax
- SP = SP - 2;
- 将ax中的内容送入到SS:SP指向的内存单元处,SS:SP此时指向新栈顶;
- 栈空时,SS:SP指向栈空间最高地址单元的下一个单元;
pop指令的执行过程
pop ax
- 将SS:SP指向的内存单元出的数据送入ax中;
- SP = SP + 2;
栈顶超界的问题
- 当 栈满的时候再使用push指令入栈 、 栈空的时候再使用pop指令出栈 都会发生栈顶超界问题;
- 8086CPU不保证对栈的操作不会超界;
push、pop指令
-
push/pop 寄存器、段寄存器、内存单元
-
栈可以保存寄存器的数据,恢复时出栈的顺序要和入栈的顺序相反;
-
栈可以向一个地址处的内存单元写入数据,先设置ss,sp的值然后push;
-
栈顶sp的变化范围为0~FFFFH;
段地综述
- 对于数据段,段地址存放在DS中
- 对于代码段,段地址存放在CS,段中的第一条指令的偏移地址在IP中;
- 对于栈段,段地址存放在SS中,栈顶的偏移地址存放在SP中;
https://www.cnblogs.com/31415926535x/p/10178927.html
剑之所指,心之所向,身之所往!!!