3.1 内存中字的存储
3.2 DS和[address]
注:由于不可以直接将数据送入DS寄存器,所以需要一个另外的寄存器可以直接将数据导入的寄存器来作为中间体;
- [ ]表示一个内存单元,中间的数据表示内存单元的偏移地址;
- 可以将内存单元中的内容送入寄存器,也可以将寄存器中的内容送入内存单元
3.3 字的传送
- mov ds,ax成立 add ds,ax错误 sub ds,ax错误 (不止DS,其他段寄存器的值也不能直接用数据进行修改)mov [1] , [2]也不可以操作;
- 段寄存器不能进行add和sub操作
3.5 数据段
- 可以将一组长度为N(N<=64KB)、地址连续、起始地址为16的倍数的内存单元当做专门存储数据的内存空间。从而定义一个数据段;
- 在访问数据段中的数据时,用ds存放数据段的段地址;
- 注意:一个字型数据占两个单元,所以偏移地址是0、2、4;
关于栈的tips:
- 对于栈段有push()和pop()操作;
- push ax表示将寄存器ax中的数据送入栈中,pop ax表示从栈顶取出元素后再送入ax中,8086CPU的出栈和入栈操作都是以字为单位进行的;
- ss:sp指向栈顶元素;
- pop操作的对象不能是SS和CS;
- push一次,sp=sp-2;
- 栈为空时,SS:SP指向栈空间最高地址单元的下一个单元;
- 栈空时,该单元的偏移地址为栈最底部的子单元的偏移地址+2;
- 我们在编程的时候需要自己操心栈顶超界的问题;
PS:remain to be improved~
汇编语言第三章总结
原文:https://www.cnblogs.com/Sun-Yiwen-blog/p/9911378.html