这个汇编程序怎么在DEBUG下无法调试通过,很简单,没分了,没办法,帮帮忙...
发布网友
发布时间:2024-02-15 11:51
我来回答
共3个回答
热心网友
时间:2024-03-20 09:32
楼上的说的不对。把开始3句话去掉
mov ax,cs
mov ss,ax
mov sp,08h
就行了。
老大,你的堆栈用得简直是太无语了!你的堆栈设置会覆盖代码段中数据定义部分,另外程序源代码中也没有明确用伪指令定义堆栈段,只是在指令直接初始化SS段寄存器和SP栈顶,当然会出现莫名其妙的错误。这个题目用于期末考试程序改错很有意思哈。
你新加的程序和以前的问题是一样的。为什么“运行正常”?是因为你第二行定义了那么多0,占据了高地址的空间,这些0你根本就不用的。堆栈向下生长,在你PUSH前八个字的时候根本就不会出问题。你把那第二行的0去掉就会出问题了。还是那句话,如果要用堆栈,就用segment stack伪指令专门定义一个堆栈段,再在assume里面关联一下。只是在指令直接初始化SS段寄存器和SP栈顶,当然会出现莫名其妙的错误。
热心网友
时间:2024-03-20 09:27
assume cs:code
code segment
dw 1111h,2222h
dw 3333h,4444h
start: mov ax,cs
mov ss,ax
mov sp,08h
mov cx,2
mov bx,0
s: push cs:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start
这样就可以了!
热心网友
时间:2024-03-20 09:28
CS:0-CS:00ff是debug占用数据区,应用程序不能占用,否则就会出现你所说的情况,甚至死在debug中。