汇编语言中一个栈的最小大小
今天做了个汇编的题目,要求把数据段内的4个字符串从小写改成大写,用到了内外两个循环,进行行和每行字符串内每个字符的遍历更新,因此在内循环的时候要将cx的值压栈,代码如下:
assume cs:code,ds:data
data segment
db 'ibm '
db 'dec '
db 'dos '
db 'vax '
data ends
stack segment
dw 0000H; 书上的例子中时给了栈8个字的大小
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov cx,0004H
mov bx,0000H
mov ax,stack
mov ss,ax
mov sp,0002H
S:
push cx 在第一次压栈的时候程序就终止了,并且SP也没有-2,变成0000H
mov cx,0003H
mov si,0000H
S1:
mov al, [bx+si]
and al, 11011111B
mov [bx+si], al
inc si
loop S1
add bx,0010H
pop cx
loop S
mov ax,4C00H
int 21H
code ends
end start
请问这是什么原因呢,是不是堆栈段对大小是有要求的?
assume cs:code,ds:data
data segment
db 'ibm '
db 'dec '
db 'dos '
db 'vax '
data ends
stack segment
dw 0000H; 书上的例子中时给了栈8个字的大小
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov cx,0004H
mov bx,0000H
mov ax,stack
mov ss,ax
mov sp,0002H
S:
push cx 在第一次压栈的时候程序就终止了,并且SP也没有-2,变成0000H
mov cx,0003H
mov si,0000H
S1:
mov al, [bx+si]
and al, 11011111B
mov [bx+si], al
inc si
loop S1
add bx,0010H
pop cx
loop S
mov ax,4C00H
int 21H
code ends
end start
请问这是什么原因呢,是不是堆栈段对大小是有要求的?
...全文
相关推荐
汇编语言_答案_王爽_第二版
- **(2)** 给出了具体的数值范围,例如`1024,0,1023`表示一个字节所能表示的最大、最小以及非零最小值。- **(3)** 进一步扩展到更大的单位,例如千字节与兆字节之间的换算。
48、汇编语言中的栈操作与C语言调用
本文深入探讨了汇编语言中的栈操作基础及其与C语言调用的关联。内容涵盖了栈对齐、数据寻址、参数处理以及与C语言的交互,详细解析了GNU工具链中gcc的工作流程及其在汇编和C编程中的核心作用。适合希望在Linux环境下提升汇编与C语言结合编程能力的开发者。
48、汇编语言中的栈操作与C语言调用指南
本文介绍了汇编语言中的栈操作基础,包括栈对齐、栈上数据寻址以及参数访问方法,并详细说明了如何在Linux环境下通过汇编程序访问命令行参数。此外,还探讨了为何学习C语言对汇编开发至关重要,解析了GNU C编译器(gcc)的工作原理及其在构建C程序中的多步骤流程,帮助开发者更好地理解底层机制与高级语言的结合使用。
汇编语言程序设计试卷
**汇编与链接**:汇编语言源程序首先需要通过汇编程序(Assembler)转换成机器码,然后通过链接程序(Linker)将多个目标文件合并成一个可执行文件。7.
王爽汇编语言检测点答案
- **解决**:增加栈空间大小,或者优化代码减少栈的使用。**3.9 PUSH、POP指令**- **PUSH**:将数据压入栈中。- **POP**:从栈中弹出数据。


