2342|3

59

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于内存改变的问题 [复制链接]

“利用栈,将程序中定义的数据逆序存放”我编写程序如下:
assume cs: pro6_2

pro6_2 segment
    ; 需要逆序存储的数据
    dw 0123H, 0456H, 0789H, 0abch, 0defh, 0fedh, 0cbah, 0987h
   
    ; 程序执行的入口
    start:
        mov bx, 0000H
        mov ax, cs
        mov ss, ax
        mov ds, ax
        mov sp, 000EH
        
        mov cx, 4
        s:
            pop ax
            push [bx]
              mov [bx], ax
            add bx, 2
            sub sp, 2
        loop s
        
        mov ax, 4c00H
        int 21H
pro6_2 ends

end start

但是程序的执行结果却不是预期示范的那样,通过debug追踪发现,当程序执行完“sub sp, 2”时,内存中原先的值竟然发生了改变,如下:

AX=0987  BX=0002  CX=0003  DX=0000  SP=000E  BP=0000  SI=0000  DI=0000
DS=1429  ES=1419  SS=1429  CS=1429  IP=0027   NV UP EI PL NZ NA PO NC
1429:0027 83EC02        SUB     SP,+02
-d 1429:0 f
1429:0000  87 09 56 04 87 09 00 00-27 00 29 14 13 0E 23 01   ..V.....'.)...#.
-t

AX=0987  BX=0002  CX=0003  DX=0000  SP=000C  BP=0000  SI=0000  DI=0000
DS=1429  ES=1419  SS=1429  CS=1429  IP=002A   NV UP EI PL NZ NA PE NC
1429:002A E2F3          LOOP    001F
-d 1429:0 f
1429:0000  87 09 87 09 00 00 2A 00-29 14 13 0E 02 33 23 01   ......*.)....3#.
是在不明白其中原由,恳请指点!!!

最新回复

等待牛人来答.  详情 回复 发表于 2008-5-1 09:25
点赞 关注

回复
举报

85

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
16位汇编忘完了,做了个32位汇编的,原理应该差不多。

                .386
                .model flat,stdcall
                option casemap:none

        .data

_data        dw        0123H,0456H,0789H,0abch,0defh,0fedh,0cbah,0987h

        .code

start:
        mov                ecx,4
        lea                edi,_data
        mov                esi,edi
        add                esi,0Eh
@@:
        push        word ptr [esi]
        push        word ptr [edi]
        pop                word ptr [esi]
        pop                word ptr [edi]

        add                edi,2
        sub                esi,2

        loop        @B
        ret

end        start
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
只能帮你顶
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

4
 
等待牛人来答.
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表