| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
- assume cs:code
 
  
- a segment
 
  
-     db 1,2,3,4,5,6,7,8
 
  
- a ends
 
  
- b segment
 
  
-     db 1,2,3,4,5,6,7,8
 
  
- b ends
 
  
- c segment
 
  
-     db 0,0,0,0,0,0,0,0
 
  
- c ends
 
  
- code segment
 
  
- start:  mov ax,a
 
 -         mov ds,ax
 
  
-         mov ax,b
 
 -         mov es,ax
 
  
-         mov ax,c
 
 -         mov ss,ax
 
 -         mov sp,8
 
 -         mov bx,0
 
 -         mov cx,8
 
 -         mov ax,0
 
  
- ocean:  add al,[bx]
 
 -         add al,es:[bx]
 
 -         
 
 -         mov ss:[bx],al
 
 -         mov al,0
 
 -         inc bx
 
 -         loop ocean
 
  
-         mov ax,4c00h
 
 -         int 21h
 
  
- code ends
 
  
- end start 
 
  
 
  复制代码 
 
问一下大家,这个我用的一个循环,顺便把sp也赋值了,因为没有用到栈,所以sp不应该对结果没有影响嘛?但是当我跑结果的时候发现,sp的值居然对结果有影响,我一开始给的sp是8,结果c段如下显然不对 
 
02 04 28 00 b3 04 93 01 00 00 00 00 00 00 00 00 
 
当我把sp设为16(十进制),或者是默认sp为0时,结果是对的,结果如下 
02 04 06 08 0a 0c 0e 10 00 00 00 00 00 00 00 00 
 
我随意又改了下sp的值为14(十进制),发现c段如下 
02 04 06 08 0a 0c 0e 10 28 00 b3 04 93 01 00 00 
 
有没有大佬知道,这是为什么呢? |   
 
 
 
 |