|
asm求助一下高手!
看到一本书上有如下程序:- assume cs:code,ds:data,ss:stack
- data segment
- db 'word',0
- db 'unix',0
- db 'wind',0
- db 'good',0
- db '00000'
- data ends
- stack segment
- dw 0,0,0,0
- stack ends
- code segment
- start:mov ax,data
- mov ds,ax
- mov bx,0
- mov cx,4
- mov ax,stack
- mov ss,ax
- mov sp,4
- s:mov si,bx
- call capital
- add bx,5
- loop s
- mov ax,4c00h
- int 21h
- capital:push cx
- push si
- mov cl,[si]
- mov ch,0
- jcxz ok
- and byte ptr [si],11011111b
- inc si
- jmp short capital
- ok:pop si
- pop cx
- ret
- code ends
- end start
复制代码
我每次执行到跳转的时候就出现“ntvdm”那个“errror”,是不是压栈出了problem,想搞搞明白!
还有其他就是不明白两个“push“与”pop“从子程序里没拿到外面时是可以执行的,并且是right的,但我在堆栈段定义的是4个“word”空间啊 ,为什么执行到时候ss=0b98,cs=0b99呢,难道一个段最小就是16个字节吗?
[s:41] |
|