|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:code,ds:data,ss:stack
data segment
;0123456789ABCDEF
db 'welcome to masm!'
db 42h
data ends
stack segment
dw 16 dup(0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,40h
mov ax,0b800h
mov es,ax
mov bx,03c0h
mov ax,0 为什么这个语句在DEBUG的时候,会变成mov ax,b800 ??????,,在DEBUG中按U查看时也是正常,就是在T执行的时候,会变,这是为什么???
mov di,040h
mov si,0
mov cx,3
本帖最后由 jackz007 于 2024-1-7 23:56 编辑
liuming1978 发表于 2024-1-7 23:13
mov bx,03c0h
如果说问题,最有可能是在堆栈,你定义的容量只有 20H 字节,却为 SP 赋值 40 H,这样,堆栈的上部 20 H 字节的空间实际上使用的是 CODE 段,也就是说,堆栈活动会直接破坏代码段开头的 20H 字节,而且,越靠近栈顶越危险。为了避免这个问题,可以考虑把堆栈扩大为 40 H,以便与堆栈初始化的代码相匹配。
- stack segment
- dw 20h dup(0)
- stack ends
复制代码
|
|