分析一个奇怪的汇编程序 太奇怪了!
assume cs:code,ds:data,ss:stackdata segment
dw 8 dup (0)
data ends
stack segment
db 'noitasrevnoc'
stack ends
code segment
s:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,0
mov si,0
mov cx,12
s0:
pop ax
mov ds:,ax
and ah,11011111b
and al,11011111b
add si,2
loop s0
mov ax,4c00h
int 21h
code ends
end s
这是为什么呢?不能但不调试到最后??甲鱼哥哥??? 能够调试到最后才奇怪,你把sp赋值为0,还怎么出栈啊,哪有东西给你出啊。 无限幻想 发表于 2012-11-8 18:53 static/image/common/back.gif
能够调试到最后才奇怪,你把sp赋值为0,还怎么出栈啊,哪有东西给你出啊。
pop (sp=sp+2)啊...0+2=2...你自己调用一下 看看sp的值 执行第一次是从0变到2...这不是push...
assume cs:code,ds:data,ss:stack
data segment
dw 8 dup (0)
data ends
stack segment
db 'noitasrevnoc'
stack ends
code segment
s:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,0
mov si,0
mov cx,12
s0:
pop ax
and ah,11011111b
and al,11011111b
mov ds:,ax
add si,2
loop s0
mov ax,4c00h
int 21h
code ends
end s
你自己试试看...不是这个问题... 循环12次,,不对,你是字操作,6次就完了…… the_sun、、 发表于 2012-11-8 21:49 static/image/common/back.gif
pop (sp=sp+2)啊...0+2=2...你自己调用一下 看看sp的值 执行第一次是从0变到2...这不是push...
assume c ...
你一楼的代码是错的,,现在除了循环次数外,,都是对的,,并且即使设为12,,也能运行过,单步过,, the_sun、、 发表于 2012-11-8 21:49 static/image/common/back.gif
pop (sp=sp+2)啊...0+2=2...你自己调用一下 看看sp的值 执行第一次是从0变到2...这不是push...
assume c ...
其实,就算是push,,也能运行,sp会一直循环……当然,,程序本身就错完了 张国祥 发表于 2012-11-9 01:23 static/image/common/back.gif
其实,就算是push,,也能运行,sp会一直循环……当然,,程序本身就错完了
谢谢啊,你是好人:kiss: the_sun、、 发表于 2013-1-19 17:31 static/image/common/back.gif
谢谢啊,你是好人
{:5_109:}呵呵,共同学习,共同进步
页:
[1]