汇编初级问题(有关栈的分配)
下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。完成程序:
assume cs:codesg
codesg segment
dw 0123H, 0456H, 0789H, 0abcH, 0defH, 0135H, 0246H, 0369H
dw 0,0,0,0,0 ;5个字单元用作栈空间
start: mov ax,____
mov ss,ax
mov sp, ____
mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: push [bx]
________
add bx,2
loop s
mov ax,4c00H
int 21H
codesg ends
end start
我补完的程序是这样:
assume cs:codesg
codesg segment
dw 0123H, 0456H, 0789H, 0abcH, 0defH, 0135H, 0246H, 0369H
dw 0,0,0,0,0
start: mov ax,cs
mov ss,ax
mov sp,26
mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: push [bx]
pop cs:[bx]
add bx,2
loop s
mov ax,4c00H
int 21H
codesg ends
end start
debug可以完成功能。
但是我有一个疑问:
为什么要用5个字单元做栈空间??
用4个字作栈空间,程序改为:
……
dw 0,0,0,0
……
mov sp,24
……
我试了也完全可以实现功能。
那现在就又有一个问题:我认为程序中只需要一个字的栈空间作中转就可以实现数据的互换,为什么要设4个字的栈空间呢?
但是如果我把程序改为
……
dw 0,0,0
……
mov sp,22
……
(用三个字作栈空间)
得到的结果是最后的一个字的内容没有改变。
改为:
……
dw 0,0
……
mov sp,20
……
(用两个字作栈空间)
得到的结果是最后的两个字的内容没有改变。
……
dw 0
……
mov sp,18
……
(用一个字作栈空间)
得到的结果是最后的三个字的内容没有改变。
你可以试试。;)
为什么????
多谢!!
assume cs:codesg
codesg segment
dw 0123H, 0456H, 0789H, 0abcH, 0defH, 0135H, 0246H, 0369H
dw 0,0,0,0,0 ;5个字单元用作栈空间
start: mov ax,____
mov ss,ax
mov sp, ____
mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: push [bx]
________
add bx,2
loop s
mov ax,4c00H
int 21H
codesg ends
end start
我补完的程序是这样:
assume cs:codesg
codesg segment
dw 0123H, 0456H, 0789H, 0abcH, 0defH, 0135H, 0246H, 0369H
dw 0,0,0,0,0
start: mov ax,cs
mov ss,ax
mov sp,26
mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: push [bx]
pop cs:[bx]
add bx,2
loop s
mov ax,4c00H
int 21H
codesg ends
end start
debug可以完成功能。
但是我有一个疑问:
为什么要用5个字单元做栈空间??
用4个字作栈空间,程序改为:
……
dw 0,0,0,0
……
mov sp,24
……
我试了也完全可以实现功能。
那现在就又有一个问题:我认为程序中只需要一个字的栈空间作中转就可以实现数据的互换,为什么要设4个字的栈空间呢?
但是如果我把程序改为
……
dw 0,0,0
……
mov sp,22
……
(用三个字作栈空间)
得到的结果是最后的一个字的内容没有改变。
改为:
……
dw 0,0
……
mov sp,20
……
(用两个字作栈空间)
得到的结果是最后的两个字的内容没有改变。
……
dw 0
……
mov sp,18
……
(用一个字作栈空间)
得到的结果是最后的三个字的内容没有改变。
你可以试试。;)
为什么????
多谢!!
...全文
相关推荐
汇编入门权威教程(211工程院校使用)基础而详细
学习嵌入式必备的资源,不仅是嵌入式,很多信息类工程师深入后基本需要全面学习汇编。初级工程师入门,中级工程师查询,高级工程师升华用的资料
初级汇编.txt 初级汇编.txt 初级汇编.txt
初级汇编.txt 初级汇编.txt 初级汇编.txt 初级汇编.txt 初级汇编.txt 初级汇编.txt
windows下协程实现(fiber、汇编、非共享栈、共享栈)
windows下协程实现(fiber、汇编、非共享栈、共享栈)
初级反汇编视频教程【10集】
资源名称:初级反汇编视频教程【10集】资源目录:【】初级反汇编视频教程全10集-第10节汇编反C语言练习【】初级反汇编视频教程全10集-第1节准备工作【】初级反汇编视频教程全10集-第2节常用汇编指令【】初级反汇编视频教程全10集-第3节C函数的参数传递过程【】初级反汇编视频教程全10集-第4节C语言的循环反汇编【】初级反汇编视频教程全1 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
初级汇编语言
初级汇编语言初级汇编语言


