汇编_stack的使用
Posted 一只特立独行的猫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编_stack的使用相关的知识,希望对你有一定的参考价值。
如果要将一些数字按照原来的顺序逆序存放,一般就用到栈了。
第一种实现方法不太常用,一般是将栈和数据定义到一个段里面。
assume cs:code
code segment
dw 1234h,5678h;定义数据
dw 0,0;定义栈段
s :mov ax, cs
add ax, 4
mov ss, ax;定义栈段
mov sp, 8;定义栈底,留心内存溢出,不要上溢到数据段
mov bx, 0
mov cx, 2;设置循环次数
s0: push cs:[bx];入栈
add bx,2;移动指针到下一位置
loop s0
mov cx, 2
s1: pop ax
loop s1
mov ax, 4c00h
int 21h
code ends
end s
第二种方法是将栈放入栈段,数据放入数据段。这样代码的可读性较强。
assume cs:codes,ds:data,ss:stack
data segment
dw 1111h,2222h,3333h,4444h
data ends
stack segment
dw 0h,0h,0h,0h
stack ends
codes segment
start:mov ax, data
mov ds, ax;更改数据段
mov ax, stack
mov ss, ax;更改栈段
mov sp, 8;定义栈的大小
mov bx, 0
mov cx, 4
s0: push ds:[bx];入栈
add bx, 2
loop s0
mov cx, 4
s1: pop ax
loop s1
mov ax, 4c00h
int 21h;调用21号中断
codes ends
end start
debug结果:
以上是关于汇编_stack的使用的主要内容,如果未能解决你的问题,请参考以下文章
关于warning no stack segment的问题 - 16位汇编语言代码问题
8086汇编将小写字母转换为大写字母(含提示信息,无限循环,按“!”退出程序)