八.栈段

栈是一种具有特殊的访问方式的存储空间(后进先出)

八.栈段_第1张图片
栈的结构示意图,在汇编中,要明确没有栈底的概念!!!
八.栈段_第2张图片
段地址,入栈和出栈,操作的是2个字节(8086系统),不存在1个或者3个字节!!!
八.栈段_第3张图片
PUSH ax
八.栈段_第4张图片
POP ax
八.栈段_第5张图片
空栈
八.栈段_第6张图片
段总结
八.栈段_第7张图片
小练习,右侧是栈段
八.栈段_第8张图片
左侧是栈段指明
八.栈段_第9张图片
通过这个软件,我们可以去看到内存的东西
八.栈段_第10张图片
内存顺序
八.栈段_第11张图片
PUSH的时候,往内存地址小的地方写东西
八.栈段_第12张图片
大端模式数据存储方向
八.栈段_第13张图片
小模式数据存储方向

loop指令

八.栈段_第14张图片
loop指令

注意,次方只能放到cx里,其他的不行

八.栈段_第15张图片
使用cx,计算平方数
八.栈段_第16张图片
如果替换成0,那么就是死循环 原因是:先判断是不是0,如果不是零,-1,所以一直往下减
八.栈段_第17张图片
去掉了loop

标号(s):只是表示这段函数给他起了一个名字,没有任何意义。这些代码还是要接着执行的。

上面的demo就是do-while循环,至少执行一次


计算ffff0-ffff2寄存器的数据

八.栈段_第18张图片
计算ffff0-ffff2寄存器的数据,3个字节,ax是2个字节呦
八.栈段_第19张图片
loop循环,inc bx = add bx,1h
八.栈段_第20张图片
等价
八.栈段_第21张图片
段前缀
八.栈段_第22张图片
练习,后者比前者的loop代码少,因为使用了两个寄存器
八.栈段_第23张图片
练习题

你可能感兴趣的:(八.栈段)