| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
- assume cs:code
 
  
- a segment
 
 -     dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
 
 - a ends
 
  
- b segment
 
 -     dw 0,0,0,0,0,0,0,0
 
 - b ends
 
  
- code segment
 
  
- start:
 
 -     mov ax,a
 
 -     mov ds,ax
 
 -     ;源数据地址
 
  
-     add ax,1
 
 -     mov ss,ax
 
 -     mov ax,16
 
 -     add sp,ax
 
 -     ; 构造栈
 
  
-     mov ax,b
 
 -     mov es,ax
 
 -     ;目标数据地址
 
  
-     mov bx,0
 
 -     mov cx,8
 
  
- sl: push ds:[bx]
 
 -     inc bx
 
 -     inc bx
 
 -     loop sl
 
 -     ; 存入栈
 
  
-     mov bx,0
 
 -     mov cx,8
 
  
- ddl:pop es:[bx]
 
 -     inc bx
 
 -     inc bx
 
 -     loop ddl
 
 -     ; 出栈
 
  
-     mov ax,4c00h
 
 -     int 21h
 
  
- code ends
 
 - end start
 
  
  复制代码 
调试半天才搞定,一点注意 
sp的计算要从0计算,16个字节数据最后一个数据是第15字节所以要设sp=16 
有个疑问  
给ss sp赋值后 栈中数据会改变,不是不应该改变么? 
 |   
 
 
 
 |