鱼C论坛

 找回密码
 立即注册
查看: 3252|回复: 8

实验五 第6题,看着没有问题,运行却有问题,请指教。

[复制链接]
发表于 2011-7-20 17:25:18 | 显示全部楼层 |阅读模式

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

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

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
   
        mov ax,b
        mov ss,ax
        mov sp,30

        mov bx,0
        mov cx,4
     s:push [bx]
        add bx,2
        loop s
   
        mov ax,4c00H
        int 21H
   
code ends
end start以上就是我写的代码,通过MASM编译器编译和连接成.EXE文件后在DEBUG里面运行。动行完mov ss,ax
这一句后,下一句mov sp,30自动完成的,正常,再下一句,应该是mov bx,0呀,在DEBUG里面却是add ax,0000,我晕,有图为证。请小甲鱼老师或童鞋们斧正。

                               
登录/注册后可看大图


                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-20 20:21:50 | 显示全部楼层
本帖最后由 lsgo 于 2011-7-21 00:17 编辑

按楼主的代码码了下  运行了下没出现与其所问的相同错误  但是在循环6次后又出现错误 如图所示 2.png
弄了好久不知原因所在  所以在这就留于楼下牛人解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-20 20:51:50 | 显示全部楼层
那可能就是个别机子的差异了吧。也许是代码在修改内存单元数据时,触到了机子不可告人的秘密,可以报错。嘿嘿,反正我也说不清楚。怪事。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-21 15:02:45 | 显示全部楼层
本帖最后由 zzxxcc89 于 2011-7-21 15:24 编辑

试了一下呵呵,和楼主的情况一样。可能是系统的保护原因吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-22 14:33:15 | 显示全部楼层
b段的0太少了,至少要15个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-23 01:43:40 | 显示全部楼层
b段,dw 0,0,0,0,0,0,0,0 就有八个字,16个字节了呀,还少吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-23 19:28:28 | 显示全部楼层
我晕,终于搞明白了。优化的程序如下:
编写code段中的代码,用PUSH指令将a段中的前8个字型数据,逆序存储到b段中。
assume cs:code,ss:b,ds:a
a segment
   dw 1,2,3,4,5,6,7,8,9,0aH,0bH,0cH,0dH,0eH,0fH,0ffH
a ends

b segment
   db '                '
b ends

code segment
start:mov ax,a
      mov ds,ax
   
      mov dx,b
      mov ss,dx
      mov sp,10H

      mov bx,0
      mov cx,8
    s:mov ax,[bx]
      push ax
      add bx,2
      loop s
   
      mov ax,4c00H
      int 21H
   
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-24 09:56:40 | 显示全部楼层
mov ax,b
        mov ss,ax
        mov sp,30

ss的起始直址是b,而ss段只有16个字节,所以sp应该是指向16或者是10H.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-26 11:38:43 | 显示全部楼层
呵呵,正确。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-19 16:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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