153648298 发表于 2012-6-25 19:13:16

王爽汇编实验6

本帖最后由 153648298 于 2012-6-25 19:15 编辑

assume cs:code,ds:data,ss:stack
data segment
   db '1. display      '
   db '2. brows      '
   db '3. replace      '
   db '4. modify       '
data ends
stack segment
      dw 0
stack ends
code segment
start:mov ax,data
      mov ds,ax
      mov ax,stack
      mov ss,ax
      mov sp,2
      mov bx,3
      mov cx,4
   s0:push cx
      mov si,0
      mov cx,3
   
      
   s:mov al,
   and al,11011111b
   mov ,al
   inc si
   loop s
   pop cx
   add bx,16
   loop s0

   mov ax,4c00h
   int 21h
code ends
end start

鱼哥求租你了,为什么这个程序我单步运行完mov bx 0003的时候出现了program terminalted normally

we6540 发表于 2012-6-25 19:40:02

本帖最后由 we6540 于 2012-6-25 19:45 编辑

把下面的这段去掉“mov sp,2”或把2改大一点就可以运行了!

153648298 发表于 2012-6-25 20:11:05

we6540 发表于 2012-6-25 19:40 static/image/common/back.gif
把下面的这段去掉“mov sp,2”或把2改大一点就可以运行了!

:sleepy:我晕,我就是像知道为什么sp=2就不能运行。我也知道改大一点

子夜 发表于 2012-6-25 20:55:11

一般空栈都把栈指针SP指向栈低。对于栈内部操作目前不清楚,比如数据压栈后,出栈,那么栈中数据应该还是和原来一样啊。但DEBUG查看就是不一样的。不明白!以后在看栈里面到底怎么操作吧。现在定义空栈就把栈指针指向栈底吧!
页: [1]
查看完整版本: 王爽汇编实验6