鱼C论坛

 找回密码
 立即注册
查看: 2040|回复: 0

sp寄存器改变后,栈会自动被赋值,这是什么原因?

[复制链接]
发表于 2015-10-31 22:11:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
QQ截图20151031220758.png

代码如下:
  1. ;编写code段中代码,用push指令将a段中的前8个字型数据,逆序存储到b段中。
  2. assume cs:code, ds:a, ss:b

  3. a segment
  4.         dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh        ;16个
  5. a ends

  6. b segment
  7.         dw 0,0,0,0,0,0,0,0  ;8个
  8. b ends

  9. code segment
  10. start:
  11.         ;b
  12.         mov ax,b
  13.         mov ss,ax
  14.         mov ax,16
  15.         mov sp,ax
  16.         ;a
  17.         mov ax,a
  18.         mov ds,ax
  19.        
  20.         ;a=>b
  21.         mov bx,0
  22.         mov cx,7
  23. L1:
  24.         mov dx,[bx]
  25.         push dx
  26.         mov ax,0
  27.         add bx,2
  28.         loop L1
  29.        
  30.         mov ax,4C00H
  31.         int 21H
  32. code ends
  33. end start
复制代码


我还发现,加入ss指向a段,那么sp赋值后,a段就会被自动赋值,ss指哪,哪就变
我这里是用vbox的虚拟机执行的,因为我的真机是win7,不知道跟这个有没有原因
如果你们那里的xp执行这代码没这个问题的话,那就是我这个xp的问题了


还有,上图有显示,我发现他
mov ss,ax
之后,就直接执行了
mov ax,b
不知道跟这个也有没有关系
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-1 16:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表