汇编语言第三章总结

第三章中,我们从访问内存的角度了解学习几个寄存器

下面将知识点总结如下:

一、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  的指向将内存做为不同用处

猜你喜欢

转载自www.cnblogs.com/msag/p/9886714.html