第三章中,我们从访问内存的角度了解学习几个寄存器
下面将知识点总结如下:
一、16位寄存器存储一个字,就要用高8位存放高位字节,低8位存放低位字节
0为低地址单元,1为高地址单元,表示数据4E20H(20000),起始地址是0,即是0地址字单元
存储字用两个单元,逆序存放,而存储字节只用一个单元
二、mov al,[0] 表示将内存单元内容存入寄存器,【】中的0表示偏移地址,DS寄存器,存放访问数据的段地址
用mov指令只能通过如
mov bx,1000
mov ds,bx
为DS寄存器赋值,8086CPU不支持将数据直接送入段寄存器的操作
mov [0],al 可以将数据从寄存器送入内存单元
mov 段寄存器,寄存器 / mov 寄存器,段寄存器 都可执行
mov 内存单元,段寄存器
mov 段寄存器,内存单元 都可执行
三、编程时可将一组内存单元用ds存放段地址从而定义为一个数据段,再用偏移地址访问具体单元
四、栈:最后进入这个空间的数据最先出去
入栈push 和出栈pop都是以字为单位
栈顶的段地址存放在SS中,偏移地址存放在SP中,任意时刻SS:SP指向栈顶元素
push ax 1.SP=SP-2 2.将ax内容送入SS:SP指向的栈内存
pop ax 1..将SS:SP指向的栈内存送入ax 2.SP=SP+2
空栈时,SS:SP指向栈最底部单元下面的单元(最底部字单元偏移地址+2)
五、8086CPU没有寄存器检测越界
六、push和pop可以传送段寄存器或者内存单元,如:
push ds
pop [0]
段地址在指令执行时,从DS获得
七、push、pop等栈操作指令,修改的只是SP,即栈顶变化范围最大为0~FFFFH
八、可以将长度为N(N≤64KB)的一组地址连续,起始地址为16的倍数的内存单元定义为栈段,同时将SS:SP指向定义的栈段
九、1.代码段CS、IP 2.栈段SS、SP 3.数据段DS 的指向将内存做为不同用处
原文地址:https://www.cnblogs.com/msag/p/9886714.html