本帖最后由 jackz007 于 2019-5-1 11:38 编辑
你的代码编译不通,我把它改好了stack segment stack
dw 8 dup(0)
stack ends
data segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
data ends
assume cs:code , ds:data , ss:stack
code segment
start: mov ax,data
mov ds,ax
mov bx,0
mov cx,4
s1: push cx
mov di,0
mov cx,4
s2: mov al,byte ptr ds:[3+di+bx]
and al,11011111b
mov byte ptr ds:[3+di+bx],al
inc di
loop s2
add bx,10h
pop cx
loop s1
mov ax,4c00h
int 21h
code ends
end start
这才是程序入口的原始堆栈,可以看到,16 个字节全是 00。
关注一下我对堆栈段定义方式的改变,因为这个改变,把你 start:代码开始处所有与堆栈相关的寄存器赋值,就是下面的 3 条语句,全部省略了,通过上面的截图可以证明,这些寄存器的值都是正确的。 mov ax,stack
mov ss,ax
mov sp,16
|