yuinitiatec++ 发表于 2014-3-1 20:56:17

奇妙的栈使用!!为何会这样???

assume cs:code
a segment
db '1.advantage   '
db '2.dislike       '
db '3.common      '
a ends

code segment
start:
      mov ax,a
   mov ds,ax
   mov bx,0
   mov cx,3
   

L:    push cx
   mov cx,4
   mov si,0
S:mov al,
   and al,11011111b
   mov ,al
   inc si
   loop S
   
   add bx,16
   pop cx
   loop L
   
   mov ax,4c00h
   int 21h
code ends
end start
;实现前四个字母大写;
;利用栈暂存cx的值;
;为什么没有定义栈段,还是可以使用栈呢?而且照样运行正确???

猫咪喵喵 发表于 2014-3-1 20:56:18

本帖最后由 猫咪喵喵 于 2014-3-8 11:56 编辑

亲你的栈的值覆盖了code段
因为覆盖的是已经执行过的代码
因此没有影响到执行的

-------------------------------
好吧 没仔细看 你把栈段指向了存数据的地方
看你的代码应该只会影响到第一个打印的字符里的1吧

oggplay 发表于 2014-3-1 21:13:53

ESP始终是存在的,为什么不能用呢??
页: [1]
查看完整版本: 奇妙的栈使用!!为何会这样???